Index: src/compiler/wasm-compiler.cc |
diff --git a/src/compiler/wasm-compiler.cc b/src/compiler/wasm-compiler.cc |
index 4392896c644b8796b013903a81c22a5804f71e5b..5813bcb4ab285dbed1244f5bfa965abd0d0fe798 100644 |
--- a/src/compiler/wasm-compiler.cc |
+++ b/src/compiler/wasm-compiler.cc |
@@ -1796,11 +1796,13 @@ Node* WasmGraphBuilder::BuildI32DivS(Node* left, Node* right, |
MachineOperatorBuilder* m = jsgraph()->machine(); |
trap_->ZeroCheck32(wasm::kTrapDivByZero, right, position); |
Node* before = *control_; |
- Node* denom_is_m1; |
- Node* denom_is_not_m1; |
- Branch( |
- graph()->NewNode(m->Word32Equal(), right, jsgraph()->Int32Constant(-1)), |
- &denom_is_m1, &denom_is_not_m1); |
+ Node* is_denom_m1 = |
titzer
2016/10/17 13:44:16
Can you add a branch hint to the old method so tha
|
+ graph()->NewNode(m->Word32Equal(), right, jsgraph()->Int32Constant(-1)); |
+ Node* branch = graph()->NewNode( |
+ jsgraph()->common()->Branch(BranchHint::kFalse), is_denom_m1, *control_); |
+ Node* denom_is_m1 = graph()->NewNode(jsgraph()->common()->IfTrue(), branch); |
+ Node* denom_is_not_m1 = |
+ graph()->NewNode(jsgraph()->common()->IfFalse(), branch); |
*control_ = denom_is_m1; |
trap_->TrapIfEq32(wasm::kTrapDivUnrepresentable, left, kMinInt, position); |
if (*control_ != denom_is_m1) { |
@@ -1931,18 +1933,21 @@ Node* WasmGraphBuilder::BuildI32AsmjsRemU(Node* left, Node* right) { |
Node* WasmGraphBuilder::BuildI64DivS(Node* left, Node* right, |
wasm::WasmCodePosition position) { |
- if (jsgraph()->machine()->Is32()) { |
+ MachineOperatorBuilder* m = jsgraph()->machine(); |
+ if (m->Is32()) { |
return BuildDiv64Call( |
left, right, ExternalReference::wasm_int64_div(jsgraph()->isolate()), |
MachineType::Int64(), wasm::kTrapDivByZero, position); |
} |
trap_->ZeroCheck64(wasm::kTrapDivByZero, right, position); |
Node* before = *control_; |
- Node* denom_is_m1; |
- Node* denom_is_not_m1; |
- Branch(graph()->NewNode(jsgraph()->machine()->Word64Equal(), right, |
- jsgraph()->Int64Constant(-1)), |
- &denom_is_m1, &denom_is_not_m1); |
+ Node* is_denom_m1 = |
+ graph()->NewNode(m->Word64Equal(), right, jsgraph()->Int64Constant(-1)); |
+ Node* branch = graph()->NewNode( |
+ jsgraph()->common()->Branch(BranchHint::kFalse), is_denom_m1, *control_); |
+ Node* denom_is_m1 = graph()->NewNode(jsgraph()->common()->IfTrue(), branch); |
+ Node* denom_is_not_m1 = |
+ graph()->NewNode(jsgraph()->common()->IfFalse(), branch); |
*control_ = denom_is_m1; |
trap_->TrapIfEq64(wasm::kTrapDivUnrepresentable, left, |
std::numeric_limits<int64_t>::min(), position); |