atomically updates the element at index i with the resultsof applying the given function , returning the previous value . the function should be side-effect-free , since it may be re-applied when attempted updates fail due to contention among threads . concode_field_sep Unsafe unsafe concode_elem_sep int base concode_elem_sep long[] array concode_elem_sep int shift concode_elem_sep long serialVersionUID concode_field_sep long getAndIncrement concode_elem_sep void set concode_elem_sep long incrementAndGet concode_elem_sep boolean weakCompareAndSet concode_elem_sep int length concode_elem_sep long decrementAndGet concode_elem_sep long updateAndGet concode_elem_sep long byteOffset concode_elem_sep boolean compareAndSet concode_elem_sep long get concode_elem_sep long checkedByteOffset concode_elem_sep void lazySet concode_elem_sep long getAndAdd concode_elem_sep long getRaw concode_elem_sep long addAndGet concode_elem_sep String toString concode_elem_sep long getAndSet concode_elem_sep long getAndDecrement concode_elem_sep boolean compareAndSetRaw concode_elem_sep long getAndAccumulate concode_elem_sep long accumulateAndGet
long function ( int arg0 , LongUnaryOperator arg1 ) { long loc0 = checkedByteOffset ( arg0 ) ; long loc1 , loc2 ; do { loc1 = getRaw ( loc0 ) ; loc2 = arg1 . applyAsLong ( loc1 ) ; } while ( ! compareAndSetRaw ( loc0 , loc1 , loc2 ) ) ; return loc1 ; }