Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index 6de90deb5b3309ff9069abff3f85af5951deaf8f..bd22aca2fd6b17683cf7685db14863169f2829ab 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -1058,6 +1058,9 @@ class HValue: public ZoneObject { |
void RemoveLastAddedRange(); |
void ComputeInitialRange(Zone* zone); |
+ // Escape analysis helpers. |
+ virtual bool HasEscapingOperandAt(int index) { return true; } |
+ |
// Representation helpers. |
virtual Representation observed_input_representation(int index) { |
return Representation::None(); |
@@ -1429,6 +1432,7 @@ class HDummyUse: public HTemplateInstruction<1> { |
HValue* value() { return OperandAt(0); } |
+ virtual bool HasEscapingOperandAt(int index) { return false; } |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::None(); |
} |
@@ -1888,6 +1892,7 @@ class HSimulate: public HInstruction { |
virtual int OperandCount() { return values_.length(); } |
virtual HValue* OperandAt(int index) const { return values_[index]; } |
+ virtual bool HasEscapingOperandAt(int index) { return false; } |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::None(); |
} |
@@ -2797,6 +2802,7 @@ class HCheckMaps: public HTemplateInstruction<2> { |
return check_map; |
} |
+ virtual bool HasEscapingOperandAt(int index) { return false; } |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::Tagged(); |
} |
@@ -3228,6 +3234,7 @@ class HArgumentsObject: public HTemplateInstruction<0> { |
virtual int OperandCount() { return values_.length(); } |
virtual HValue* OperandAt(int index) const { return values_[index]; } |
+ virtual bool HasEscapingOperandAt(int index) { return false; } |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::None(); |
} |
@@ -5431,6 +5438,7 @@ class HLoadNamedField: public HTemplateInstruction<2> { |
HObjectAccess access() const { return access_; } |
Representation field_representation() const { return representation_; } |
+ virtual bool HasEscapingOperandAt(int index) { return false; } |
virtual Representation RequiredInputRepresentation(int index) { |
return Representation::Tagged(); |
} |
@@ -5763,6 +5771,7 @@ class HStoreNamedField: public HTemplateInstruction<2> { |
DECLARE_CONCRETE_INSTRUCTION(StoreNamedField) |
+ virtual bool HasEscapingOperandAt(int index) { return index == 1; } |
virtual Representation RequiredInputRepresentation(int index) { |
if (FLAG_track_double_fields && |
index == 1 && field_representation_.IsDouble()) { |
@@ -5895,6 +5904,7 @@ class HStoreKeyed |
} |
} |
+ virtual bool HasEscapingOperandAt(int index) { return index != 0; } |
virtual Representation RequiredInputRepresentation(int index) { |
// kind_fast: tagged[int32] = tagged |
// kind_double: tagged[int32] = double |