| Index: src/wasm/wasm-module.cc
|
| diff --git a/src/wasm/wasm-module.cc b/src/wasm/wasm-module.cc
|
| index 3a4ac2dbef552e48cb2562ed785b3c3120a403b5..97b8295b8f2d49b69d401665a7cf94e0256f3cc8 100644
|
| --- a/src/wasm/wasm-module.cc
|
| +++ b/src/wasm/wasm-module.cc
|
| @@ -785,6 +785,8 @@ const char* SectionName(WasmSectionCode code) {
|
| return "Data";
|
| case kNameSectionCode:
|
| return "Name";
|
| + case kAsmOffsetsSectionCode:
|
| + return "AsmOffsets";
|
| default:
|
| return "<unknown>";
|
| }
|
| @@ -2002,6 +2004,27 @@ bool IsWasmObject(Object* object) {
|
| return true;
|
| }
|
|
|
| +bool WasmIsAsm(Object* wasm, Isolate* isolate) {
|
| + if (wasm->IsUndefined(isolate)) return false;
|
| + DCHECK(IsWasmObject(wasm));
|
| + Object* compiled_module =
|
| + JSObject::cast(wasm)->GetInternalField(kWasmCompiledModule);
|
| + return WasmCompiledModule::cast(compiled_module)->has_asm_js_script();
|
| +}
|
| +
|
| +Handle<Script> GetAsmWasmScript(Handle<JSObject> wasm) {
|
| + DCHECK(IsWasmObject(*wasm));
|
| + Object* compiled_module =
|
| + JSObject::cast(*wasm)->GetInternalField(kWasmCompiledModule);
|
| + return WasmCompiledModule::cast(compiled_module)->asm_js_script();
|
| +}
|
| +
|
| +int GetAsmWasmSourcePosition(Handle<JSObject> wasm, int func_index,
|
| + int byte_offset) {
|
| + return WasmDebugInfo::GetAsmJsSourcePosition(GetDebugInfo(wasm), func_index,
|
| + byte_offset);
|
| +}
|
| +
|
| Handle<SeqOneByteString> GetWasmBytes(Handle<JSObject> wasm) {
|
| DCHECK(IsWasmObject(*wasm));
|
| Object* compiled_module = wasm->GetInternalField(kWasmCompiledModule);
|
| @@ -2119,11 +2142,10 @@ Handle<JSObject> CreateCompiledModuleObject(
|
| return module_obj;
|
| }
|
|
|
| -MaybeHandle<JSObject> CreateModuleObjectFromBytes(Isolate* isolate,
|
| - const byte* start,
|
| - const byte* end,
|
| - ErrorThrower* thrower,
|
| - ModuleOrigin origin) {
|
| +// TODO(clemensh): origin can be inferred from asm_js_script; remove it.
|
| +MaybeHandle<JSObject> CreateModuleObjectFromBytes(
|
| + Isolate* isolate, const byte* start, const byte* end, ErrorThrower* thrower,
|
| + ModuleOrigin origin, Handle<Script> asm_js_script) {
|
| MaybeHandle<JSObject> nothing;
|
| Zone zone(isolate->allocator());
|
| ModuleResult result =
|
| @@ -2133,12 +2155,19 @@ MaybeHandle<JSObject> CreateModuleObjectFromBytes(Isolate* isolate,
|
| thrower->Failed("Wasm decoding failed", result);
|
| return nothing;
|
| }
|
| - MaybeHandle<WasmCompiledModule> compiled_module =
|
| + MaybeHandle<WasmCompiledModule> maybe_compiled_module =
|
| decoded_module->CompileFunctions(isolate, thrower);
|
| - if (compiled_module.is_null()) return nothing;
|
| + if (maybe_compiled_module.is_null()) return nothing;
|
| + Handle<WasmCompiledModule> compiled_module =
|
| + maybe_compiled_module.ToHandleChecked();
|
| +
|
| + DCHECK_EQ(origin == kAsmJsOrigin, !asm_js_script.is_null());
|
| + DCHECK(!compiled_module->has_asm_js_script());
|
| + if (origin == kAsmJsOrigin) {
|
| + compiled_module->set_asm_js_script(asm_js_script);
|
| + }
|
|
|
| - return CreateCompiledModuleObject(isolate, compiled_module.ToHandleChecked(),
|
| - origin);
|
| + return CreateCompiledModuleObject(isolate, compiled_module, origin);
|
| }
|
|
|
| bool ValidateModuleBytes(Isolate* isolate, const byte* start, const byte* end,
|
|
|