| 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 |