OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 #include "vm/globals.h" // NOLINT | 5 #include "vm/globals.h" // NOLINT |
6 #if defined(TARGET_ARCH_X64) | 6 #if defined(TARGET_ARCH_X64) |
7 | 7 |
8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
9 #include "vm/cpu.h" | 9 #include "vm/cpu.h" |
10 #include "vm/heap.h" | 10 #include "vm/heap.h" |
(...skipping 3585 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3596 | 3596 |
3597 | 3597 |
3598 void Assembler::TryAllocateArray(intptr_t cid, | 3598 void Assembler::TryAllocateArray(intptr_t cid, |
3599 intptr_t instance_size, | 3599 intptr_t instance_size, |
3600 Label* failure, | 3600 Label* failure, |
3601 bool near_jump, | 3601 bool near_jump, |
3602 Register instance, | 3602 Register instance, |
3603 Register end_address) { | 3603 Register end_address) { |
3604 ASSERT(failure != NULL); | 3604 ASSERT(failure != NULL); |
3605 if (FLAG_inline_alloc) { | 3605 if (FLAG_inline_alloc) { |
| 3606 // If this allocation is traced, program will jump to failure path |
| 3607 // (i.e. the allocation stub) which will allocate the object and trace the |
| 3608 // allocation call site. |
| 3609 MaybeTraceAllocation(cid, failure, near_jump); |
3606 Isolate* isolate = Isolate::Current(); | 3610 Isolate* isolate = Isolate::Current(); |
3607 Heap* heap = isolate->heap(); | 3611 Heap* heap = isolate->heap(); |
3608 Heap::Space space = heap->SpaceForAllocation(cid); | 3612 Heap::Space space = heap->SpaceForAllocation(cid); |
3609 movq(instance, Immediate(heap->TopAddress(space))); | 3613 movq(instance, Immediate(heap->TopAddress(space))); |
3610 movq(instance, Address(instance, 0)); | 3614 movq(instance, Address(instance, 0)); |
3611 movq(end_address, RAX); | 3615 movq(end_address, RAX); |
3612 | 3616 |
3613 addq(end_address, Immediate(instance_size)); | 3617 addq(end_address, Immediate(instance_size)); |
3614 j(CARRY, failure); | 3618 j(CARRY, failure); |
3615 | 3619 |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3963 | 3967 |
3964 | 3968 |
3965 const char* Assembler::FpuRegisterName(FpuRegister reg) { | 3969 const char* Assembler::FpuRegisterName(FpuRegister reg) { |
3966 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); | 3970 ASSERT((0 <= reg) && (reg < kNumberOfXmmRegisters)); |
3967 return xmm_reg_names[reg]; | 3971 return xmm_reg_names[reg]; |
3968 } | 3972 } |
3969 | 3973 |
3970 } // namespace dart | 3974 } // namespace dart |
3971 | 3975 |
3972 #endif // defined TARGET_ARCH_X64 | 3976 #endif // defined TARGET_ARCH_X64 |
OLD | NEW |