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

Unified Diff: src/compiler/simplified-lowering.cc

Issue 533773002: Fix missing visitation of effect inputs to loads and stores. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 3 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/simplified-lowering.cc
diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc
index 06df207149cccaf3d71405360b3695cf8fd093d0..3c3e47e0c08b3d5b62a0d93f81a30cd55e6f865b 100644
--- a/src/compiler/simplified-lowering.cc
+++ b/src/compiler/simplified-lowering.cc
@@ -188,6 +188,11 @@ class RepresentationSelector {
}
}
+ void ProcessEffect(Node* node) {
titzer 2014/09/03 09:03:57 Can we make this ProcessRemainingInputs(Node*, int
Michael Starzinger 2014/09/03 10:49:58 Done.
+ DCHECK_EQ(1, OperatorProperties::GetEffectInputCount(node->op()));
+ Enqueue(NodeProperties::GetEffectInput(node)); // Effect input: just visit
+ }
+
// The default, most general visitation case. For {node}, process all value,
// context, effect, and control inputs, assuming that value inputs should have
// {kRepTagged} representation and can observe all output values {kTypeAny}.
@@ -529,6 +534,7 @@ class RepresentationSelector {
case IrOpcode::kLoadField: {
FieldAccess access = FieldAccessOf(node->op());
ProcessInput(node, 0, changer_->TypeForBasePointer(access));
+ ProcessEffect(node);
SetOutput(node, access.machine_type);
if (lower()) lowering->DoLoadField(node);
break;
@@ -537,6 +543,7 @@ class RepresentationSelector {
FieldAccess access = FieldAccessOf(node->op());
ProcessInput(node, 0, changer_->TypeForBasePointer(access));
ProcessInput(node, 1, access.machine_type);
+ ProcessEffect(node);
SetOutput(node, 0);
if (lower()) lowering->DoStoreField(node);
break;
@@ -545,6 +552,7 @@ class RepresentationSelector {
ElementAccess access = ElementAccessOf(node->op());
ProcessInput(node, 0, changer_->TypeForBasePointer(access));
ProcessInput(node, 1, kMachInt32); // element index
+ ProcessEffect(node);
SetOutput(node, access.machine_type);
if (lower()) lowering->DoLoadElement(node);
break;
@@ -554,6 +562,7 @@ class RepresentationSelector {
ProcessInput(node, 0, changer_->TypeForBasePointer(access));
ProcessInput(node, 1, kMachInt32); // element index
ProcessInput(node, 2, access.machine_type);
+ ProcessEffect(node);
SetOutput(node, 0);
if (lower()) lowering->DoStoreElement(node);
break;
@@ -568,6 +577,7 @@ class RepresentationSelector {
MachineType machine_type = OpParameter<MachineType>(node);
ProcessInput(node, 0, tBase); // pointer or object
ProcessInput(node, 1, kMachInt32); // index
+ ProcessEffect(node);
SetOutput(node, machine_type);
break;
}
@@ -578,6 +588,7 @@ class RepresentationSelector {
ProcessInput(node, 0, tBase); // pointer or object
ProcessInput(node, 1, kMachInt32); // index
ProcessInput(node, 2, rep.machine_type);
+ ProcessEffect(node);
SetOutput(node, 0);
break;
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698