Index: runtime/vm/assembler_macros_x64.cc |
=================================================================== |
--- runtime/vm/assembler_macros_x64.cc (revision 19430) |
+++ runtime/vm/assembler_macros_x64.cc (working copy) |
@@ -1,79 +0,0 @@ |
-// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
-// for details. All rights reserved. Use of this source code is governed by a |
-// BSD-style license that can be found in the LICENSE file. |
- |
-#include "vm/globals.h" |
-#if defined(TARGET_ARCH_X64) |
- |
-#include "vm/assembler_macros.h" |
- |
-#include "vm/assembler.h" |
- |
-namespace dart { |
- |
-DECLARE_FLAG(bool, inline_alloc); |
- |
-#define __ assembler-> |
- |
-// Static. |
-void AssemblerMacros::TryAllocate(Assembler* assembler, |
- const Class& cls, |
- Label* failure, |
- bool near_jump, |
- Register instance_reg) { |
- ASSERT(failure != NULL); |
- if (FLAG_inline_alloc) { |
- Heap* heap = Isolate::Current()->heap(); |
- const intptr_t instance_size = cls.instance_size(); |
- __ movq(TMP, Immediate(heap->TopAddress())); |
- __ movq(instance_reg, Address(TMP, 0)); |
- __ addq(instance_reg, Immediate(instance_size)); |
- // instance_reg: potential next object start. |
- __ movq(TMP, Immediate(heap->EndAddress())); |
- __ cmpq(instance_reg, Address(TMP, 0)); |
- __ j(ABOVE_EQUAL, failure, near_jump); |
- // Successfully allocated the object, now update top to point to |
- // next object start and store the class in the class field of object. |
- __ movq(TMP, Immediate(heap->TopAddress())); |
- __ movq(Address(TMP, 0), instance_reg); |
- ASSERT(instance_size >= kHeapObjectTag); |
- __ subq(instance_reg, Immediate(instance_size - kHeapObjectTag)); |
- uword tags = 0; |
- tags = RawObject::SizeTag::update(instance_size, tags); |
- ASSERT(cls.id() != kIllegalCid); |
- tags = RawObject::ClassIdTag::update(cls.id(), tags); |
- __ movq(FieldAddress(instance_reg, Object::tags_offset()), Immediate(tags)); |
- } else { |
- __ jmp(failure); |
- } |
-} |
- |
- |
-void AssemblerMacros::EnterDartFrame(Assembler* assembler, |
- intptr_t frame_size) { |
- const intptr_t offset = assembler->CodeSize(); |
- __ EnterFrame(0); |
- Label dart_entry; |
- __ call(&dart_entry); |
- __ Bind(&dart_entry); |
- // Adjust saved PC for any intrinsic code that could have been generated |
- // before a frame is created. |
- if (offset != 0) { |
- __ addq(Address(RSP, 0), Immediate(-offset)); |
- } |
- if (frame_size != 0) { |
- __ subq(RSP, Immediate(frame_size)); |
- } |
-} |
- |
- |
-void AssemblerMacros::EnterStubFrame(Assembler* assembler) { |
- __ EnterFrame(0); |
- __ pushq(Immediate(0)); // Push 0 in the saved PC area for stub frames. |
-} |
- |
-#undef __ |
- |
-} // namespace dart |
- |
-#endif // defined TARGET_ARCH_X64 |