Mercurial > hg > truffle
comparison src/os_cpu/solaris_x86/vm/solaris_x86_32.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 | 665be97e8704 |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
1546:a00b51b2dda4 | 1547:fb1a39993f69 |
---|---|
48 .inline _Atomic_add,3 | 48 .inline _Atomic_add,3 |
49 movl 0(%esp), %eax // inc | 49 movl 0(%esp), %eax // inc |
50 movl 4(%esp), %edx // dest | 50 movl 4(%esp), %edx // dest |
51 movl %eax, %ecx | 51 movl %eax, %ecx |
52 cmpl $0, 8(%esp) // MP test | 52 cmpl $0, 8(%esp) // MP test |
53 je 1f | 53 jne 1f |
54 lock | 54 xaddl %eax, (%edx) |
55 1: xaddl %eax, (%edx) | 55 jmp 2f |
56 addl %ecx, %eax | 56 1: lock |
57 xaddl %eax, (%edx) | |
58 2: addl %ecx, %eax | |
57 .end | 59 .end |
58 | 60 |
59 // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest). | 61 // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest). |
60 .inline _Atomic_xchg,2 | 62 .inline _Atomic_xchg,2 |
61 movl 0(%esp), %eax // exchange_value | 63 movl 0(%esp), %eax // exchange_value |
70 .inline _Atomic_cmpxchg,4 | 72 .inline _Atomic_cmpxchg,4 |
71 movl 8(%esp), %eax // compare_value | 73 movl 8(%esp), %eax // compare_value |
72 movl 0(%esp), %ecx // exchange_value | 74 movl 0(%esp), %ecx // exchange_value |
73 movl 4(%esp), %edx // dest | 75 movl 4(%esp), %edx // dest |
74 cmp $0, 12(%esp) // MP test | 76 cmp $0, 12(%esp) // MP test |
75 je 1f | 77 jne 1f |
76 lock | 78 cmpxchgl %ecx, (%edx) |
77 1: cmpxchgl %ecx, (%edx) | 79 jmp 2f |
80 1: lock | |
81 cmpxchgl %ecx, (%edx) | |
82 2: | |
78 .end | 83 .end |
79 | 84 |
80 // Support for jlong Atomic::cmpxchg(jlong exchange_value, | 85 // Support for jlong Atomic::cmpxchg(jlong exchange_value, |
81 // volatile jlong* dest, | 86 // volatile jlong* dest, |
82 // jlong compare_value) | 87 // jlong compare_value) |
88 movl 24(%esp), %edx // compare_value (high) | 93 movl 24(%esp), %edx // compare_value (high) |
89 movl 16(%esp), %edi // dest | 94 movl 16(%esp), %edi // dest |
90 movl 8(%esp), %ebx // exchange_value (low) | 95 movl 8(%esp), %ebx // exchange_value (low) |
91 movl 12(%esp), %ecx // exchange_high (high) | 96 movl 12(%esp), %ecx // exchange_high (high) |
92 cmp $0, 28(%esp) // MP test | 97 cmp $0, 28(%esp) // MP test |
93 je 1f | 98 jne 1f |
94 lock | 99 cmpxchg8b (%edi) |
95 1: cmpxchg8b (%edi) | 100 jmp 2f |
96 popl %edi | 101 1: lock |
102 cmpxchg8b (%edi) | |
103 2: popl %edi | |
97 popl %ebx | 104 popl %ebx |
98 .end | 105 .end |
99 | 106 |
100 // Support for void Atomic::load(volatile jlong* src, volatile jlong* dest). | 107 // Support for void Atomic::load(volatile jlong* src, volatile jlong* dest). |
101 .inline _Atomic_load_long,2 | 108 .inline _Atomic_load_long,2 |