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

Unified Diff: runtime/vm/redundancy_elimination.cc

Issue 3001403002: [vm] Cleanup Instruction::Dependencies(), EffectSet, BlockEffects (Closed)
Patch Set: Created 3 years, 4 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 | « runtime/vm/precompiler.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/redundancy_elimination.cc
diff --git a/runtime/vm/redundancy_elimination.cc b/runtime/vm/redundancy_elimination.cc
index fa3493e86bce1292fbbeaea907a6eacac809a0b2..1b83ace2a2986971eb099243e9d7288ffb0696ef 100644
--- a/runtime/vm/redundancy_elimination.cc
+++ b/runtime/vm/redundancy_elimination.cc
@@ -31,13 +31,11 @@ class CSEInstructionMap : public ValueObject {
Instruction* Lookup(Instruction* other) const {
ASSERT(other->AllowsCSE());
- ASSERT(other->Dependencies().IsNone());
return map_.LookupValue(other);
}
void Insert(Instruction* instr) {
ASSERT(instr->AllowsCSE());
- ASSERT(instr->Dependencies().IsNone());
return map_.Insert(instr);
}
@@ -1365,8 +1363,6 @@ void LICM::Optimize() {
ZoneGrowableArray<BitVector*>* loop_invariant_loads =
flow_graph()->loop_invariant_loads();
- BlockEffects* block_effects = flow_graph()->block_effects();
-
for (intptr_t i = 0; i < loop_headers.length(); ++i) {
BlockEntryInstr* header = loop_headers[i];
// Skip loop that don't have a pre-header block.
@@ -1378,8 +1374,7 @@ void LICM::Optimize() {
BlockEntryInstr* block = flow_graph()->preorder()[loop_it.Current()];
for (ForwardInstructionIterator it(block); !it.Done(); it.Advance()) {
Instruction* current = it.Current();
- if ((current->AllowsCSE() &&
- block_effects->CanBeMovedTo(current, pre_header)) ||
+ if (current->AllowsCSE() ||
IsLoopInvariantLoad(loop_invariant_loads, i, current)) {
bool inputs_loop_invariant = true;
for (int i = 0; i < current->InputCount(); ++i) {
@@ -2091,8 +2086,7 @@ class LoadOptimizer : public ValueObject {
bool CanBeCongruent(Definition* a, Definition* b) {
return (a->tag() == b->tag()) &&
((a->IsPhi() && (a->GetBlock() == b->GetBlock())) ||
- (a->AllowsCSE() && a->Dependencies().IsNone() &&
- a->AttributesEqual(b)));
+ (a->AllowsCSE() && a->AttributesEqual(b)));
}
// Given two definitions check if they are congruent under assumption that
@@ -2334,21 +2328,15 @@ bool DominatorBasedCSE::OptimizeRecursive(FlowGraph* graph,
Instruction* current = it.Current();
if (current->AllowsCSE()) {
Instruction* replacement = map->Lookup(current);
- ASSERT((replacement == NULL) || replacement->AllowsCSE());
- if ((replacement != NULL) &&
- graph->block_effects()->IsAvailableAt(replacement, block)) {
+
+ if (replacement != NULL) {
// Replace current with lookup result.
+ ASSERT(replacement->AllowsCSE());
graph->ReplaceCurrentInstruction(&it, current, replacement);
changed = true;
continue;
}
- // For simplicity we assume that instruction either does not depend on
- // anything or does not affect anything. If this is not the case then
- // we should first remove affected instructions from the map and
- // then add instruction to the map so that it does not kill itself.
- ASSERT(!current->HasUnknownSideEffects() ||
- current->Dependencies().IsNone());
map->Insert(current);
}
}
« no previous file with comments | « runtime/vm/precompiler.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698