| Index: src/x64/virtual-frame-x64.cc
|
| ===================================================================
|
| --- src/x64/virtual-frame-x64.cc (revision 3964)
|
| +++ src/x64/virtual-frame-x64.cc (working copy)
|
| @@ -30,29 +30,13 @@
|
| #include "codegen-inl.h"
|
| #include "register-allocator-inl.h"
|
| #include "scopes.h"
|
| +#include "virtual-frame-inl.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
|
|
| #define __ ACCESS_MASM(masm())
|
|
|
| -// -------------------------------------------------------------------------
|
| -// VirtualFrame implementation.
|
| -
|
| -// On entry to a function, the virtual frame already contains the receiver,
|
| -// the parameters, and a return address. All frame elements are in memory.
|
| -VirtualFrame::VirtualFrame()
|
| - : elements_(parameter_count() + local_count() + kPreallocatedElements),
|
| - stack_pointer_(parameter_count() + 1) { // 0-based index of TOS.
|
| - for (int i = 0; i <= stack_pointer_; i++) {
|
| - elements_.Add(FrameElement::MemoryElement(NumberInfo::kUnknown));
|
| - }
|
| - for (int i = 0; i < RegisterAllocator::kNumRegisters; i++) {
|
| - register_locations_[i] = kIllegalIndex;
|
| - }
|
| -}
|
| -
|
| -
|
| void VirtualFrame::Enter() {
|
| // Registers live on entry to a JS frame:
|
| // rsp: stack pointer, points to return address from this function.
|
| @@ -193,7 +177,7 @@
|
| }
|
|
|
|
|
| -void VirtualFrame::EmitPush(Register reg, NumberInfo::Type info) {
|
| +void VirtualFrame::EmitPush(Register reg, NumberInfo info) {
|
| ASSERT(stack_pointer_ == element_count() - 1);
|
| elements_.Add(FrameElement::MemoryElement(info));
|
| stack_pointer_++;
|
| @@ -201,7 +185,7 @@
|
| }
|
|
|
|
|
| -void VirtualFrame::EmitPush(const Operand& operand, NumberInfo::Type info) {
|
| +void VirtualFrame::EmitPush(const Operand& operand, NumberInfo info) {
|
| ASSERT(stack_pointer_ == element_count() - 1);
|
| elements_.Add(FrameElement::MemoryElement(info));
|
| stack_pointer_++;
|
| @@ -209,7 +193,7 @@
|
| }
|
|
|
|
|
| -void VirtualFrame::EmitPush(Immediate immediate, NumberInfo::Type info) {
|
| +void VirtualFrame::EmitPush(Immediate immediate, NumberInfo info) {
|
| ASSERT(stack_pointer_ == element_count() - 1);
|
| elements_.Add(FrameElement::MemoryElement(info));
|
| stack_pointer_++;
|
| @@ -219,7 +203,7 @@
|
|
|
| void VirtualFrame::EmitPush(Smi* smi_value) {
|
| ASSERT(stack_pointer_ == element_count() - 1);
|
| - elements_.Add(FrameElement::MemoryElement(NumberInfo::kSmi));
|
| + elements_.Add(FrameElement::MemoryElement(NumberInfo::Smi()));
|
| stack_pointer_++;
|
| __ Push(smi_value);
|
| }
|
| @@ -227,11 +211,11 @@
|
|
|
| void VirtualFrame::EmitPush(Handle<Object> value) {
|
| ASSERT(stack_pointer_ == element_count() - 1);
|
| - NumberInfo::Type info = NumberInfo::kUnknown;
|
| + NumberInfo info = NumberInfo::Unknown();
|
| if (value->IsSmi()) {
|
| - info = NumberInfo::kSmi;
|
| + info = NumberInfo::Smi();
|
| } else if (value->IsHeapNumber()) {
|
| - info = NumberInfo::kHeapNumber;
|
| + info = NumberInfo::HeapNumber();
|
| }
|
| elements_.Add(FrameElement::MemoryElement(info));
|
| stack_pointer_++;
|
| @@ -239,7 +223,7 @@
|
| }
|
|
|
|
|
| -void VirtualFrame::EmitPush(Heap::RootListIndex index, NumberInfo::Type info) {
|
| +void VirtualFrame::EmitPush(Heap::RootListIndex index, NumberInfo info) {
|
| ASSERT(stack_pointer_ == element_count() - 1);
|
| elements_.Add(FrameElement::MemoryElement(info));
|
| stack_pointer_++;
|
| @@ -496,7 +480,7 @@
|
| if (element.is_constant() || element.is_copy()) {
|
| if (element.is_synced()) {
|
| // Just spill.
|
| - elements_[i] = FrameElement::MemoryElement(NumberInfo::kUnknown);
|
| + elements_[i] = FrameElement::MemoryElement(NumberInfo::Unknown());
|
| } else {
|
| // Allocate to a register.
|
| FrameElement backing_element; // Invalid if not a copy.
|
| @@ -508,7 +492,7 @@
|
| elements_[i] =
|
| FrameElement::RegisterElement(fresh.reg(),
|
| FrameElement::NOT_SYNCED,
|
| - NumberInfo::kUnknown);
|
| + NumberInfo::Unknown());
|
| Use(fresh.reg(), i);
|
|
|
| // Emit a move.
|
| @@ -537,7 +521,7 @@
|
| // The copy flag is not relied on before the end of this loop,
|
| // including when registers are spilled.
|
| elements_[i].clear_copied();
|
| - elements_[i].set_number_info(NumberInfo::kUnknown);
|
| + elements_[i].set_number_info(NumberInfo::Unknown());
|
| }
|
| }
|
| }
|
| @@ -744,7 +728,7 @@
|
| ASSERT(element.is_valid());
|
|
|
| // Get number type information of the result.
|
| - NumberInfo::Type info;
|
| + NumberInfo info;
|
| if (!element.is_copy()) {
|
| info = element.number_info();
|
| } else {
|
|
|