| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index 7d33141a4f61c150320d02aaceb2c74218506b66..4a502ba2d46d6f552eafa84fe554df1ddaca6e5c 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();
|
| @@ -1303,6 +1307,8 @@ class HDeoptimize V8_FINAL : public HTemplateInstruction<0> {
|
| // Inserts an int3/stop break instruction for debugging purposes.
|
| class HDebugBreak V8_FINAL : public HTemplateInstruction<0> {
|
| public:
|
| + DECLARE_INSTRUCTION_FACTORY_P0(HDebugBreak);
|
| +
|
| virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE {
|
| return Representation::None();
|
| }
|
|
|