comparison src/os_cpu/solaris_x86/vm/solaris_x86_32.il @ 2114:4fc084dac61e

7009756: volatile variables could be broken throw reflection API Summary: Use Atomic::load() and Atomic::store() to access a volatile long. Reviewed-by: iveresov, jrose, dholmes, never
author kvn
date Fri, 07 Jan 2011 10:16:57 -0800
parents c18cbe5936b8
children bb8e3b66bde6
comparison
equal deleted inserted replaced
2113:0e52ef6e94d3 2114:4fc084dac61e
1 // 1 //
2 // Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved. 2 // Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 // 4 //
5 // This code is free software; you can redistribute it and/or modify it 5 // This code is free software; you can redistribute it and/or modify it
6 // under the terms of the GNU General Public License version 2 only, as 6 // under the terms of the GNU General Public License version 2 only, as
7 // published by the Free Software Foundation. 7 // published by the Free Software Foundation.
102 cmpxchg8b (%edi) 102 cmpxchg8b (%edi)
103 2: popl %edi 103 2: popl %edi
104 popl %ebx 104 popl %ebx
105 .end 105 .end
106 106
107 // Support for void Atomic::load(volatile jlong* src, volatile jlong* dest). 107 // Support for jlong Atomic::load and Atomic::store.
108 .inline _Atomic_load_long,2 108 // void _Atomic_move_long(volatile jlong* src, volatile jlong* dst)
109 .inline _Atomic_move_long,2
109 movl 0(%esp), %eax // src 110 movl 0(%esp), %eax // src
110 fildll (%eax) 111 fildll (%eax)
111 movl 4(%esp), %eax // dest 112 movl 4(%esp), %eax // dest
112 fistpll (%eax) 113 fistpll (%eax)
113 .end 114 .end