| 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
|
|
|