#include "src/compiler/backend/move-optimizer.h"
#include "src/codegen/register-configuration.h"
namespace v8 {
namespace internal {
namespace compiler {
namespace {
struct MoveKey { … };
class OperandSet { … };
int FindFirstNonEmptySlot(const Instruction* instr) { … }
}
MoveOptimizer::MoveOptimizer(Zone* local_zone, InstructionSequence* code)
: … { … }
void MoveOptimizer::Run() { … }
void MoveOptimizer::RemoveClobberedDestinations(Instruction* instruction) { … }
void MoveOptimizer::MigrateMoves(Instruction* to, Instruction* from) { … }
void MoveOptimizer::CompressMoves(ParallelMove* left, MoveOpVector* right) { … }
void MoveOptimizer::CompressGaps(Instruction* instruction) { … }
void MoveOptimizer::CompressBlock(InstructionBlock* block) { … }
const Instruction* MoveOptimizer::LastInstruction(
const InstructionBlock* block) const { … }
void MoveOptimizer::OptimizeMerge(InstructionBlock* block) { … }
namespace {
bool IsSlot(const InstructionOperand& op) { … }
bool Is64BitsWide(const InstructionOperand& op) { … }
bool LoadCompare(const MoveOperands* a, const MoveOperands* b) { … }
}
void MoveOptimizer::FinalizeMoves(Instruction* instr) { … }
}
}
}