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

Unified Diff: src/compiler/liveness-analyzer.h

Issue 2428503002: [ignition/turbo] Add liveness analysis for the accumulator (Closed)
Patch Set: Remove unused accumulator state value read in release build Created 4 years, 2 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 | « src/compiler/bytecode-graph-builder.cc ('k') | src/compiler/liveness-analyzer.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/compiler/liveness-analyzer.h
diff --git a/src/compiler/liveness-analyzer.h b/src/compiler/liveness-analyzer.h
index 46d7c37d0d7912f2bc533786d372c0e40e933b75..63fc52c12515013544aa93875c1319b6d0d2660c 100644
--- a/src/compiler/liveness-analyzer.h
+++ b/src/compiler/liveness-analyzer.h
@@ -18,20 +18,22 @@ class LivenessAnalyzerBlock;
class Node;
class StateValuesCache;
-
class NonLiveFrameStateSlotReplacer {
public:
void ClearNonLiveFrameStateSlots(Node* frame_state, BitVector* liveness);
NonLiveFrameStateSlotReplacer(StateValuesCache* state_values_cache,
Node* replacement, size_t local_count,
- Zone* local_zone)
+ bool has_accumulator, Zone* local_zone)
: replacement_node_(replacement),
state_values_cache_(state_values_cache),
local_zone_(local_zone),
- permanently_live_(local_count == 0 ? 1 : static_cast<int>(local_count),
- local_zone),
- inputs_buffer_(local_zone) {}
+ permanently_live_(
+ static_cast<int>(local_count) + (has_accumulator ? 1 : 0),
+ local_zone),
+ inputs_buffer_(local_zone),
+ has_accumulator_(has_accumulator) {}
+ // TODO(leszeks): Not used by bytecode, remove once AST graph builder is gone.
void MarkPermanentlyLive(int var) { permanently_live_.Add(var); }
private:
@@ -49,11 +51,13 @@ class NonLiveFrameStateSlotReplacer {
Zone* local_zone_;
BitVector permanently_live_;
NodeVector inputs_buffer_;
+
+ bool has_accumulator_;
};
class V8_EXPORT_PRIVATE LivenessAnalyzer {
public:
- LivenessAnalyzer(size_t local_count, Zone* zone);
+ LivenessAnalyzer(size_t local_count, bool has_accumulator, Zone* zone);
LivenessAnalyzerBlock* NewBlock();
LivenessAnalyzerBlock* NewBlock(LivenessAnalyzerBlock* predecessor);
@@ -73,6 +77,10 @@ class V8_EXPORT_PRIVATE LivenessAnalyzer {
ZoneDeque<LivenessAnalyzerBlock*> blocks_;
size_t local_count_;
+ // TODO(leszeks): Always true for bytecode, remove once AST graph builder is
+ // gone.
+ bool has_accumulator_;
+
ZoneQueue<LivenessAnalyzerBlock*> queue_;
};
@@ -83,6 +91,17 @@ class LivenessAnalyzerBlock {
void Lookup(int var) { entries_.push_back(Entry(Entry::kLookup, var)); }
void Bind(int var) { entries_.push_back(Entry(Entry::kBind, var)); }
+ void LookupAccumulator() {
+ DCHECK(has_accumulator_);
+ // The last entry is the accumulator entry.
+ entries_.push_back(Entry(Entry::kLookup, live_.length() - 1));
+ }
+ void BindAccumulator() {
+ DCHECK(has_accumulator_);
+ // The last entry is the accumulator entry.
+ entries_.push_back(Entry(Entry::kBind, live_.length() - 1));
+ }
+
void Checkpoint(Node* node) { entries_.push_back(Entry(node)); }
void AddPredecessor(LivenessAnalyzerBlock* b) { predecessors_.push_back(b); }
LivenessAnalyzerBlock* GetPredecessor() {
@@ -116,7 +135,8 @@ class LivenessAnalyzerBlock {
Node* node_;
};
- LivenessAnalyzerBlock(size_t id, size_t local_count, Zone* zone);
+ LivenessAnalyzerBlock(size_t id, size_t local_count, bool has_accumulator,
+ Zone* zone);
void Process(BitVector* result, NonLiveFrameStateSlotReplacer* relaxer);
bool UpdateLive(BitVector* working_area);
@@ -138,6 +158,7 @@ class LivenessAnalyzerBlock {
BitVector live_;
bool queued_;
+ bool has_accumulator_;
size_t id_;
};
« no previous file with comments | « src/compiler/bytecode-graph-builder.cc ('k') | src/compiler/liveness-analyzer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698