| Index: test/common/wasm/wasm-module-runner.cc
|
| diff --git a/test/common/wasm/wasm-module-runner.cc b/test/common/wasm/wasm-module-runner.cc
|
| index 809425bfe3de4570099fd6943f41c6e29f84b892..15c3ef433f48ff9d1604c058b31a2aa6da0e4d64 100644
|
| --- a/test/common/wasm/wasm-module-runner.cc
|
| +++ b/test/common/wasm/wasm-module-runner.cc
|
| @@ -13,7 +13,6 @@
|
| #include "src/wasm/wasm-js.h"
|
| #include "src/wasm/wasm-module.h"
|
| #include "src/wasm/wasm-result.h"
|
| -#include "src/zone/zone.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -57,7 +56,6 @@ const Handle<JSObject> InstantiateModuleForTesting(Isolate* isolate,
|
| if (module->export_table.size() == 0) {
|
| thrower->Error("Not supported: module has no exports.");
|
| }
|
| -
|
| if (thrower->error()) return Handle<JSObject>::null();
|
|
|
| // Although we decoded the module for some pre-validation, run the bytes
|
| @@ -65,7 +63,10 @@ const Handle<JSObject> InstantiateModuleForTesting(Isolate* isolate,
|
| MaybeHandle<JSObject> module_object = CreateModuleObjectFromBytes(
|
| isolate, module->module_start, module->module_end, thrower,
|
| ModuleOrigin::kWasmOrigin);
|
| - if (module_object.is_null()) return Handle<JSObject>::null();
|
| + if (module_object.is_null()) {
|
| + thrower->Error("Module pre-validation failed.");
|
| + return Handle<JSObject>::null();
|
| + }
|
| MaybeHandle<JSObject> maybe_instance = WasmModule::Instantiate(
|
| isolate, thrower, module_object.ToHandleChecked(),
|
| Handle<JSReceiver>::null(), Handle<JSArrayBuffer>::null());
|
| @@ -76,26 +77,40 @@ const Handle<JSObject> InstantiateModuleForTesting(Isolate* isolate,
|
| return instance;
|
| }
|
|
|
| +const Handle<JSObject> CompileInstantiateWasmModuleForTesting(
|
| + Isolate* isolate, Zone* zone, const byte* module_start,
|
| + const byte* module_end, ModuleOrigin origin) {
|
| + ErrorThrower thrower(isolate, "CompileInstantiateWasmModule");
|
| + std::unique_ptr<const WasmModule> module(DecodeWasmModuleForTesting(
|
| + isolate, zone, &thrower, module_start, module_end, origin));
|
| +
|
| + if (module == nullptr) {
|
| + thrower.Error("Wasm module decode failed");
|
| + return Handle<JSObject>::null();
|
| + }
|
| + return InstantiateModuleForTesting(isolate, &thrower, module.get());
|
| +}
|
| +
|
| +int32_t RunWasmModuleForTesting(Isolate* isolate, Handle<JSObject> instance,
|
| + int argc, Handle<Object> argv[],
|
| + ModuleOrigin origin) {
|
| + ErrorThrower thrower(isolate, "RunWasmModule");
|
| + const char* f_name = origin == ModuleOrigin::kAsmJsOrigin ? "caller" : "main";
|
| + return CallWasmFunctionForTesting(isolate, instance, &thrower, f_name, argc,
|
| + argv, origin);
|
| +}
|
| +
|
| int32_t CompileAndRunWasmModule(Isolate* isolate, const byte* module_start,
|
| const byte* module_end, ModuleOrigin origin) {
|
| HandleScope scope(isolate);
|
| Zone zone(isolate->allocator());
|
|
|
| - ErrorThrower thrower(isolate, "CompileAndRunWasmModule");
|
| - std::unique_ptr<const WasmModule> module(DecodeWasmModuleForTesting(
|
| - isolate, &zone, &thrower, module_start, module_end, origin));
|
| -
|
| - if (module == nullptr) {
|
| - return -1;
|
| - }
|
| - Handle<JSObject> instance =
|
| - InstantiateModuleForTesting(isolate, &thrower, module.get());
|
| + Handle<JSObject> instance = CompileInstantiateWasmModuleForTesting(
|
| + isolate, &zone, module_start, module_end, origin);
|
| if (instance.is_null()) {
|
| return -1;
|
| }
|
| - const char* f_name = origin == ModuleOrigin::kAsmJsOrigin ? "caller" : "main";
|
| - return CallWasmFunctionForTesting(isolate, instance, &thrower, f_name, 0,
|
| - nullptr, origin);
|
| + return RunWasmModuleForTesting(isolate, instance, 0, nullptr, origin);
|
| }
|
|
|
| int32_t InterpretWasmModule(Isolate* isolate, ErrorThrower* thrower,
|
|
|