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

Unified Diff: src/wasm/wasm-js.cc

Issue 2342263002: [wasm] Fix test-run-wasm-module tests in debug mode. (Closed)
Patch Set: Rename Install functions Created 4 years, 3 months 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 | « src/wasm/wasm-js.h ('k') | test/cctest/wasm/test-run-wasm-module.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/wasm/wasm-js.cc
diff --git a/src/wasm/wasm-js.cc b/src/wasm/wasm-js.cc
index ff974cb8cd13d5666318048bee15acf84a087667..4190562694fb55643390db70f7ef551f727bd5d9 100644
--- a/src/wasm/wasm-js.cc
+++ b/src/wasm/wasm-js.cc
@@ -316,45 +316,42 @@ static Handle<JSFunction> InstallFunc(Isolate* isolate, Handle<JSObject> object,
return function;
}
-void WasmJs::SetupIsolateForWasm(Isolate* isolate) {
- InstallWasmFunctionMap(isolate, isolate->native_context());
- InstallWasmModuleSymbol(isolate, isolate->global_object(),
- isolate->native_context());
-}
+void WasmJs::InstallWasmModuleSymbolIfNeeded(Isolate* isolate,
+ Handle<JSGlobalObject> global,
+ Handle<Context> context) {
+ if (!context->get(Context::WASM_MODULE_SYM_INDEX)->IsSymbol() ||
+ !context->get(Context::WASM_INSTANCE_SYM_INDEX)->IsSymbol()) {
+ Factory* factory = isolate->factory();
+ // Create private symbols.
+ Handle<Symbol> module_sym = factory->NewPrivateSymbol();
+ Handle<Symbol> instance_sym = factory->NewPrivateSymbol();
+ context->set_wasm_module_sym(*module_sym);
+ context->set_wasm_instance_sym(*instance_sym);
+
+ // Bind the WebAssembly object.
+ Handle<String> name = v8_str(isolate, "WebAssembly");
+ Handle<JSFunction> cons = factory->NewFunction(name);
+ JSFunction::SetInstancePrototype(
+ cons, Handle<Object>(context->initial_object_prototype(), isolate));
+ cons->shared()->set_instance_class_name(*name);
+ Handle<JSObject> wasm_object = factory->NewJSObject(cons, TENURED);
+ PropertyAttributes attributes = static_cast<PropertyAttributes>(DONT_ENUM);
+ JSObject::AddProperty(global, name, wasm_object, attributes);
-void WasmJs::InstallWasmModuleSymbol(Isolate* isolate,
- Handle<JSGlobalObject> global,
- Handle<Context> context) {
- Factory* factory = isolate->factory();
- // Create private symbols.
- Handle<Symbol> module_sym = factory->NewPrivateSymbol();
- Handle<Symbol> instance_sym = factory->NewPrivateSymbol();
- context->set_wasm_module_sym(*module_sym);
- context->set_wasm_instance_sym(*instance_sym);
-
- // Bind the WebAssembly object.
- Handle<String> name = v8_str(isolate, "WebAssembly");
- Handle<JSFunction> cons = factory->NewFunction(name);
- JSFunction::SetInstancePrototype(
- cons, Handle<Object>(context->initial_object_prototype(), isolate));
- cons->shared()->set_instance_class_name(*name);
- Handle<JSObject> wasm_object = factory->NewJSObject(cons, TENURED);
- PropertyAttributes attributes = static_cast<PropertyAttributes>(DONT_ENUM);
- JSObject::AddProperty(global, name, wasm_object, attributes);
-
- // Install static methods on WebAssembly object.
- InstallFunc(isolate, wasm_object, "compile", WebAssemblyCompile);
- Handle<JSFunction> module_constructor =
- InstallFunc(isolate, wasm_object, "Module", WebAssemblyModule);
- Handle<JSFunction> instance_constructor =
- InstallFunc(isolate, wasm_object, "Instance", WebAssemblyInstance);
- i::Handle<i::Map> map = isolate->factory()->NewMap(
- i::JS_OBJECT_TYPE, i::JSObject::kHeaderSize + i::kPointerSize);
- module_constructor->set_prototype_or_initial_map(*map);
- map->SetConstructor(*module_constructor);
-
- context->set_wasm_module_constructor(*module_constructor);
- context->set_wasm_instance_constructor(*instance_constructor);
+ // Install static methods on WebAssembly object.
+ InstallFunc(isolate, wasm_object, "compile", WebAssemblyCompile);
+ Handle<JSFunction> module_constructor =
+ InstallFunc(isolate, wasm_object, "Module", WebAssemblyModule);
+ Handle<JSFunction> instance_constructor =
+ InstallFunc(isolate, wasm_object, "Instance", WebAssemblyInstance);
+ i::Handle<i::Map> map = isolate->factory()->NewMap(
+ i::JS_OBJECT_TYPE, i::JSObject::kHeaderSize + i::kPointerSize);
+ module_constructor->set_prototype_or_initial_map(*map);
+ map->SetConstructor(*module_constructor);
+
+ context->set_wasm_module_constructor(*module_constructor);
+ context->set_wasm_instance_constructor(*instance_constructor);
+ }
}
void WasmJs::Install(Isolate* isolate, Handle<JSGlobalObject> global) {
@@ -366,7 +363,7 @@ void WasmJs::Install(Isolate* isolate, Handle<JSGlobalObject> global) {
// Setup wasm function map.
Handle<Context> context(global->native_context(), isolate);
- InstallWasmFunctionMap(isolate, context);
+ InstallWasmFunctionMapIfNeeded(isolate, context);
if (!FLAG_expose_wasm) {
return;
@@ -399,10 +396,11 @@ void WasmJs::Install(Isolate* isolate, Handle<JSGlobalObject> global) {
JSObject::AddProperty(wasm_object, name, value, attributes);
}
}
- InstallWasmModuleSymbol(isolate, global, context);
+ InstallWasmModuleSymbolIfNeeded(isolate, global, context);
}
-void WasmJs::InstallWasmFunctionMap(Isolate* isolate, Handle<Context> context) {
+void WasmJs::InstallWasmFunctionMapIfNeeded(Isolate* isolate,
+ Handle<Context> context) {
if (!context->get(Context::WASM_FUNCTION_MAP_INDEX)->IsMap()) {
// TODO(titzer): Move this to bootstrapper.cc??
// TODO(titzer): Also make one for strict mode functions?
« no previous file with comments | « src/wasm/wasm-js.h ('k') | test/cctest/wasm/test-run-wasm-module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698