Chromium Code Reviews| Index: src/wasm/wasm-module.cc |
| diff --git a/src/wasm/wasm-module.cc b/src/wasm/wasm-module.cc |
| index 01e361cdccce32cfefb28542428d343a069afed0..245a58dfd0958852f9892c26fc5d2af5b9e2ac2f 100644 |
| --- a/src/wasm/wasm-module.cc |
| +++ b/src/wasm/wasm-module.cc |
| @@ -608,17 +608,10 @@ class CompilationHelper { |
| // and information needed at instantiation time. This object needs to be |
| // serializable. Instantiation may occur off a deserialized version of this |
| // object. |
| - Handle<WasmCompiledModule> compiled_module = |
| - WasmCompiledModule::New(isolate_, shared); |
| - compiled_module->set_num_imported_functions( |
| - module_->num_imported_functions); |
| - compiled_module->set_code_table(code_table); |
| - compiled_module->set_min_mem_pages(module_->min_mem_pages); |
|
ahaas
2017/04/05 11:34:56
Why is it okay to just not set min_mem_pages and m
Mircea Trofin
2017/04/05 19:09:17
Huh.. ya. We probably don't need them. Let me try
|
| - compiled_module->set_max_mem_pages(module_->max_mem_pages); |
| + Handle<WasmCompiledModule> compiled_module = WasmCompiledModule::New( |
| + isolate_, shared, code_table, function_tables, signature_tables); |
| if (function_table_count > 0) { |
| compiled_module->set_function_tables(function_tables); |
| - compiled_module->set_signature_tables(signature_tables); |
| - compiled_module->set_empty_function_tables(function_tables); |
| } |
| // If we created a wasm script, finish it now and make it public to the |
| @@ -1098,6 +1091,9 @@ class InstantiationHelper { |
| // Reuse the compiled module (if no owner), otherwise clone. |
| //-------------------------------------------------------------------------- |
| Handle<FixedArray> code_table; |
| + // We keep around a copy of the old code table, because we'll be replacing |
| + // imports for the new instance, and then we need the old imports to be |
| + // able to relocate. |
| Handle<FixedArray> old_code_table; |
| MaybeHandle<WasmInstanceObject> owner; |
| @@ -1119,11 +1115,6 @@ class InstantiationHelper { |
| } |
| } |
| DCHECK(!original.is_null()); |
| - // Always make a new copy of the code_table, since the old_code_table |
| - // may still have placeholders for imports. |
| - old_code_table = original->code_table(); |
| - code_table = factory->CopyFixedArray(old_code_table); |
| - |
| if (original->has_weak_owning_instance()) { |
| // Clone, but don't insert yet the clone in the instances chain. |
| // We do that last. Since we are holding on to the owner instance, |
| @@ -1131,7 +1122,9 @@ class InstantiationHelper { |
| // won't be mutated by possible finalizer runs. |
| DCHECK(!owner.is_null()); |
| TRACE("Cloning from %d\n", original->instance_id()); |
| + old_code_table = original->code_table(); |
| compiled_module_ = WasmCompiledModule::Clone(isolate_, original); |
| + code_table = compiled_module_->code_table(); |
| // Avoid creating too many handles in the outer scope. |
| HandleScope scope(isolate_); |
| @@ -1169,10 +1162,12 @@ class InstantiationHelper { |
| } else { |
| // There was no owner, so we can reuse the original. |
| compiled_module_ = original; |
| + old_code_table = |
| + factory->CopyFixedArray(compiled_module_->code_table()); |
| + code_table = compiled_module_->code_table(); |
| TRACE("Reusing existing instance %d\n", |
| compiled_module_->instance_id()); |
| } |
| - compiled_module_->set_code_table(code_table); |
| compiled_module_->set_native_context(isolate_->native_context()); |
| } |