Index: src/wasm/wasm-module.cc |
diff --git a/src/wasm/wasm-module.cc b/src/wasm/wasm-module.cc |
index c7c8e635a7364071da82fa44f714ffa32784cec7..19b545f7795c4c1703f116bb1fbfeecf4b5d5c7c 100644 |
--- a/src/wasm/wasm-module.cc |
+++ b/src/wasm/wasm-module.cc |
@@ -853,15 +853,17 @@ std::ostream& wasm::operator<<(std::ostream& os, const WasmFunctionName& name) { |
} |
WasmInstanceObject* wasm::GetOwningWasmInstance(Code* code) { |
- DCHECK(code->kind() == Code::WASM_FUNCTION); |
DisallowHeapAllocation no_gc; |
+ DCHECK(code->kind() == Code::WASM_FUNCTION || |
+ code->kind() == Code::WASM_INTERPRETER_ENTRY); |
FixedArray* deopt_data = code->deoptimization_data(); |
DCHECK_NOT_NULL(deopt_data); |
- DCHECK_EQ(2, deopt_data->length()); |
+ DCHECK_EQ(code->kind() == Code::WASM_INTERPRETER_ENTRY ? 1 : 2, |
+ deopt_data->length()); |
Object* weak_link = deopt_data->get(0); |
DCHECK(weak_link->IsWeakCell()); |
WeakCell* cell = WeakCell::cast(weak_link); |
- if (!cell->value()) return nullptr; |
+ if (cell->cleared()) return nullptr; |
return WasmInstanceObject::cast(cell->value()); |
} |