Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1171)

Unified Diff: src/wasm/wasm-module.cc

Issue 2404253002: [wasm] Provide better stack traces for asm.js code (Closed)
Patch Set: Rebase & fix paths for windows Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,

Powered by Google App Engine
This is Rietveld 408576698