| OLD | NEW |
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2011, 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 #ifndef VM_ASSEMBLER_IA32_H_ | 5 #ifndef VM_ASSEMBLER_IA32_H_ |
| 6 #define VM_ASSEMBLER_IA32_H_ | 6 #define VM_ASSEMBLER_IA32_H_ |
| 7 | 7 |
| 8 #ifndef VM_ASSEMBLER_H_ | 8 #ifndef VM_ASSEMBLER_H_ |
| 9 #error Do not include assembler_ia32.h directly; use assembler.h instead. | 9 #error Do not include assembler_ia32.h directly; use assembler.h instead. |
| 10 #endif | 10 #endif |
| 11 | 11 |
| 12 #include "vm/assert.h" | 12 #include "vm/assert.h" |
| 13 #include "vm/constants_ia32.h" | 13 #include "vm/constants_ia32.h" |
| 14 #include "vm/utils.h" | 14 #include "vm/utils.h" |
| 15 | 15 |
| 16 namespace dart { | 16 namespace dart { |
| 17 | 17 |
| 18 // Forward declarations. | 18 // Forward declarations. |
| 19 class RuntimeEntry; | 19 class RuntimeEntry; |
| 20 | 20 |
| 21 | 21 |
| 22 #if defined(TESTING) || defined(DEBUG) | 22 #if defined(TESTING) || defined(DEBUG) |
| 23 | 23 |
| 24 #if defined(TARGET_OS_WINDOWS) | 24 #if defined(TARGET_OS_WINDOWS) |
| 25 #define CHECK_STACK_ALIGNMENT { \ | 25 // The compiler may dynamically align the stack on Windows, so do not check. |
| 26 uword current_sp; \ | 26 #define CHECK_STACK_ALIGNMENT { } |
| 27 __asm { mov current_sp, esp } \ | |
| 28 ASSERT((OS::ActivationFrameAlignment() == 0) || \ | |
| 29 (Utils::IsAligned(current_sp, OS::ActivationFrameAlignment()))); \ | |
| 30 } | |
| 31 #else | 27 #else |
| 32 #define CHECK_STACK_ALIGNMENT { \ | 28 #define CHECK_STACK_ALIGNMENT { \ |
| 33 uword current_sp; \ | 29 uword current_sp; \ |
| 34 asm volatile("mov %%esp, %[current_sp]" : [current_sp] "=r" (current_sp)); \ | 30 asm volatile("mov %%esp, %[current_sp]" : [current_sp] "=r" (current_sp)); \ |
| 35 ASSERT((OS::ActivationFrameAlignment() == 0) || \ | 31 ASSERT((OS::ActivationFrameAlignment() == 0) || \ |
| 36 (Utils::IsAligned(current_sp, OS::ActivationFrameAlignment()))); \ | 32 (Utils::IsAligned(current_sp, OS::ActivationFrameAlignment()))); \ |
| 37 } | 33 } |
| 38 #endif | 34 #endif |
| 39 | 35 |
| 40 #else | 36 #else |
| (...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 } | 610 } |
| 615 | 611 |
| 616 | 612 |
| 617 inline void Assembler::EmitOperandSizeOverride() { | 613 inline void Assembler::EmitOperandSizeOverride() { |
| 618 EmitUint8(0x66); | 614 EmitUint8(0x66); |
| 619 } | 615 } |
| 620 | 616 |
| 621 } // namespace dart | 617 } // namespace dart |
| 622 | 618 |
| 623 #endif // VM_ASSEMBLER_IA32_H_ | 619 #endif // VM_ASSEMBLER_IA32_H_ |
| OLD | NEW |