ES6 symbols: turn symbols into a proper primitive type
authorrossberg@chromium.org <rossberg@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 22 Mar 2013 16:33:50 +0000 (16:33 +0000)
committerrossberg@chromium.org <rossberg@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 22 Mar 2013 16:33:50 +0000 (16:33 +0000)
commit83d4a41dec58e6dc72dd0b40161d022d75f056e2
treed4e66238b0035f9d4994fdec03b82cc40ae9f1d8
parent51a888ff48c70aefd85d70f0b5a160a72a338fd8
ES6 symbols: turn symbols into a proper primitive type

(qua last week's TC39)

Specifically:
- Install Symbol constructor function on the global object.
- Adjust code generation for typeof.
- Remove IsSymbol built-in, IS_SYMBOL macro now defined using typeof.
- Remove hack that allowed symbols as constructor results, and some other special cases.
- Remove symbol_delegate and GetDelegate function.
- Extend ToBoolean stub to handle symbols.
- Extend ToNumber to return NaN on symbols.
- Poison symbol's toString function, and thereby ToString on symbols.

R=mstarzinger@chromium.org
BUG=v8:2158

Review URL: https://codereview.chromium.org/12957004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14051 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
37 files changed:
include/v8.h
src/api.cc
src/arm/builtins-arm.cc
src/arm/full-codegen-arm.cc
src/arm/lithium-codegen-arm.cc
src/arm/stub-cache-arm.cc
src/bootstrapper.cc
src/code-stubs.cc
src/code-stubs.h
src/contexts.h
src/d8.js
src/heap.h
src/hydrogen-instructions.cc
src/hydrogen.cc
src/ia32/builtins-ia32.cc
src/ia32/code-stubs-ia32.cc
src/ia32/full-codegen-ia32.cc
src/ia32/lithium-codegen-ia32.cc
src/ia32/stub-cache-ia32.cc
src/ic-inl.h
src/ic.cc
src/macros.py
src/messages.js
src/objects.cc
src/objects.h
src/runtime.cc
src/runtime.h
src/runtime.js
src/symbol.js
src/type-info.cc
src/v8globals.h
src/v8natives.js
src/x64/builtins-x64.cc
src/x64/full-codegen-x64.cc
src/x64/lithium-codegen-x64.cc
src/x64/stub-cache-x64.cc
test/mjsunit/harmony/symbols.js