Chromium Code Reviews| Index: src/hydrogen-instructions.h |
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
| index c77c2ebf0e495a134172b2da370b19eebfdfb6cc..f6e95e8895e4b8cb5932435e335a0c006223bc61 100644 |
| --- a/src/hydrogen-instructions.h |
| +++ b/src/hydrogen-instructions.h |
| @@ -4748,15 +4748,17 @@ class HRandom V8_FINAL : public HTemplateInstruction<1> { |
| class HAdd V8_FINAL : public HArithmeticBinaryOperation { |
| public: |
| - static HInstruction* New(Zone* zone, |
| - HValue* context, |
| - HValue* left, |
| - HValue* right); |
| + static HInstruction* New( |
|
danno
2013/11/20 13:50:50
nit: remove this whitespace change.
Dmitry Lomov (no reviews)
2013/11/20 17:38:56
Done.
|
| + Zone* zone, |
| + HValue* context, |
| + HValue* left, |
| + HValue* right); |
| // Add is only commutative if two integer values are added and not if two |
| // tagged values are added (because it might be a String concatenation). |
| + // We also do not commute (pointer + offset). |
| virtual bool IsCommutative() const V8_OVERRIDE { |
| - return !representation().IsTagged(); |
| + return !representation().IsTagged() && !representation().IsExternal(); |
| } |
| virtual HValue* EnsureAndPropagateNotMinusZero( |
| @@ -4792,6 +4794,10 @@ class HAdd V8_FINAL : public HArithmeticBinaryOperation { |
| } |
| } |
| + virtual Representation RepresentationFromInputs() V8_OVERRIDE; |
| + |
| + virtual Representation RequiredInputRepresentation(int index) V8_OVERRIDE; |
| + |
| DECLARE_CONCRETE_INSTRUCTION(Add) |
| protected: |
| @@ -6509,6 +6515,8 @@ class HStoreNamedField V8_FINAL : public HTemplateInstruction<3> { |
| } else if (field_representation().IsDouble() || |
| field_representation().IsSmi()) { |
| return field_representation(); |
| + } else if (field_representation().IsExternal()) { |
| + return Representation::External(); |
| } |
| } |
| return Representation::Tagged(); |