From: rossberg@chromium.org Date: Thu, 20 Mar 2014 12:56:41 +0000 (+0000) Subject: Revert "Implement ES6 symbol registry and predefined symbols" X-Git-Tag: upstream/4.7.83~10128 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1088fbd1e70c53b2754fd43c14280037a5d069f5;p=platform%2Fupstream%2Fv8.git Revert "Implement ES6 symbol registry and predefined symbols" TBR=yangguo@chromium.org BUG= Review URL: https://codereview.chromium.org/204353004 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20121 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- diff --git a/include/v8.h b/include/v8.h index 7a153b0..126a6f7 100644 --- a/include/v8.h +++ b/include/v8.h @@ -5552,7 +5552,7 @@ class Internals { static const int kNullValueRootIndex = 7; static const int kTrueValueRootIndex = 8; static const int kFalseValueRootIndex = 9; - static const int kEmptyStringRootIndex = 145; + static const int kEmptyStringRootIndex = 144; static const int kNodeClassIdOffset = 1 * kApiPointerSize; static const int kNodeFlagsOffset = 1 * kApiPointerSize + 3; diff --git a/src/heap.cc b/src/heap.cc index 0691947..e2b83f5 100644 --- a/src/heap.cc +++ b/src/heap.cc @@ -3288,14 +3288,6 @@ bool Heap::CreateInitialObjects() { } set_undefined_cell(Cell::cast(obj)); - // Allocate objects to hold symbol registry. - { MaybeObject* maybe_obj = AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); - if (!maybe_obj->ToObject(&obj)) return false; - maybe_obj = AllocateJSObjectFromMap(Map::cast(obj)); - if (!maybe_obj->ToObject(&obj)) return false; - } - set_symbol_registry(JSObject::cast(obj)); - // Allocate object to hold object observation state. { MaybeObject* maybe_obj = AllocateMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); if (!maybe_obj->ToObject(&obj)) return false; diff --git a/src/heap.h b/src/heap.h index 0446a98..4c280aa 100644 --- a/src/heap.h +++ b/src/heap.h @@ -190,7 +190,6 @@ namespace internal { V(Cell, undefined_cell, UndefineCell) \ V(JSObject, observation_state, ObservationState) \ V(Map, external_map, ExternalMap) \ - V(JSObject, symbol_registry, SymbolRegistry) \ V(Symbol, frozen_symbol, FrozenSymbol) \ V(Symbol, nonexistent_symbol, NonExistentSymbol) \ V(Symbol, elements_transition_symbol, ElementsTransitionSymbol) \ diff --git a/src/messages.js b/src/messages.js index 6abaa4e..e6365a4 100644 --- a/src/messages.js +++ b/src/messages.js @@ -103,7 +103,6 @@ var kMessages = { invalid_argument: ["invalid_argument"], data_view_not_array_buffer: ["First argument to DataView constructor must be an ArrayBuffer"], constructor_not_function: ["Constructor ", "%0", " requires 'new'"], - not_a_symbol: ["%0", " is not a symbol"], not_a_promise: ["%0", " is not a promise"], resolver_not_a_function: ["Promise resolver ", "%0", " is not a function"], promise_cyclic: ["Chaining cycle detected for promise ", "%0"], diff --git a/src/runtime.cc b/src/runtime.cc index b928cd0..00bbdfd 100644 --- a/src/runtime.cc +++ b/src/runtime.cc @@ -636,13 +636,6 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_SymbolDescription) { } -RUNTIME_FUNCTION(MaybeObject*, Runtime_SymbolRegistry) { - SealHandleScope shs(isolate); - ASSERT(args.length() == 0); - return isolate->heap()->symbol_registry(); -} - - RUNTIME_FUNCTION(MaybeObject*, Runtime_SymbolIsPrivate) { SealHandleScope shs(isolate); ASSERT(args.length() == 1); diff --git a/src/runtime.h b/src/runtime.h index 3c8077f..0060639 100644 --- a/src/runtime.h +++ b/src/runtime.h @@ -314,7 +314,6 @@ namespace internal { F(CreatePrivateSymbol, 1, 1) \ F(NewSymbolWrapper, 1, 1) \ F(SymbolDescription, 1, 1) \ - F(SymbolRegistry, 0, 1) \ F(SymbolIsPrivate, 1, 1) \ \ /* Harmony proxies */ \ diff --git a/src/symbol.js b/src/symbol.js index 49f9096..8cb1927 100644 --- a/src/symbol.js +++ b/src/symbol.js @@ -63,46 +63,6 @@ function SymbolValueOf() { } -function GetSymbolRegistry() { - var registry = %SymbolRegistry(); - if (!('internal' in registry)) { - registry.internal = {__proto__: null}; - registry.for = {__proto__: null}; - registry.keyFor = {__proto__: null}; - } - return registry; -} - - -function InternalSymbol(key) { - var registry = GetSymbolRegistry(); - if (!(key in registry.internal)) { - registry.internal[key] = %CreateSymbol(key); - } - return registry.internal[key]; -} - - -function SymbolFor(key) { - key = TO_STRING_INLINE(key); - var registry = GetSymbolRegistry(); - if (!(key in registry.for)) { - var symbol = %CreateSymbol(key); - registry.for[key] = symbol; - registry.keyFor[symbol] = key; - } - return registry.for[key]; -} - - -function SymbolKeyFor(symbol) { - if (!IS_SYMBOL(symbol)) { - throw MakeTypeError("not_a_symbol", [symbol]); - } - return GetSymbolRegistry().keyFor[symbol]; -} - - // ES6 19.1.2.8 function ObjectGetOwnPropertySymbols(obj) { if (!IS_SPEC_OBJECT(obj)) { @@ -118,36 +78,12 @@ function ObjectGetOwnPropertySymbols(obj) { //------------------------------------------------------------------- -var symbolCreate = InternalSymbol("@@create"); -var symbolHasInstance = InternalSymbol("@@hasInstance"); -var symbolIsConcatSpreadable = InternalSymbol("@@isConcatSpreadable"); -var symbolIsRegExp = InternalSymbol("@@isRegExp"); -var symbolIterator = InternalSymbol("@@iterator"); -var symbolToStringTag = InternalSymbol("@@toStringTag"); -var symbolUnscopables = InternalSymbol("@@unscopables"); - - -//------------------------------------------------------------------- - function SetUpSymbol() { %CheckIsBootstrapping(); %SetCode($Symbol, SymbolConstructor); %FunctionSetPrototype($Symbol, new $Object()); - %SetProperty($Symbol, "create", symbolCreate, DONT_ENUM); - %SetProperty($Symbol, "hasInstance", symbolHasInstance, DONT_ENUM); - %SetProperty($Symbol, "isConcatSpreadable", - symbolIsConcatSpreadable, DONT_ENUM); - %SetProperty($Symbol, "isRegExp", symbolIsRegExp, DONT_ENUM); - %SetProperty($Symbol, "iterator", symbolIterator, DONT_ENUM); - %SetProperty($Symbol, "toStringTag", symbolToStringTag, DONT_ENUM); - %SetProperty($Symbol, "unscopables", symbolUnscopables, DONT_ENUM); - InstallFunctions($Symbol, DONT_ENUM, $Array( - "for", SymbolFor, - "keyFor", SymbolKeyFor - )); - %SetProperty($Symbol.prototype, "constructor", $Symbol, DONT_ENUM); InstallFunctions($Symbol.prototype, DONT_ENUM, $Array( "toString", SymbolToString, diff --git a/test/mjsunit/harmony/private.js b/test/mjsunit/harmony/private.js index a14afe0..9c9bf2c 100644 --- a/test/mjsunit/harmony/private.js +++ b/test/mjsunit/harmony/private.js @@ -328,17 +328,3 @@ function TestCachedKeyAfterScavenge() { } } TestCachedKeyAfterScavenge(); - - -function TestGetOwnPropertySymbols() { - var privateSymbol = %CreatePrivateSymbol("private") - var publicSymbol = Symbol() - var publicSymbol2 = Symbol() - var obj = {} - obj[publicSymbol] = 1 - obj[privateSymbol] = 2 - obj[publicSymbol2] = 3 - var syms = Object.getOwnPropertySymbols(obj) - assertEquals(syms, [publicSymbol, publicSymbol2]) -} -TestGetOwnPropertySymbols() diff --git a/test/mjsunit/harmony/symbols.js b/test/mjsunit/harmony/symbols.js index d19aece..26adb74 100644 --- a/test/mjsunit/harmony/symbols.js +++ b/test/mjsunit/harmony/symbols.js @@ -410,42 +410,15 @@ function TestGetOwnPropertySymbolsWithProto() { TestGetOwnPropertySymbolsWithProto() -function TestRegistry() { - assertFalse(Symbol.for("@@create") === Symbol.create) - assertFalse(Symbol.for("@@iterator") === Symbol.iterator) - assertTrue(Symbol.keyFor(Symbol.create) === undefined) - assertTrue(Symbol.keyFor(Symbol.iterator) === undefined) - - var symbol1 = Symbol.for("x1") - var symbol2 = Symbol.for("x2") - assertFalse(symbol1 === symbol2) - - assertSame(symbol1, Symbol.for("x1")) - assertSame(symbol2, Symbol.for("x2")) - assertSame("x1", Symbol.keyFor(symbol1)) - assertSame("x2", Symbol.keyFor(symbol2)) - - assertSame(Symbol.for("1"), Symbol.for(1)) - assertThrows(function() { Symbol.keyFor("bla") }, TypeError) - assertThrows(function() { Symbol.keyFor({}) }, TypeError) - - var realm = Realm.create() - assertFalse(Symbol === Realm.eval(realm, "Symbol")) - assertFalse(Symbol.for === Realm.eval(realm, "Symbol.for")) - assertFalse(Symbol.keyFor === Realm.eval(realm, "Symbol.keyFor")) - assertSame(Symbol.create, Realm.eval(realm, "Symbol.create")) - assertSame(Symbol.iterator, Realm.eval(realm, "Symbol.iterator")) - - assertSame(symbol1, Realm.eval(realm, "Symbol.for")("x1")) - assertSame(symbol1, Realm.eval(realm, "Symbol.for('x1')")) - assertSame("x1", Realm.eval(realm, "Symbol.keyFor")(symbol1)) - Realm.shared = symbol1 - assertSame("x1", Realm.eval(realm, "Symbol.keyFor(Realm.shared)")) - - var symbol3 = Realm.eval(realm, "Symbol.for('x3')") - assertFalse(symbol1 === symbol3) - assertFalse(symbol2 === symbol3) - assertSame(symbol3, Symbol.for("x3")) - assertSame("x3", Symbol.keyFor(symbol3)) +function TestGetOwnPropertySymbolsWithPrivateSymbols() { + var privateSymbol = %CreatePrivateSymbol("private") + var publicSymbol = Symbol() + var publicSymbol2 = Symbol() + var obj = {} + obj[publicSymbol] = 1 + obj[privateSymbol] = 2 + obj[publicSymbol2] = 3 + var syms = Object.getOwnPropertySymbols(obj) + assertEquals(syms, [publicSymbol, publicSymbol2]) } -TestRegistry() +TestGetOwnPropertySymbolsWithPrivateSymbols()