--- a/jdk/src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template Mon Jun 06 16:18:01 2016 -0700
+++ b/jdk/src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template Wed Jun 15 11:20:15 2016 +0300
@@ -205,9 +205,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]
@@ -386,9 +386,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]
@@ -646,9 +646,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]