| Index: src/compiler/wasm-compiler.cc
|
| diff --git a/src/compiler/wasm-compiler.cc b/src/compiler/wasm-compiler.cc
|
| index dd223bb84177f1b3622b09ec71474b459e5540a6..7caaebc4b54dedd00bcda2932bec6b515f7934ef 100644
|
| --- a/src/compiler/wasm-compiler.cc
|
| +++ b/src/compiler/wasm-compiler.cc
|
| @@ -2376,8 +2376,7 @@ Node* WasmGraphBuilder::ToJS(Node* node, wasm::LocalType type) {
|
| }
|
| }
|
|
|
| -Node* WasmGraphBuilder::BuildJavaScriptToNumber(Node* node, Node* context,
|
| - Node* effect, Node* control) {
|
| +Node* WasmGraphBuilder::BuildJavaScriptToNumber(Node* node, Node* context) {
|
| Callable callable = CodeFactory::ToNumber(jsgraph()->isolate());
|
| CallDescriptor* desc = Linkage::GetStubCallDescriptor(
|
| jsgraph()->isolate(), jsgraph()->zone(), callable.descriptor(), 0,
|
| @@ -2385,7 +2384,7 @@ Node* WasmGraphBuilder::BuildJavaScriptToNumber(Node* node, Node* context,
|
| Node* stub_code = jsgraph()->HeapConstant(callable.code());
|
|
|
| Node* result = graph()->NewNode(jsgraph()->common()->Call(desc), stub_code,
|
| - node, context, effect, control);
|
| + node, context, *effect_, *control_);
|
|
|
| *effect_ = result;
|
|
|
| @@ -2505,8 +2504,10 @@ Node* WasmGraphBuilder::BuildChangeTaggedToFloat64(Node* value) {
|
|
|
| Node* WasmGraphBuilder::FromJS(Node* node, Node* context,
|
| wasm::LocalType type) {
|
| + DCHECK_NE(wasm::kAstStmt, type);
|
| +
|
| // Do a JavaScript ToNumber.
|
| - Node* num = BuildJavaScriptToNumber(node, context, *effect_, *control_);
|
| + Node* num = BuildJavaScriptToNumber(node, context);
|
|
|
| // Change representation.
|
| SimplifiedOperatorBuilder simplified(jsgraph()->zone());
|
| @@ -2531,9 +2532,6 @@ Node* WasmGraphBuilder::FromJS(Node* node, Node* context,
|
| break;
|
| case wasm::kAstF64:
|
| break;
|
| - case wasm::kAstStmt:
|
| - num = jsgraph()->Int32Constant(0);
|
| - break;
|
| default:
|
| UNREACHABLE();
|
| return nullptr;
|
| @@ -2786,14 +2784,16 @@ void WasmGraphBuilder::BuildWasmToJSWrapper(Handle<JSReceiver> target,
|
| call = graph()->NewNode(jsgraph()->common()->Call(desc), pos, args);
|
| }
|
|
|
| + *effect_ = call;
|
| +
|
| // Convert the return value back.
|
| - Node* ret;
|
| - Node* val =
|
| - FromJS(call, HeapConstant(isolate->native_context()),
|
| - sig->return_count() == 0 ? wasm::kAstStmt : sig->GetReturn());
|
| - Node* pop_size = jsgraph()->Int32Constant(0);
|
| - ret = graph()->NewNode(jsgraph()->common()->Return(), pop_size, val, call,
|
| - start);
|
| + Node* i32_zero = jsgraph()->Int32Constant(0);
|
| + Node* val = sig->return_count() == 0
|
| + ? i32_zero
|
| + : FromJS(call, HeapConstant(isolate->native_context()),
|
| + sig->GetReturn());
|
| + Node* ret = graph()->NewNode(jsgraph()->common()->Return(), i32_zero, val,
|
| + *effect_, start);
|
|
|
| MergeControlToEnd(jsgraph(), ret);
|
| }
|
|
|