Chromium Code Reviews| Index: src/isolate.cc |
| diff --git a/src/isolate.cc b/src/isolate.cc |
| index 1b031f8a937559306d048d616e59f9955170ce2e..2b0fa6efa7d165182384fe5ed079a81202ed0b47 100644 |
| --- a/src/isolate.cc |
| +++ b/src/isolate.cc |
| @@ -2522,21 +2522,29 @@ ISOLATE_INIT_ARRAY_LIST(ISOLATE_FIELD_OFFSET) |
| #endif |
| +Handle<JSObject> Isolate::SetUpSubregistry(Handle<JSObject> registry, |
| + Handle<Map> map, const char* cname) { |
| + Handle<String> name = factory()->InternalizeUtf8String(cname); |
| + Handle<JSObject> obj = factory()->NewJSObjectFromMap(map); |
| + JSObject::NormalizeProperties(obj, KEEP_INOBJECT_PROPERTIES, 8, |
|
Toon Verwaest
2015/05/26 09:06:26
Why do you want to keep inobject properties?
Erik Corry Chromium.org
2015/05/26 09:51:32
Done.
|
| + "SetupSymbolRegistry"); |
| + JSObject::SetProperty(registry, name, obj, STRICT).Assert(); |
|
Toon Verwaest
2015/05/26 09:06:26
AddProperty
Erik Corry Chromium.org
2015/05/26 09:51:32
Done.
|
| + return obj; |
| +} |
| + |
| + |
| Handle<JSObject> Isolate::GetSymbolRegistry() { |
| if (heap()->symbol_registry()->IsSmi()) { |
| Handle<Map> map = factory()->NewMap(JS_OBJECT_TYPE, JSObject::kHeaderSize); |
| Handle<JSObject> registry = factory()->NewJSObjectFromMap(map); |
| heap()->set_symbol_registry(*registry); |
| - static const char* nested[] = {"for", "for_api", "keyFor", "private_api", |
| - "private_intern"}; |
| - for (unsigned i = 0; i < arraysize(nested); ++i) { |
| - Handle<String> name = factory()->InternalizeUtf8String(nested[i]); |
| - Handle<JSObject> obj = factory()->NewJSObjectFromMap(map); |
| - JSObject::NormalizeProperties(obj, KEEP_INOBJECT_PROPERTIES, 8, |
| - "SetupSymbolRegistry"); |
| - JSObject::SetProperty(registry, name, obj, STRICT).Assert(); |
| - } |
| + SetUpSubregistry(registry, map, "for"); |
| + SetUpSubregistry(registry, map, "for_api"); |
| + SetUpSubregistry(registry, map, "keyFor"); |
| + SetUpSubregistry(registry, map, "private_api"); |
| + heap()->AddPrivateGlobalSymbols( |
| + SetUpSubregistry(registry, map, "private_intern")); |
| } |
| return Handle<JSObject>::cast(factory()->symbol_registry()); |
| } |