OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "src/compiler/js-intrinsic-lowering.h" | 5 #include "src/compiler/js-intrinsic-lowering.h" |
6 | 6 |
7 #include "src/compiler/access-builder.h" | 7 #include "src/compiler/access-builder.h" |
8 #include "src/compiler/js-graph.h" | 8 #include "src/compiler/js-graph.h" |
9 #include "src/compiler/node-properties.h" | 9 #include "src/compiler/node-properties.h" |
10 | 10 |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 Node* efalse1 = effect; | 138 Node* efalse1 = effect; |
139 Node* vfalse1 = value; | 139 Node* vfalse1 = value; |
140 | 140 |
141 Node* merge1 = graph()->NewNode(merge_op, if_true1, if_false1); | 141 Node* merge1 = graph()->NewNode(merge_op, if_true1, if_false1); |
142 efalse0 = graph()->NewNode(ephi_op, etrue1, efalse1, merge1); | 142 efalse0 = graph()->NewNode(ephi_op, etrue1, efalse1, merge1); |
143 vfalse0 = graph()->NewNode(phi_op, vtrue1, vfalse1, merge1); | 143 vfalse0 = graph()->NewNode(phi_op, vtrue1, vfalse1, merge1); |
144 } | 144 } |
145 | 145 |
146 Node* merge0 = graph()->NewNode(merge_op, if_true0, if_false0); | 146 Node* merge0 = graph()->NewNode(merge_op, if_true0, if_false0); |
147 | 147 |
148 | |
149 // Replace all effect uses of {node} with the {ephi0}. | 148 // Replace all effect uses of {node} with the {ephi0}. |
150 Node* ephi0 = graph()->NewNode(ephi_op, etrue0, efalse0, merge0); | 149 Node* ephi0 = graph()->NewNode(ephi_op, etrue0, efalse0, merge0); |
151 NodeProperties::ReplaceWithValue(node, node, ephi0); | 150 NodeProperties::ReplaceWithValue(node, node, ephi0); |
152 | 151 |
153 // Turn the {node} into a Phi. | 152 // Turn the {node} into a Phi. |
154 return Change(node, phi_op, vtrue0, vfalse0, merge0); | 153 return Change(node, phi_op, vtrue0, vfalse0, merge0); |
155 } | 154 } |
156 | 155 |
157 | 156 |
158 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op) { | 157 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op) { |
159 // Remove the effects from the node and update its effect usages. | 158 // Replace all effect uses of {node} with the effect dependency. |
160 NodeProperties::ReplaceWithValue(node, node); | 159 NodeProperties::ReplaceWithValue(node, node); |
161 // Remove the inputs corresponding to context, effect and control. | 160 // Remove the inputs corresponding to context, effect and control. |
162 NodeProperties::RemoveNonValueInputs(node); | 161 NodeProperties::RemoveNonValueInputs(node); |
163 // Finally update the operator to the new one. | 162 // Finally update the operator to the new one. |
164 node->set_op(op); | 163 node->set_op(op); |
165 return Changed(node); | 164 return Changed(node); |
166 } | 165 } |
167 | 166 |
168 | 167 |
169 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op, Node* a, | 168 Reduction JSIntrinsicLowering::Change(Node* node, const Operator* op, Node* a, |
(...skipping 15 matching lines...) Expand all Loading... |
185 } | 184 } |
186 | 185 |
187 | 186 |
188 MachineOperatorBuilder* JSIntrinsicLowering::machine() const { | 187 MachineOperatorBuilder* JSIntrinsicLowering::machine() const { |
189 return jsgraph()->machine(); | 188 return jsgraph()->machine(); |
190 } | 189 } |
191 | 190 |
192 } // namespace compiler | 191 } // namespace compiler |
193 } // namespace internal | 192 } // namespace internal |
194 } // namespace v8 | 193 } // namespace v8 |
OLD | NEW |