< prev index next >

src/os_cpu/solaris_sparc/vm/solaris_sparc.il

Print this page
rev 13323 : imported patch Atomic_refactoring
rev 13327 : [mq]: SpecializableAtomic

*** 30,40 **** mov %g7, %o0 .nonvolatile .end ! // Support for jint Atomic::xchg(jint exchange_value, volatile jint* dest). // // Arguments: // exchange_value: O0 // dest: O1 // --- 30,40 ---- mov %g7, %o0 .nonvolatile .end ! // Support for int32_t GeneralizedAtomic::specialized_xchg(int32_t exchange_value, volatile int32_t* dest). // // Arguments: // exchange_value: O0 // dest: O1 //
*** 46,56 **** swap [%o1],%o0 .nonvolatile .end ! // Support for intptr_t Atomic::xchg_ptr(intptr_t exchange_value, volatile intptr_t * dest). // // 64-bit // // Arguments: // exchange_value: O0 --- 46,56 ---- swap [%o1],%o0 .nonvolatile .end ! // Support for int64_t GeneralizedAtomic::specialized_xchg(int64_t exchange_value, volatile int64_t * dest). // // 64-bit // // Arguments: // exchange_value: O0
*** 71,83 **** mov %o2, %o0 .nonvolatile .end ! // Support for jint Atomic::cmpxchg(jint exchange_value, ! // volatile jint* dest, ! // jint compare_value) // // Arguments: // exchange_value: O0 // dest: O1 // compare_value: O2 --- 71,83 ---- mov %o2, %o0 .nonvolatile .end ! // Support for int32_t GeneralizedAtomic::specialized_cmpxchg(int32_t exchange_value, ! // volatile int32_t* dest, ! // int32_t compare_value) // // Arguments: // exchange_value: O0 // dest: O1 // compare_value: O2
*** 90,102 **** cas [%o1], %o2, %o0 .nonvolatile .end ! // Support for intptr_t Atomic::cmpxchg_ptr(intptr_t exchange_value, ! // volatile intptr_t* dest, ! // intptr_t compare_value) // // 64-bit // // Arguments: // exchange_value: O0 --- 90,102 ---- cas [%o1], %o2, %o0 .nonvolatile .end ! // Support for int64_t GeneralizedAtomic::specialized_cmpxchg(int64_t exchange_value, ! // volatile int64_t* dest, ! // int64_t compare_value) // // 64-bit // // Arguments: // exchange_value: O0
*** 111,166 **** casx [%o1], %o2, %o0 .nonvolatile .end ! // Support for jlong Atomic::cmpxchg(jlong exchange_value, ! // volatile jlong* dest, ! // jlong compare_value) ! // ! // 32-bit calling conventions ! // ! // Arguments: ! // exchange_value: O1:O0 ! // dest: O2 ! // compare_value: O4:O3 ! // ! // Results: ! // O1:O0: the value previously stored in dest ! ! .inline _Atomic_casl, 3 ! .volatile ! sllx %o0, 32, %o0 ! srl %o1, 0, %o1 ! or %o0,%o1,%o0 ! sllx %o3, 32, %o3 ! srl %o4, 0, %o4 ! or %o3,%o4,%o3 ! casx [%o2], %o3, %o0 ! srl %o0, 0, %o1 ! srlx %o0, 32, %o0 ! .nonvolatile ! .end ! ! // Support for jlong Atomic::load and Atomic::store on v9. ! // ! // void _Atomic_move_long_v9(volatile jlong* src, volatile jlong* dst) ! // ! // Arguments: ! // src: O0 ! // dest: O1 ! // ! // Overwrites O2 ! ! .inline _Atomic_move_long_v9,2 ! .volatile ! ldx [%o0], %o2 ! stx %o2, [%o1] ! .nonvolatile ! .end ! ! // Support for jint Atomic::add(jint add_value, volatile jint* dest). // // Arguments: // add_value: O0 (e.g., +1 or -1) // dest: O1 // --- 111,121 ---- casx [%o1], %o2, %o0 .nonvolatile .end ! // Support for int32_t GeneralizedAtomic::specialized_add(int32_t add_value, volatile int32_t* dest). // // Arguments: // add_value: O0 (e.g., +1 or -1) // dest: O1 //
*** 181,191 **** add %o0, %o2, %o0 .nonvolatile .end ! // Support for intptr_t Atomic::add_ptr(intptr_t add_value, volatile intptr_t* dest) // // 64-bit // // Arguments: // add_value: O0 (e.g., +1 or -1) --- 136,146 ---- add %o0, %o2, %o0 .nonvolatile .end ! // Support for int64_t GeneralizedAtomic::specialized_add(int64_t add_value, volatile int64_t* dest) // // 64-bit // // Arguments: // add_value: O0 (e.g., +1 or -1)
< prev index next >