| Index: src/lithium.cc
|
| diff --git a/src/lithium.cc b/src/lithium.cc
|
| index aefd8b6492c45c7af1859a10dc037a0b507cd26c..c41cce8d9d157cbf2ece68ad58cd0c35f091db66 100644
|
| --- a/src/lithium.cc
|
| +++ b/src/lithium.cc
|
| @@ -95,31 +95,37 @@ void LOperand::PrintTo(StringStream* stream) {
|
| }
|
|
|
| #define DEFINE_OPERAND_CACHE(name, type) \
|
| - name* name::cache = NULL; \
|
| - void name::SetUpCache() { \
|
| + L##name* L##name::cache = NULL; \
|
| + \
|
| + void L##name::SetUpCache() { \
|
| if (cache) return; \
|
| - cache = new name[kNumCachedOperands]; \
|
| + cache = new L##name[kNumCachedOperands]; \
|
| for (int i = 0; i < kNumCachedOperands; i++) { \
|
| cache[i].ConvertTo(type, i); \
|
| } \
|
| } \
|
| + \
|
| + void L##name::TearDownCache() { \
|
| + delete[] cache; \
|
| + }
|
|
|
| -DEFINE_OPERAND_CACHE(LConstantOperand, CONSTANT_OPERAND)
|
| -DEFINE_OPERAND_CACHE(LStackSlot, STACK_SLOT)
|
| -DEFINE_OPERAND_CACHE(LDoubleStackSlot, DOUBLE_STACK_SLOT)
|
| -DEFINE_OPERAND_CACHE(LRegister, REGISTER)
|
| -DEFINE_OPERAND_CACHE(LDoubleRegister, DOUBLE_REGISTER)
|
| -
|
| +LITHIUM_OPERAND_LIST(DEFINE_OPERAND_CACHE)
|
| #undef DEFINE_OPERAND_CACHE
|
|
|
| void LOperand::SetUpCaches() {
|
| - LConstantOperand::SetUpCache();
|
| - LStackSlot::SetUpCache();
|
| - LDoubleStackSlot::SetUpCache();
|
| - LRegister::SetUpCache();
|
| - LDoubleRegister::SetUpCache();
|
| +#define LITHIUM_OPERAND_SETUP(name, type) L##name::SetUpCache();
|
| + LITHIUM_OPERAND_LIST(LITHIUM_OPERAND_SETUP)
|
| +#undef LITHIUM_OPERAND_SETUP
|
| +}
|
| +
|
| +
|
| +void LOperand::TearDownCaches() {
|
| +#define LITHIUM_OPERAND_TEARDOWN(name, type) L##name::TearDownCache();
|
| + LITHIUM_OPERAND_LIST(LITHIUM_OPERAND_TEARDOWN)
|
| +#undef LITHIUM_OPERAND_TEARDOWN
|
| }
|
|
|
| +
|
| bool LParallelMove::IsRedundant() const {
|
| for (int i = 0; i < move_operands_.length(); ++i) {
|
| if (!move_operands_[i].IsRedundant()) return false;
|
|
|