Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(156)

Unified Diff: src/compiler/js-generic-lowering.cc

Issue 1172773003: [turbofan] Deprecate NodeProperties::ReplaceWithValue. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compiler/change-lowering.cc ('k') | src/compiler/js-typed-lowering.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/js-generic-lowering.cc
diff --git a/src/compiler/js-generic-lowering.cc b/src/compiler/js-generic-lowering.cc
index 914a8d1135ecbe93b515a1a059b9ba403b52b4c3..da0ccb0580fee7a868ccd8f51622ce9e7b3ec78b 100644
--- a/src/compiler/js-generic-lowering.cc
+++ b/src/compiler/js-generic-lowering.cc
@@ -195,7 +195,7 @@ void JSGenericLowering::ReplaceWithCompareIC(Node* node, Token::Value token) {
Node* booleanize = graph()->NewNode(op, compare, jsgraph()->ZeroConstant());
// Finally patch the original node to select a boolean.
- NodeProperties::ReplaceWithValue(node, node, compare);
+ NodeProperties::ReplaceUses(node, node, compare, compare, compare);
// TODO(mstarzinger): Just a work-around because SelectLowering might
// otherwise introduce a Phi without any uses, making Scheduler unhappy.
if (node->UseCount() == 0) return;
@@ -449,7 +449,7 @@ void JSGenericLowering::LowerJSLoadDynamicGlobal(Node* node) {
(access.mode() == CONTEXTUAL) ? Runtime::kLoadLookupSlot
: Runtime::kLoadLookupSlotNoReferenceError;
Node* projection = graph()->NewNode(common()->Projection(0), node);
- NodeProperties::ReplaceWithValue(node, projection, node, node);
+ NodeProperties::ReplaceUses(node, projection, node, node, node);
node->RemoveInput(NodeProperties::FirstFrameStateIndex(node) + 1);
node->RemoveInput(NodeProperties::FirstValueIndex(node));
node->InsertInput(zone(), 1, jsgraph()->Constant(access.name()));
@@ -461,7 +461,7 @@ void JSGenericLowering::LowerJSLoadDynamicGlobal(Node* node) {
void JSGenericLowering::LowerJSLoadDynamicContext(Node* node) {
const DynamicContextAccess& access = DynamicContextAccessOf(node->op());
Node* projection = graph()->NewNode(common()->Projection(0), node);
- NodeProperties::ReplaceWithValue(node, projection, node, node);
+ NodeProperties::ReplaceUses(node, projection, node, node, node);
node->InsertInput(zone(), 1, jsgraph()->Constant(access.name()));
ReplaceWithRuntimeCall(node, Runtime::kLoadLookupSlot);
projection->ReplaceInput(0, node);
@@ -748,9 +748,14 @@ void JSGenericLowering::LowerJSForInPrepare(Node* node) {
edge.UpdateTo(effect);
} else if (NodeProperties::IsControlEdge(edge)) {
Node* const use = edge.from();
- DCHECK_EQ(IrOpcode::kIfSuccess, use->opcode());
- use->ReplaceUses(control);
- use->Kill();
+ if (use->opcode() == IrOpcode::kIfSuccess) {
+ use->ReplaceUses(control);
+ use->Kill();
+ } else if (use->opcode() == IrOpcode::kIfException) {
+ edge.UpdateTo(cache_type_true0);
+ } else {
+ UNREACHABLE();
+ }
} else {
Node* const use = edge.from();
DCHECK(NodeProperties::IsValueEdge(edge));
@@ -805,10 +810,19 @@ void JSGenericLowering::LowerJSStackCheck(Node* node) {
Node* merge = graph()->NewNode(common()->Merge(2), if_true, if_false);
Node* ephi = graph()->NewNode(common()->EffectPhi(2), etrue, efalse, merge);
- // Relax controls of {node}, i.e. make it free floating.
- NodeProperties::ReplaceWithValue(node, node, ephi, merge);
+ // Wire the new diamond into the graph, {node} can still throw.
+ NodeProperties::ReplaceUses(node, node, ephi, node, node);
NodeProperties::ReplaceEffectInput(ephi, efalse, 1);
+ // TODO(mstarzinger): This iteration cuts out the IfSuccess projection from
+ // the node and places it inside the diamond. Come up with a helper method!
+ for (Node* use : node->uses()) {
+ if (use->opcode() == IrOpcode::kIfSuccess) {
+ use->ReplaceUses(merge);
+ merge->ReplaceInput(1, use);
+ }
+ }
+
// Turn the stack check into a runtime call.
ReplaceWithRuntimeCall(node, Runtime::kStackGuard);
}
« no previous file with comments | « src/compiler/change-lowering.cc ('k') | src/compiler/js-typed-lowering.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698