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 |