Chromium Code Reviews| Index: src/crankshaft/hydrogen-instructions.h |
| diff --git a/src/crankshaft/hydrogen-instructions.h b/src/crankshaft/hydrogen-instructions.h |
| index 196a14fc705533c86e6cbf1ccf1ae10941606ee4..2fad18085e5c10cd69b59c0310ee79a8c6bd1480 100644 |
| --- a/src/crankshaft/hydrogen-instructions.h |
| +++ b/src/crankshaft/hydrogen-instructions.h |
| @@ -5005,14 +5005,30 @@ class HAllocate final : public HTemplateInstruction<2> { |
| flags_ = static_cast<HAllocate::Flags>(flags_ | PREFILL_WITH_FILLER); |
| } |
| - bool MustClearNextMapWord() const { |
| - return (flags_ & CLEAR_NEXT_MAP_WORD) != 0; |
| - } |
| - |
| void MakeDoubleAligned() { |
| flags_ = static_cast<HAllocate::Flags>(flags_ | ALLOCATE_DOUBLE_ALIGNED); |
| } |
| + void MakeAllocationFoldingDominator() { |
| + flags_ = |
| + static_cast<HAllocate::Flags>(flags_ | ALLOCATION_FOLDING_DOMINATOR); |
| + } |
| + |
| + bool IsAllocationFoldingDominator() { |
| + return (flags_ & ALLOCATION_FOLDING_DOMINATOR) != 0; |
| + } |
| + |
| + void MakeAllocationFoldingDominated() { |
| + flags_ = |
| + static_cast<HAllocate::Flags>(flags_ | ALLOCATION_FOLDING_DOMINATED); |
| + ClearFlag(kTrackSideEffectDominators); |
| + ClearChangesFlag(kNewSpacePromotion); |
| + } |
| + |
| + bool IsAllocationFoldingDominated() { |
| + return (flags_ & ALLOCATION_FOLDING_DOMINATED) != 0; |
| + } |
| + |
| bool HandleSideEffectDominator(GVNFlag side_effect, |
| HValue* dominator) override; |
| @@ -5026,7 +5042,8 @@ class HAllocate final : public HTemplateInstruction<2> { |
| ALLOCATE_IN_OLD_SPACE = 1 << 2, |
| ALLOCATE_DOUBLE_ALIGNED = 1 << 3, |
| PREFILL_WITH_FILLER = 1 << 4, |
| - CLEAR_NEXT_MAP_WORD = 1 << 5 |
| + ALLOCATION_FOLDING_DOMINATOR = 1 << 5, |
| + ALLOCATION_FOLDING_DOMINATED = 1 << 6 |
|
Benedikt Meurer
2016/04/19 07:25:38
Is there a better name than "dominated"?
Hannes Payer (out of office)
2016/04/19 11:03:56
Changed to ALLOCATION_FOLDED. Done.
|
| }; |
| HAllocate(HValue* context, |
| @@ -5072,19 +5089,9 @@ class HAllocate final : public HTemplateInstruction<2> { |
| if (!FLAG_use_gvn || !FLAG_use_allocation_folding) { |
| flags = static_cast<Flags>(flags | PREFILL_WITH_FILLER); |
| } |
| - if (pretenure_flag == NOT_TENURED && |
| - AllocationSite::CanTrack(instance_type)) { |
| - flags = static_cast<Flags>(flags | CLEAR_NEXT_MAP_WORD); |
| - } |
| return flags; |
| } |
| - void UpdateClearNextMapWord(bool clear_next_map_word) { |
| - flags_ = static_cast<Flags>(clear_next_map_word |
| - ? flags_ | CLEAR_NEXT_MAP_WORD |
| - : flags_ & ~CLEAR_NEXT_MAP_WORD); |
| - } |
| - |
| void UpdateSize(HValue* size) { |
| SetOperandAt(1, size); |
| if (size->IsInteger32Constant()) { |
| @@ -5096,17 +5103,11 @@ class HAllocate final : public HTemplateInstruction<2> { |
| HAllocate* GetFoldableDominator(HAllocate* dominator); |
| - void UpdateFreeSpaceFiller(int32_t filler_size); |
| - |
| - void CreateFreeSpaceFiller(int32_t filler_size); |
| - |
| bool IsFoldable(HAllocate* allocate) { |
| return (IsNewSpaceAllocation() && allocate->IsNewSpaceAllocation()) || |
| (IsOldSpaceAllocation() && allocate->IsOldSpaceAllocation()); |
| } |
| - void ClearNextMapWord(int offset); |
| - |
| Flags flags_; |
| Handle<Map> known_initial_map_; |
| HAllocate* dominating_allocate_; |