| Index: src/lithium-allocator.cc
|
| diff --git a/src/lithium-allocator.cc b/src/lithium-allocator.cc
|
| index 4396c7354c76d5f6511821ee8d4a0043565fa411..83805dc729a0f015db1340f7252b6ed550bc7600 100644
|
| --- a/src/lithium-allocator.cc
|
| +++ b/src/lithium-allocator.cc
|
| @@ -46,6 +46,29 @@
|
| namespace v8 {
|
| namespace internal {
|
|
|
| +
|
| +#define DEFINE_OPERAND_CACHE(name, type) \
|
| + name name::cache[name::kNumCachedOperands]; \
|
| + void name::SetUpCache() { \
|
| + for (int i = 0; i < kNumCachedOperands; i++) { \
|
| + cache[i].ConvertTo(type, i); \
|
| + } \
|
| + } \
|
| + static bool name##_initialize() { \
|
| + name::SetUpCache(); \
|
| + return true; \
|
| + } \
|
| + static bool name##_cache_initialized = name##_initialize();
|
| +
|
| +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)
|
| +
|
| +#undef DEFINE_OPERAND_CACHE
|
| +
|
| +
|
| static inline LifetimePosition Min(LifetimePosition a, LifetimePosition b) {
|
| return a.Value() < b.Value() ? a : b;
|
| }
|
|
|