| Index: src/lithium.cc
|
| diff --git a/src/lithium.cc b/src/lithium.cc
|
| index aefd8b6492c45c7af1859a10dc037a0b507cd26c..d072358ce9edbcf022cb4be61f5a4a04266428f3 100644
|
| --- a/src/lithium.cc
|
| +++ b/src/lithium.cc
|
| @@ -96,6 +96,7 @@ void LOperand::PrintTo(StringStream* stream) {
|
|
|
| #define DEFINE_OPERAND_CACHE(name, type) \
|
| name* name::cache = NULL; \
|
| + \
|
| void name::SetUpCache() { \
|
| if (cache) return; \
|
| cache = new name[kNumCachedOperands]; \
|
| @@ -103,23 +104,28 @@ void LOperand::PrintTo(StringStream* stream) {
|
| cache[i].ConvertTo(type, i); \
|
| } \
|
| } \
|
| + \
|
| + void 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) name::SetUpCache();
|
| + LITHIUM_OPERAND_LIST(LITHIUM_OPERAND_SETUP)
|
| +#undef LITHIUM_OPERAND_SETUP
|
| +}
|
| +
|
| +
|
| +void LOperand::TearDownCaches() {
|
| +#define LITHIUM_OPERAND_TEARDOWN(name, type) 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;
|
|
|