71 : compiler_(
compiler), parallel_move_(parallel_move) {}
76 class ScratchFpuRegisterScope :
public ValueObject {
79 ~ScratchFpuRegisterScope();
84 ParallelMoveEmitter*
const emitter_;
89 class TemporaryAllocator :
public TemporaryRegisterAllocator {
91 TemporaryAllocator(ParallelMoveEmitter* emitter,
Register blocked);
93 Register AllocateTemporary()
override;
94 void ReleaseTemporary()
override;
95 DEBUG_ONLY(
bool DidAllocateTemporary() {
return allocated_; })
100 ParallelMoveEmitter*
const emitter_;
109 ScratchRegisterScope(ParallelMoveEmitter* emitter,
Register blocked);
110 ~ScratchRegisterScope();
112 Register reg()
const {
return reg_; }
115 TemporaryAllocator allocator_;
119 bool IsScratchLocation(
Location loc);
122 intptr_t first_free_register,
123 intptr_t last_free_register,
132 void EmitMove(
const MoveOperands& move);
134 void EmitSwap(
const MoveOperands&
swap);
141 void MoveMemoryToMemory(
const compiler::Address& dst,
142 const compiler::Address& src);
143 void Exchange(
Register reg,
const compiler::Address& mem);
144 void Exchange(
const compiler::Address& mem1,
const compiler::Address& mem2);
147 intptr_t stack_offset1,
149 intptr_t stack_offset2);
151 FlowGraphCompiler*
const compiler_;
152 ParallelMoveInstr* parallel_move_;
153 intptr_t current_move_;