Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 7d33141a4f61c150320d02aaceb2c74218506b66..732cabfeee2b2d6cbb56f8211ccb4a7ebd81f2cf 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -782,11 +782,15 @@ class HValue : public ZoneObject { |
// phase (so that live ranges will be shorter). |
virtual bool IsPurelyInformativeDefinition() { return false; } |
- // This method must always return the original HValue SSA definition |
- // (regardless of any iDef of this value). |
+ // This method must always return the original HValue SSA definition, |
+ // regardless of any chain of iDefs of this value. |
HValue* ActualValue() { |
- int index = RedefinedOperandIndex(); |
- return index == kNoRedefinedOperand ? this : OperandAt(index); |
+ HValue* value = this; |
+ int index; |
+ while ((index = value->RedefinedOperandIndex()) != kNoRedefinedOperand) { |
+ value = value->OperandAt(index); |
+ } |
+ return value; |
} |
bool IsInteger32Constant(); |