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_; |