Index: src/interpreter/bytecode-array-builder.cc |
diff --git a/src/interpreter/bytecode-array-builder.cc b/src/interpreter/bytecode-array-builder.cc |
index 87c61358e884a45884b4a08ec636d66c541015fa..0dfa58f660cd706b15591adcf326a10dc344b184 100644 |
--- a/src/interpreter/bytecode-array-builder.cc |
+++ b/src/interpreter/bytecode-array-builder.cc |
@@ -282,11 +282,23 @@ BytecodeArrayBuilder& BytecodeArrayBuilder::StoreAccumulatorInRegister( |
Register reg) { |
// TODO(oth): Avoid storing the accumulator in the register if the |
// previous bytecode loaded the accumulator with the same register. |
+ // |
+ // TODO(oth): If the previous bytecode is a MOV into this register, |
+ // the previous instruction can be removed. The logic for determining |
+ // these redundant MOVs appears complex. |
Output(Bytecode::kStar, reg.ToOperand()); |
return *this; |
} |
+BytecodeArrayBuilder& BytecodeArrayBuilder::MoveRegister(Register from, |
+ Register to) { |
+ DCHECK(from != to); |
+ Output(Bytecode::kMov, from.ToOperand(), to.ToOperand()); |
+ return *this; |
+} |
+ |
+ |
BytecodeArrayBuilder& BytecodeArrayBuilder::LoadGlobal( |
size_t name_index, int feedback_slot, LanguageMode language_mode, |
TypeofMode typeof_mode) { |