49 # include "atomic_solaris_x86.inline.hpp"
50 #endif
51 #ifdef TARGET_OS_ARCH_solaris_sparc
52 # include "atomic_solaris_sparc.inline.hpp"
53 #endif
54
55 // Windows
56 #ifdef TARGET_OS_ARCH_windows_x86
57 # include "atomic_windows_x86.inline.hpp"
58 #endif
59
60 // AIX
61 #ifdef TARGET_OS_ARCH_aix_ppc
62 # include "atomic_aix_ppc.inline.hpp"
63 #endif
64
65 // BSD
66 #ifdef TARGET_OS_ARCH_bsd_x86
67 # include "atomic_bsd_x86.inline.hpp"
68 #endif
69 #ifdef TARGET_OS_ARCH_bsd_zero
70 # include "atomic_bsd_zero.inline.hpp"
71 #endif
72
73 // size_t casts...
74 #if (SIZE_MAX != UINTPTR_MAX)
75 #error size_t is not WORD_SIZE, interesting platform, but missing implementation here
76 #endif
77
78 inline size_t Atomic::add(size_t add_value, volatile size_t* dest) {
79 return (size_t) add_ptr((intptr_t) add_value, (volatile intptr_t*) dest);
80 }
81
82 inline void Atomic::inc(volatile size_t* dest) {
83 inc_ptr((volatile intptr_t*) dest);
84 }
85
86 inline void Atomic::dec(volatile size_t* dest) {
87 dec_ptr((volatile intptr_t*) dest);
88 }
89
90 #ifndef VM_HAS_SPECIALIZED_CMPXCHG_BYTE
91 // See comment in atomic.cpp how to override.
92 inline jbyte Atomic::cmpxchg(jbyte exchange_value, volatile jbyte *dest, jbyte comparand)
93 {
94 return cmpxchg_general(exchange_value, dest, comparand);
95 }
96 #endif // VM_HAS_SPECIALIZED_CMPXCHG_BYTE
97
98 #endif // SHARE_VM_RUNTIME_ATOMIC_INLINE_HPP
|
49 # include "atomic_solaris_x86.inline.hpp"
50 #endif
51 #ifdef TARGET_OS_ARCH_solaris_sparc
52 # include "atomic_solaris_sparc.inline.hpp"
53 #endif
54
55 // Windows
56 #ifdef TARGET_OS_ARCH_windows_x86
57 # include "atomic_windows_x86.inline.hpp"
58 #endif
59
60 // AIX
61 #ifdef TARGET_OS_ARCH_aix_ppc
62 # include "atomic_aix_ppc.inline.hpp"
63 #endif
64
65 // BSD
66 #ifdef TARGET_OS_ARCH_bsd_x86
67 # include "atomic_bsd_x86.inline.hpp"
68 #endif
69
70 #ifdef TARGET_OS_ARCH_bsd_zero
71 # include "atomic_bsd_zero.inline.hpp"
72 #endif
73
74 // size_t casts...
75 #if (SIZE_MAX != UINTPTR_MAX)
76 #error size_t is not WORD_SIZE, interesting platform, but missing implementation here
77 #endif
78
79 inline size_t Atomic::add(size_t add_value, volatile size_t* dest) {
80 return (size_t) add_ptr((intptr_t) add_value, (volatile intptr_t*) dest);
81 }
82
83 inline void Atomic::inc(volatile size_t* dest) {
84 inc_ptr((volatile intptr_t*) dest);
85 }
86
87 inline void Atomic::dec(volatile size_t* dest) {
88 dec_ptr((volatile intptr_t*) dest);
89 }
90
91 inline jbyte Atomic::cmpxchg(jbyte exchange_value, volatile jbyte* dest, jbyte compare_value) {
92 return AtomicSuper::cmpxchg(exchange_value, dest, compare_value);
93 }
94
95 #endif // SHARE_VM_RUNTIME_ATOMIC_INLINE_HPP
|