1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef V8_X64_LITHIUM_GAP_RESOLVER_X64_H_
6 #define V8_X64_LITHIUM_GAP_RESOLVER_X64_H_
8 #include "src/lithium.h"
16 class LGapResolver final BASE_EMBEDDED {
18 explicit LGapResolver(LCodeGen* owner);
20 // Resolve a set of parallel moves, emitting assembler instructions.
21 void Resolve(LParallelMove* parallel_move);
24 // Build the initial list of moves.
25 void BuildInitialMoveList(LParallelMove* parallel_move);
27 // Perform the move at the moves_ index in question (possibly requiring
28 // other moves to satisfy dependencies).
29 void PerformMove(int index);
31 // Emit a move and remove it from the move graph.
32 void EmitMove(int index);
34 // Execute a move by emitting a swap of two operands. The move from
35 // source to destination is removed from the move graph.
36 void EmitSwap(int index);
38 // Verify the move list before performing moves.
43 // List of moves not yet resolved.
44 ZoneList<LMoveOperands> moves_;
47 } } // namespace v8::internal
49 #endif // V8_X64_LITHIUM_GAP_RESOLVER_X64_H_