Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index ba8d2e781dc1c102fa0789f95b23c4384c29db8a..aa19bc32f57a320091c994840668f62b4e49c73f 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -1223,6 +1223,7 @@ class HChange: public HUnaryOperation { |
SetFlag(kUseGVN); |
if (deoptimize_on_undefined) SetFlag(kDeoptimizeOnUndefined); |
if (is_truncating) SetFlag(kTruncatingToInt32); |
+ if (to.IsTagged()) SetGVNFlag(kChangesNewSpacePromotion); |
} |
virtual HValue* EnsureAndPropagateNotMinusZero(BitVector* visited); |
@@ -1348,6 +1349,7 @@ class HStackCheck: public HTemplateInstruction<1> { |
HStackCheck(HValue* context, Type type) : type_(type) { |
SetOperandAt(0, context); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
} |
HValue* context() { return OperandAt(0); } |
@@ -1926,6 +1928,7 @@ class HUnaryMathOperation: public HTemplateInstruction<2> { |
case kMathAbs: |
set_representation(Representation::Tagged()); |
SetFlag(kFlexibleRepresentation); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
break; |
case kMathSqrt: |
case kMathPowHalf: |
@@ -1934,6 +1937,7 @@ class HUnaryMathOperation: public HTemplateInstruction<2> { |
case kMathCos: |
case kMathTan: |
set_representation(Representation::Double()); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
break; |
default: |
UNREACHABLE(); |
@@ -3154,6 +3158,7 @@ class HPower: public HTemplateInstruction<2> { |
SetOperandAt(1, right); |
set_representation(Representation::Double()); |
SetFlag(kUseGVN); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
} |
HValue* left() { return OperandAt(0); } |
@@ -4323,6 +4328,7 @@ class HTransitionElementsKind: public HTemplateInstruction<1> { |
SetFlag(kUseGVN); |
SetGVNFlag(kChangesElementsKind); |
SetGVNFlag(kChangesElementsPointer); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
set_representation(Representation::Tagged()); |
} |
@@ -4384,6 +4390,7 @@ class HStringCharCodeAt: public HTemplateInstruction<3> { |
set_representation(Representation::Integer32()); |
SetFlag(kUseGVN); |
SetGVNFlag(kDependsOnMaps); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
} |
virtual Representation RequiredInputRepresentation(int index) { |
@@ -4415,6 +4422,7 @@ class HStringCharFromCode: public HTemplateInstruction<2> { |
SetOperandAt(1, char_code); |
set_representation(Representation::Tagged()); |
SetFlag(kUseGVN); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
} |
virtual Representation RequiredInputRepresentation(int index) { |
@@ -4516,6 +4524,7 @@ class HFastLiteral: public HMaterializedLiteral<1> { |
boilerplate_(boilerplate), |
total_size_(total_size) { |
SetOperandAt(0, context); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
} |
// Maximum depth and total number of elements and properties for literal |
@@ -4551,6 +4560,7 @@ class HArrayLiteral: public HMaterializedLiteral<1> { |
length_(length), |
boilerplate_object_(boilerplate_object) { |
SetOperandAt(0, context); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
} |
HValue* context() { return OperandAt(0); } |
@@ -4591,6 +4601,7 @@ class HObjectLiteral: public HMaterializedLiteral<1> { |
fast_elements_(fast_elements), |
has_function_(has_function) { |
SetOperandAt(0, context); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
} |
HValue* context() { return OperandAt(0); } |
@@ -4652,6 +4663,7 @@ class HFunctionLiteral: public HTemplateInstruction<1> { |
: shared_info_(shared), pretenure_(pretenure) { |
SetOperandAt(0, context); |
set_representation(Representation::Tagged()); |
+ SetGVNFlag(kChangesNewSpacePromotion); |
} |
HValue* context() { return OperandAt(0); } |