Mercurial > hg > truffle
comparison src/os_cpu/solaris_x86/vm/solaris_x86_64.il @ 1547:fb1a39993f69
6951319: enable solaris builds using Sun Studio 12 update 1
Reviewed-by: kamg, ysr, dholmes, johnc
author | jcoomes |
---|---|
date | Tue, 18 May 2010 11:02:18 -0700 |
parents | 0fbdb4381b99 |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
1546:a00b51b2dda4 | 1547:fb1a39993f69 |
---|---|
35 .volatile | 35 .volatile |
36 movq %rbp, %rax | 36 movq %rbp, %rax |
37 .end | 37 .end |
38 | 38 |
39 // Support for jint Atomic::add(jint add_value, volatile jint* dest) | 39 // Support for jint Atomic::add(jint add_value, volatile jint* dest) |
40 // An additional bool (os::is_MP()) is passed as the last argument. | 40 .inline _Atomic_add,2 |
41 .inline _Atomic_add,3 | |
42 movl %edi, %eax // save add_value for return | 41 movl %edi, %eax // save add_value for return |
43 testl %edx, %edx // MP test | |
44 je 1f | |
45 lock | 42 lock |
46 1: xaddl %edi, (%rsi) | 43 xaddl %edi, (%rsi) |
47 addl %edi, %eax | 44 addl %edi, %eax |
48 .end | 45 .end |
49 | 46 |
50 // Support for jlong Atomic::add(jlong add_value, volatile jlong* dest) | 47 // Support for jlong Atomic::add(jlong add_value, volatile jlong* dest) |
51 // An additional bool (os::is_MP()) is passed as the last argument. | 48 .inline _Atomic_add_long,2 |
52 .inline _Atomic_add_long,3 | |
53 movq %rdi, %rax // save add_value for return | 49 movq %rdi, %rax // save add_value for return |
54 testq %rdx, %rdx // MP test | |
55 je 1f | |
56 lock | 50 lock |
57 1: xaddq %rdi, (%rsi) | 51 xaddq %rdi, (%rsi) |
58 addq %rdi, %rax | 52 addq %rdi, %rax |
59 .end | 53 .end |
60 | 54 |
61 // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest). | 55 // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest). |
62 .inline _Atomic_xchg,2 | 56 .inline _Atomic_xchg,2 |
71 .end | 65 .end |
72 | 66 |
73 // Support for jint Atomic::cmpxchg(jint exchange_value, | 67 // Support for jint Atomic::cmpxchg(jint exchange_value, |
74 // volatile jint *dest, | 68 // volatile jint *dest, |
75 // jint compare_value) | 69 // jint compare_value) |
76 // An additional bool (os::is_MP()) is passed as the last argument. | 70 .inline _Atomic_cmpxchg,3 |
77 .inline _Atomic_cmpxchg,4 | |
78 movl %edx, %eax // compare_value | 71 movl %edx, %eax // compare_value |
79 testl %ecx, %ecx // MP test | |
80 je 1f | |
81 lock | 72 lock |
82 1: cmpxchgl %edi, (%rsi) | 73 cmpxchgl %edi, (%rsi) |
83 .end | 74 .end |
84 | 75 |
85 // Support for jlong Atomic::cmpxchg(jlong exchange_value, | 76 // Support for jlong Atomic::cmpxchg(jlong exchange_value, |
86 // volatile jlong* dest, | 77 // volatile jlong* dest, |
87 // jlong compare_value) | 78 // jlong compare_value) |
88 // An additional bool (os::is_MP()) is passed as the last argument. | 79 .inline _Atomic_cmpxchg_long,3 |
89 .inline _Atomic_cmpxchg_long,6 | |
90 movq %rdx, %rax // compare_value | 80 movq %rdx, %rax // compare_value |
91 testq %rcx, %rcx // MP test | |
92 je 1f | |
93 lock | 81 lock |
94 1: cmpxchgq %rdi, (%rsi) | 82 cmpxchgq %rdi, (%rsi) |
95 .end | 83 .end |
96 | 84 |
97 // Support for OrderAccess::acquire() | 85 // Support for OrderAccess::acquire() |
98 .inline _OrderAccess_acquire,0 | 86 .inline _OrderAccess_acquire,0 |
99 movl 0(%rsp), %eax | 87 movl 0(%rsp), %eax |