OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <memory> | 5 #include <memory> |
6 | 6 |
7 #include "src/base/atomic-utils.h" | 7 #include "src/base/atomic-utils.h" |
8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 | 9 |
10 #include "src/macro-assembler.h" | 10 #include "src/macro-assembler.h" |
(...skipping 1353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1364 PatchJSWrapper(isolate, startup_fct_clone, new_target); | 1364 PatchJSWrapper(isolate, startup_fct_clone, new_target); |
1365 } | 1365 } |
1366 return clone; | 1366 return clone; |
1367 } | 1367 } |
1368 | 1368 |
1369 // Instantiates a wasm module as a JSObject. | 1369 // Instantiates a wasm module as a JSObject. |
1370 // * allocates a backing store of {mem_size} bytes. | 1370 // * allocates a backing store of {mem_size} bytes. |
1371 // * installs a named property "memory" for that buffer if exported | 1371 // * installs a named property "memory" for that buffer if exported |
1372 // * installs named properties on the object for exported functions | 1372 // * installs named properties on the object for exported functions |
1373 // * compiles wasm code to machine code | 1373 // * compiles wasm code to machine code |
1374 MaybeHandle<JSObject> WasmModule::Instantiate( | 1374 MaybeHandle<JSObject> WasmModule::Instantiate(Isolate* isolate, |
1375 Isolate* isolate, Handle<FixedArray> compiled_module, | 1375 Handle<JSObject> module_object, |
1376 Handle<JSReceiver> ffi, Handle<JSArrayBuffer> memory) { | 1376 Handle<JSReceiver> ffi, |
| 1377 Handle<JSArrayBuffer> memory) { |
1377 HistogramTimerScope wasm_instantiate_module_time_scope( | 1378 HistogramTimerScope wasm_instantiate_module_time_scope( |
1378 isolate->counters()->wasm_instantiate_module_time()); | 1379 isolate->counters()->wasm_instantiate_module_time()); |
1379 ErrorThrower thrower(isolate, "WasmModule::Instantiate()"); | 1380 ErrorThrower thrower(isolate, "WasmModule::Instantiate()"); |
1380 Factory* factory = isolate->factory(); | 1381 Factory* factory = isolate->factory(); |
1381 | 1382 |
| 1383 Handle<FixedArray> compiled_module = |
| 1384 handle(FixedArray::cast(module_object->GetInternalField(0))); |
1382 compiled_module = CloneModuleForInstance(isolate, compiled_module); | 1385 compiled_module = CloneModuleForInstance(isolate, compiled_module); |
1383 | 1386 |
1384 // These fields are compulsory. | 1387 // These fields are compulsory. |
1385 Handle<FixedArray> code_table = | 1388 Handle<FixedArray> code_table = |
1386 compiled_module->GetValueChecked<FixedArray>(isolate, kFunctions); | 1389 compiled_module->GetValueChecked<FixedArray>(isolate, kFunctions); |
1387 | 1390 |
1388 std::vector<Handle<Code>> functions( | 1391 std::vector<Handle<Code>> functions( |
1389 static_cast<size_t>(code_table->length())); | 1392 static_cast<size_t>(code_table->length())); |
1390 for (int i = 0; i < code_table->length(); ++i) { | 1393 for (int i = 0; i < code_table->length(); ++i) { |
1391 functions[static_cast<size_t>(i)] = | 1394 functions[static_cast<size_t>(i)] = |
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1668 MaybeHandle<FixedArray> compiled_module = | 1671 MaybeHandle<FixedArray> compiled_module = |
1669 decoded_module->CompileFunctions(isolate, thrower); | 1672 decoded_module->CompileFunctions(isolate, thrower); |
1670 if (compiled_module.is_null()) return nothing; | 1673 if (compiled_module.is_null()) return nothing; |
1671 | 1674 |
1672 return CreateCompiledModuleObject(isolate, compiled_module.ToHandleChecked(), | 1675 return CreateCompiledModuleObject(isolate, compiled_module.ToHandleChecked(), |
1673 origin); | 1676 origin); |
1674 } | 1677 } |
1675 } // namespace wasm | 1678 } // namespace wasm |
1676 } // namespace internal | 1679 } // namespace internal |
1677 } // namespace v8 | 1680 } // namespace v8 |
OLD | NEW |