Index: src/interpreter/bytecode-register-optimizer.cc |
diff --git a/src/interpreter/bytecode-register-optimizer.cc b/src/interpreter/bytecode-register-optimizer.cc |
index 859f0e18285bf86589ea731a5c56dfa7f08fd48c..850d4bd377eb380708bb7299e0eeb08ff957a522 100644 |
--- a/src/interpreter/bytecode-register-optimizer.cc |
+++ b/src/interpreter/bytecode-register-optimizer.cc |
@@ -246,6 +246,8 @@ void BytecodeRegisterOptimizer::Flush() { |
} |
equivalent->MoveToNewEquivalenceSet(NextEquivalenceId(), true); |
} |
+ } else if (reg_info->GetEquivalent() == reg_info) { |
+ reg_info->MoveToNewEquivalenceSet(NextEquivalenceId(), true); |
rmcilroy
2017/06/01 10:44:44
Why do these need moved here? If it's because they
Jarin
2017/06/01 12:48:22
Yes, it's because they do not count as materialize
|
} |
} |
@@ -304,6 +306,7 @@ BytecodeRegisterOptimizer::GetMaterializedEquivalentNotAccumulator( |
void BytecodeRegisterOptimizer::Materialize(RegisterInfo* info) { |
if (!info->materialized()) { |
RegisterInfo* materialized = info->GetMaterializedEquivalent(); |
+ DCHECK_NOT_NULL(materialized); |
OutputRegisterTransfer(materialized, info); |
} |
} |