diff options
author | Bert Belder <bertbelder@gmail.com> | 2012-06-13 15:34:45 +0200 |
---|---|---|
committer | Bert Belder <bertbelder@gmail.com> | 2012-06-14 01:37:13 +0200 |
commit | 50464cd4f49e40f4fe792ff46a81052319a222e9 (patch) | |
tree | 1fe524b2e6c0eb3c459142cd27539f88e1a3f63c /deps/v8/src/lithium.cc | |
parent | 09be360a0fee2c7619bae8c4248f9ed3d79d1b30 (diff) | |
download | node-50464cd4f49e40f4fe792ff46a81052319a222e9.tar.gz |
v8: upgrade to v3.11.10
Diffstat (limited to 'deps/v8/src/lithium.cc')
-rw-r--r-- | deps/v8/src/lithium.cc | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/deps/v8/src/lithium.cc b/deps/v8/src/lithium.cc index aefd8b649..fd8b7965f 100644 --- a/deps/v8/src/lithium.cc +++ b/deps/v8/src/lithium.cc @@ -1,4 +1,4 @@ -// Copyright 2011 the V8 project authors. All rights reserved. +// Copyright 2012 the V8 project authors. All rights reserved. // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are // met: @@ -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; @@ -165,11 +171,11 @@ void LEnvironment::PrintTo(StringStream* stream) { } -void LPointerMap::RecordPointer(LOperand* op) { +void LPointerMap::RecordPointer(LOperand* op, Zone* zone) { // Do not record arguments as pointers. if (op->IsStackSlot() && op->index() < 0) return; ASSERT(!op->IsDoubleRegister() && !op->IsDoubleStackSlot()); - pointer_operands_.Add(op); + pointer_operands_.Add(op, zone); } @@ -186,11 +192,11 @@ void LPointerMap::RemovePointer(LOperand* op) { } -void LPointerMap::RecordUntagged(LOperand* op) { +void LPointerMap::RecordUntagged(LOperand* op, Zone* zone) { // Do not record arguments as pointers. if (op->IsStackSlot() && op->index() < 0) return; ASSERT(!op->IsDoubleRegister() && !op->IsDoubleStackSlot()); - untagged_operands_.Add(op); + untagged_operands_.Add(op, zone); } @@ -219,9 +225,12 @@ int ElementsKindToShiftSize(ElementsKind elements_kind) { return 2; case EXTERNAL_DOUBLE_ELEMENTS: case FAST_DOUBLE_ELEMENTS: + case FAST_HOLEY_DOUBLE_ELEMENTS: return 3; - case FAST_SMI_ONLY_ELEMENTS: + case FAST_SMI_ELEMENTS: case FAST_ELEMENTS: + case FAST_HOLEY_SMI_ELEMENTS: + case FAST_HOLEY_ELEMENTS: case DICTIONARY_ELEMENTS: case NON_STRICT_ARGUMENTS_ELEMENTS: return kPointerSizeLog2; |