diff options
author | Michaël Zasso <targos@protonmail.com> | 2018-09-07 17:07:13 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2018-09-07 20:59:13 +0200 |
commit | 586db2414a338e1bf6eaf6e672a3adc7ce309f6a (patch) | |
tree | 139fa972aef648481ddee22a3a85b99707d28df5 /deps/v8/src/compiler/common-operator-reducer.cc | |
parent | 12ed7c94e5160aa6d38e3d2cb2a73dae0a6f9342 (diff) | |
download | node-new-586db2414a338e1bf6eaf6e672a3adc7ce309f6a.tar.gz |
deps: update V8 to 6.9.427.22
PR-URL: https://github.com/nodejs/node/pull/21983
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'deps/v8/src/compiler/common-operator-reducer.cc')
-rw-r--r-- | deps/v8/src/compiler/common-operator-reducer.cc | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/deps/v8/src/compiler/common-operator-reducer.cc b/deps/v8/src/compiler/common-operator-reducer.cc index 388cc66c16..6e50d700b7 100644 --- a/deps/v8/src/compiler/common-operator-reducer.cc +++ b/deps/v8/src/compiler/common-operator-reducer.cc @@ -19,7 +19,7 @@ namespace compiler { namespace { -Decision DecideCondition(Node* const cond) { +Decision DecideCondition(const JSHeapBroker* broker, Node* const cond) { switch (cond->opcode()) { case IrOpcode::kInt32Constant: { Int32Matcher mcond(cond); @@ -27,7 +27,8 @@ Decision DecideCondition(Node* const cond) { } case IrOpcode::kHeapConstant: { HeapObjectMatcher mcond(cond); - return mcond.Value()->BooleanValue() ? Decision::kTrue : Decision::kFalse; + return mcond.Ref(broker).BooleanValue() ? Decision::kTrue + : Decision::kFalse; } default: return Decision::kUnknown; @@ -37,11 +38,13 @@ Decision DecideCondition(Node* const cond) { } // namespace CommonOperatorReducer::CommonOperatorReducer(Editor* editor, Graph* graph, + const JSHeapBroker* js_heap_broker, CommonOperatorBuilder* common, MachineOperatorBuilder* machine, Zone* temp_zone) : AdvancedReducer(editor), graph_(graph), + js_heap_broker_(js_heap_broker), common_(common), machine_(machine), dead_(graph->NewNode(common->Dead())), @@ -50,6 +53,7 @@ CommonOperatorReducer::CommonOperatorReducer(Editor* editor, Graph* graph, } Reduction CommonOperatorReducer::Reduce(Node* node) { + DisallowHeapAccess no_heap_access; switch (node->opcode()) { case IrOpcode::kBranch: return ReduceBranch(node); @@ -85,8 +89,10 @@ Reduction CommonOperatorReducer::ReduceBranch(Node* node) { // not (i.e. true being returned in the false case and vice versa). if (cond->opcode() == IrOpcode::kBooleanNot || (cond->opcode() == IrOpcode::kSelect && - DecideCondition(cond->InputAt(1)) == Decision::kFalse && - DecideCondition(cond->InputAt(2)) == Decision::kTrue)) { + DecideCondition(js_heap_broker(), cond->InputAt(1)) == + Decision::kFalse && + DecideCondition(js_heap_broker(), cond->InputAt(2)) == + Decision::kTrue)) { for (Node* const use : node->uses()) { switch (use->opcode()) { case IrOpcode::kIfTrue: @@ -108,7 +114,7 @@ Reduction CommonOperatorReducer::ReduceBranch(Node* node) { node, common()->Branch(NegateBranchHint(BranchHintOf(node->op())))); return Changed(node); } - Decision const decision = DecideCondition(cond); + Decision const decision = DecideCondition(js_heap_broker(), cond); if (decision == Decision::kUnknown) return NoChange(); Node* const control = node->InputAt(1); for (Node* const use : node->uses()) { @@ -148,7 +154,7 @@ Reduction CommonOperatorReducer::ReduceDeoptimizeConditional(Node* node) { : common()->DeoptimizeUnless(p.kind(), p.reason(), p.feedback())); return Changed(node); } - Decision const decision = DecideCondition(condition); + Decision const decision = DecideCondition(js_heap_broker(), condition); if (decision == Decision::kUnknown) return NoChange(); if (condition_is_true == (decision == Decision::kTrue)) { ReplaceWithValue(node, dead(), effect, control); @@ -381,7 +387,7 @@ Reduction CommonOperatorReducer::ReduceSelect(Node* node) { Node* const vtrue = node->InputAt(1); Node* const vfalse = node->InputAt(2); if (vtrue == vfalse) return Replace(vtrue); - switch (DecideCondition(cond)) { + switch (DecideCondition(js_heap_broker(), cond)) { case Decision::kTrue: return Replace(vtrue); case Decision::kFalse: |