| 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); }
|
|
|