--- old/src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template 2016-05-31 12:16:45.258378200 +0300 +++ new/src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template 2016-05-31 12:16:45.166378532 +0300 @@ -206,9 +206,9 @@ @ForceInline static $type$ addAndGet(FieldInstanceReadWrite handle, Object holder, $type$ value) { - return UNSAFE.getAndAdd$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)), + return {#if[ShorterThanInt]?($type$)}(UNSAFE.getAndAdd$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)), handle.fieldOffset, - value) + value; + value) + value); } #end[AtomicAdd] @@ -388,9 +388,9 @@ @ForceInline static $type$ addAndGet(FieldStaticReadWrite handle, $type$ value) { - return UNSAFE.getAndAdd$Type$(handle.base, + return {#if[ShorterThanInt]?($type$)}(UNSAFE.getAndAdd$Type$(handle.base, handle.fieldOffset, - value) + value; + value) + value); } #end[AtomicAdd] @@ -649,9 +649,9 @@ #else[Object] $type$[] array = ($type$[]) oarray; #end[Object] - return UNSAFE.getAndAdd$Type$(array, + return {#if[ShorterThanInt]?($type$)}(UNSAFE.getAndAdd$Type$(array, (((long) Preconditions.checkIndex(index, array.length, AIOOBE_SUPPLIER)) << handle.ashift) + handle.abase, - value) + value; + value) + value); } #end[AtomicAdd]