Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1160)

Unified Diff: src/api.cc

Issue 2551763003: v8::Private::ForApi should be context-independent. (Closed)
Patch Set: fix Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « BUILD.gn ('k') | src/bootstrapper.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/api.cc
diff --git a/src/api.cc b/src/api.cc
index a6a7e92ef222991100bffc7b65868114fd7e8a2e..b28c6b26282639c3dae2455eea273d679fd4ad53 100644
--- a/src/api.cc
+++ b/src/api.cc
@@ -7641,42 +7641,19 @@ Local<Symbol> v8::Symbol::New(Isolate* isolate, Local<String> name) {
}
-static i::Handle<i::Symbol> SymbolFor(i::Isolate* isolate,
- i::Handle<i::String> name,
- i::Handle<i::String> part,
- bool private_symbol) {
- i::Handle<i::JSObject> registry = isolate->GetSymbolRegistry();
- i::Handle<i::JSObject> symbols =
- i::Handle<i::JSObject>::cast(
- i::Object::GetPropertyOrElement(registry, part).ToHandleChecked());
- i::Handle<i::Object> symbol =
- i::Object::GetPropertyOrElement(symbols, name).ToHandleChecked();
- if (!symbol->IsSymbol()) {
- DCHECK(symbol->IsUndefined(isolate));
- if (private_symbol)
- symbol = isolate->factory()->NewPrivateSymbol();
- else
- symbol = isolate->factory()->NewSymbol();
- i::Handle<i::Symbol>::cast(symbol)->set_name(*name);
- i::Object::SetPropertyOrElement(symbols, name, symbol, i::STRICT).Assert();
- }
- return i::Handle<i::Symbol>::cast(symbol);
-}
-
-
Local<Symbol> v8::Symbol::For(Isolate* isolate, Local<String> name) {
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
i::Handle<i::String> i_name = Utils::OpenHandle(*name);
- i::Handle<i::String> part = i_isolate->factory()->for_string();
- return Utils::ToLocal(SymbolFor(i_isolate, i_name, part, false));
+ return Utils::ToLocal(i_isolate->SymbolFor(
+ i::Heap::kPublicSymbolTableRootIndex, i_name, false));
}
Local<Symbol> v8::Symbol::ForApi(Isolate* isolate, Local<String> name) {
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
i::Handle<i::String> i_name = Utils::OpenHandle(*name);
- i::Handle<i::String> part = i_isolate->factory()->for_api_string();
- return Utils::ToLocal(SymbolFor(i_isolate, i_name, part, false));
+ return Utils::ToLocal(
+ i_isolate->SymbolFor(i::Heap::kApiSymbolTableRootIndex, i_name, false));
}
@@ -7718,9 +7695,8 @@ Local<Private> v8::Private::New(Isolate* isolate, Local<String> name) {
Local<Private> v8::Private::ForApi(Isolate* isolate, Local<String> name) {
i::Isolate* i_isolate = reinterpret_cast<i::Isolate*>(isolate);
i::Handle<i::String> i_name = Utils::OpenHandle(*name);
- i::Handle<i::String> part = i_isolate->factory()->private_api_string();
- Local<Symbol> result =
- Utils::ToLocal(SymbolFor(i_isolate, i_name, part, true));
+ Local<Symbol> result = Utils::ToLocal(i_isolate->SymbolFor(
+ i::Heap::kApiPrivateSymbolTableRootIndex, i_name, true));
return v8::Local<Private>(reinterpret_cast<Private*>(*result));
}
« no previous file with comments | « BUILD.gn ('k') | src/bootstrapper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698