Chromium Code Reviews| Index: src/hydrogen-instructions.h |
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
| index 011b4080e59999f30b5ce56a40341b7628b325d4..e4e3131c37c064e800981797dca814e63d5e3987 100644 |
| --- a/src/hydrogen-instructions.h |
| +++ b/src/hydrogen-instructions.h |
| @@ -5721,19 +5721,20 @@ inline bool ReceiverObjectNeedsWriteBarrier(HValue* object, |
| if (HAllocate::cast(object)->IsNewSpaceAllocation()) { |
| return false; |
| } |
| - // Storing a map or an immortal immovable object requires no write barriers |
| - // if the object is the new space dominator. |
| - if (value->IsConstant() && |
| - (HConstant::cast(value)->IsMap() || |
| - HConstant::cast(value)->ImmortalImmovable())) { |
| + // Stores to old space allocations require no write barriers if the object |
| + // is the new space dominator and the value is not in new space. |
|
Hannes Payer (out of office)
2014/05/18 18:54:58
new_space_dominator should be called dominator, ot
Benedikt Meurer
2014/05/19 06:17:51
Done.
|
| + if (value->IsConstant() && HConstant::cast(value)->NotInNewSpace()) { |
| return false; |
| } |
| - // Likewise we don't need a write barrier if we store a value that |
| - // originates from the same allocation (via allocation folding). |
| + // Likewise we don't need a write barrier if we store a value was previously |
| + // allocated in old space. |
|
Hannes Payer (out of office)
2014/05/18 18:54:58
broken comment.
Benedikt Meurer
2014/05/19 06:17:51
Done.
|
| while (value->IsInnerAllocatedObject()) { |
| value = HInnerAllocatedObject::cast(value)->base_object(); |
| } |
| - return object != value; |
| + if (value->IsAllocate() && |
| + HAllocate::cast(value)->IsOldDataSpaceAllocation()) { |
| + return false; |
| + } |
|
Hannes Payer (out of office)
2014/05/18 18:54:58
Why not
if (value->IsAllocate() &&
(HAllocate:
Benedikt Meurer
2014/05/19 06:17:51
Done.
|
| } |
| return true; |
| } |