Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(179)

Unified Diff: src/crankshaft/hydrogen-instructions.h

Issue 1899813003: [crankshaft] Fragmentation-free allocation folding. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/crankshaft/hydrogen-instructions.cc » ('j') | src/heap/spaces.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_;
« no previous file with comments | « no previous file | src/crankshaft/hydrogen-instructions.cc » ('j') | src/heap/spaces.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698