src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 7017124 Sdiff src/os_cpu/solaris_sparc/vm

src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp

Print this page




  50 
  51 inline void Atomic::dec    (volatile jint*     dest) { (void)add    (-1, dest); }
  52 inline void Atomic::dec_ptr(volatile intptr_t* dest) { (void)add_ptr(-1, dest); }
  53 inline void Atomic::dec_ptr(volatile void*     dest) { (void)add_ptr(-1, dest); }
  54 
  55 
  56 #ifdef _LP64
  57 
  58 inline void Atomic::store(jlong store_value, jlong* dest) { *dest = store_value; }
  59 inline void Atomic::store(jlong store_value, volatile jlong* dest) { *dest = store_value; }
  60 inline jlong Atomic::load(volatile jlong* src) { return *src; }
  61 
  62 #else
  63 
  64 extern "C" void _Atomic_move_long_v8(volatile jlong* src, volatile jlong* dst);
  65 extern "C" void _Atomic_move_long_v9(volatile jlong* src, volatile jlong* dst);
  66 
  67 inline void Atomic_move_long(volatile jlong* src, volatile jlong* dst) {
  68 #ifdef COMPILER2
  69   // Compiler2 does not support v8, it is used only for v9.
  70   assert (VM_Version::v9_instructions_work(), "only supported on v9");
  71   _Atomic_move_long_v9(src, dst);
  72 #else
  73   // The branch is cheaper then emulated LDD.
  74   if (VM_Version::v9_instructions_work()) {
  75     _Atomic_move_long_v9(src, dst);
  76   } else {
  77     _Atomic_move_long_v8(src, dst);
  78   }
  79 #endif
  80 }
  81 
  82 inline jlong Atomic::load(volatile jlong* src) {
  83   volatile jlong dest;
  84   Atomic_move_long(src, &dest);
  85   return dest;
  86 }
  87 
  88 inline void Atomic::store(jlong store_value, jlong* dest) {
  89   Atomic_move_long((volatile jlong*)&store_value, (volatile jlong*)dest);
  90 }




  50 
  51 inline void Atomic::dec    (volatile jint*     dest) { (void)add    (-1, dest); }
  52 inline void Atomic::dec_ptr(volatile intptr_t* dest) { (void)add_ptr(-1, dest); }
  53 inline void Atomic::dec_ptr(volatile void*     dest) { (void)add_ptr(-1, dest); }
  54 
  55 
  56 #ifdef _LP64
  57 
  58 inline void Atomic::store(jlong store_value, jlong* dest) { *dest = store_value; }
  59 inline void Atomic::store(jlong store_value, volatile jlong* dest) { *dest = store_value; }
  60 inline jlong Atomic::load(volatile jlong* src) { return *src; }
  61 
  62 #else
  63 
  64 extern "C" void _Atomic_move_long_v8(volatile jlong* src, volatile jlong* dst);
  65 extern "C" void _Atomic_move_long_v9(volatile jlong* src, volatile jlong* dst);
  66 
  67 inline void Atomic_move_long(volatile jlong* src, volatile jlong* dst) {
  68 #ifdef COMPILER2
  69   // Compiler2 does not support v8, it is used only for v9.

  70   _Atomic_move_long_v9(src, dst);
  71 #else
  72   // The branch is cheaper then emulated LDD.
  73   if (VM_Version::v9_instructions_work()) {
  74     _Atomic_move_long_v9(src, dst);
  75   } else {
  76     _Atomic_move_long_v8(src, dst);
  77   }
  78 #endif
  79 }
  80 
  81 inline jlong Atomic::load(volatile jlong* src) {
  82   volatile jlong dest;
  83   Atomic_move_long(src, &dest);
  84   return dest;
  85 }
  86 
  87 inline void Atomic::store(jlong store_value, jlong* dest) {
  88   Atomic_move_long((volatile jlong*)&store_value, (volatile jlong*)dest);
  89 }


src/os_cpu/solaris_sparc/vm/atomic_solaris_sparc.inline.hpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File