189 } 190 191 @ForceInline 192 static $type$ getAndSet(FieldInstanceReadWrite handle, Object holder, $type$ value) { 193 return UNSAFE.getAndSet$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)), 194 handle.fieldOffset, 195 {#if[Object]?handle.fieldType.cast(value):value}); 196 } 197 #end[CAS] 198 #if[AtomicAdd] 199 200 @ForceInline 201 static $type$ getAndAdd(FieldInstanceReadWrite handle, Object holder, $type$ value) { 202 return UNSAFE.getAndAdd$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)), 203 handle.fieldOffset, 204 value); 205 } 206 207 @ForceInline 208 static $type$ addAndGet(FieldInstanceReadWrite handle, Object holder, $type$ value) { 209 return UNSAFE.getAndAdd$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)), 210 handle.fieldOffset, 211 value) + value; 212 } 213 #end[AtomicAdd] 214 215 static final VarForm FORM = new VarForm(FieldInstanceReadWrite.class, Object.class, $type$.class); 216 } 217 218 219 static class FieldStaticReadOnly extends VarHandle { 220 final Object base; 221 final long fieldOffset; 222 #if[Object] 223 final Class<?> fieldType; 224 #end[Object] 225 226 FieldStaticReadOnly(Object base, long fieldOffset{#if[Object]?, Class<?> fieldType}) { 227 this(base, fieldOffset{#if[Object]?, fieldType}, FieldStaticReadOnly.FORM); 228 } 229 230 protected FieldStaticReadOnly(Object base, long fieldOffset{#if[Object]?, Class<?> fieldType}, 231 VarForm form) { 371 } 372 373 @ForceInline 374 static $type$ getAndSet(FieldStaticReadWrite handle, $type$ value) { 375 return UNSAFE.getAndSet$Type$(handle.base, 376 handle.fieldOffset, 377 {#if[Object]?handle.fieldType.cast(value):value}); 378 } 379 #end[CAS] 380 #if[AtomicAdd] 381 382 @ForceInline 383 static $type$ getAndAdd(FieldStaticReadWrite handle, $type$ value) { 384 return UNSAFE.getAndAdd$Type$(handle.base, 385 handle.fieldOffset, 386 value); 387 } 388 389 @ForceInline 390 static $type$ addAndGet(FieldStaticReadWrite handle, $type$ value) { 391 return UNSAFE.getAndAdd$Type$(handle.base, 392 handle.fieldOffset, 393 value) + value; 394 } 395 #end[AtomicAdd] 396 397 static final VarForm FORM = new VarForm(FieldStaticReadWrite.class, null, $type$.class); 398 } 399 400 401 static final class Array extends VarHandle { 402 final int abase; 403 final int ashift; 404 #if[Object] 405 final Class<{#if[Object]??:$type$[]}> arrayType; 406 final Class<?> componentType; 407 #end[Object] 408 409 Array(int abase, int ashift{#if[Object]?, Class<?> arrayType}) { 410 super(Array.FORM); 411 this.abase = abase; 412 this.ashift = ashift; 413 #if[Object] 632 633 @ForceInline 634 static $type$ getAndAdd(Array handle, Object oarray, int index, $type$ value) { 635 #if[Object] 636 Object[] array = (Object[]) handle.arrayType.cast(oarray); 637 #else[Object] 638 $type$[] array = ($type$[]) oarray; 639 #end[Object] 640 return UNSAFE.getAndAdd$Type$(array, 641 (((long) Preconditions.checkIndex(index, array.length, AIOOBE_SUPPLIER)) << handle.ashift) + handle.abase, 642 value); 643 } 644 645 @ForceInline 646 static $type$ addAndGet(Array handle, Object oarray, int index, $type$ value) { 647 #if[Object] 648 Object[] array = (Object[]) handle.arrayType.cast(oarray); 649 #else[Object] 650 $type$[] array = ($type$[]) oarray; 651 #end[Object] 652 return UNSAFE.getAndAdd$Type$(array, 653 (((long) Preconditions.checkIndex(index, array.length, AIOOBE_SUPPLIER)) << handle.ashift) + handle.abase, 654 value) + value; 655 } 656 #end[AtomicAdd] 657 658 static final VarForm FORM = new VarForm(Array.class, {#if[Object]?Object[].class:$type$[].class}, {#if[Object]?Object.class:$type$.class}, int.class); 659 } 660 } | 189 } 190 191 @ForceInline 192 static $type$ getAndSet(FieldInstanceReadWrite handle, Object holder, $type$ value) { 193 return UNSAFE.getAndSet$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)), 194 handle.fieldOffset, 195 {#if[Object]?handle.fieldType.cast(value):value}); 196 } 197 #end[CAS] 198 #if[AtomicAdd] 199 200 @ForceInline 201 static $type$ getAndAdd(FieldInstanceReadWrite handle, Object holder, $type$ value) { 202 return UNSAFE.getAndAdd$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)), 203 handle.fieldOffset, 204 value); 205 } 206 207 @ForceInline 208 static $type$ addAndGet(FieldInstanceReadWrite handle, Object holder, $type$ value) { 209 return {#if[ShorterThanInt]?($type$)}(UNSAFE.getAndAdd$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)), 210 handle.fieldOffset, 211 value) + value); 212 } 213 #end[AtomicAdd] 214 215 static final VarForm FORM = new VarForm(FieldInstanceReadWrite.class, Object.class, $type$.class); 216 } 217 218 219 static class FieldStaticReadOnly extends VarHandle { 220 final Object base; 221 final long fieldOffset; 222 #if[Object] 223 final Class<?> fieldType; 224 #end[Object] 225 226 FieldStaticReadOnly(Object base, long fieldOffset{#if[Object]?, Class<?> fieldType}) { 227 this(base, fieldOffset{#if[Object]?, fieldType}, FieldStaticReadOnly.FORM); 228 } 229 230 protected FieldStaticReadOnly(Object base, long fieldOffset{#if[Object]?, Class<?> fieldType}, 231 VarForm form) { 371 } 372 373 @ForceInline 374 static $type$ getAndSet(FieldStaticReadWrite handle, $type$ value) { 375 return UNSAFE.getAndSet$Type$(handle.base, 376 handle.fieldOffset, 377 {#if[Object]?handle.fieldType.cast(value):value}); 378 } 379 #end[CAS] 380 #if[AtomicAdd] 381 382 @ForceInline 383 static $type$ getAndAdd(FieldStaticReadWrite handle, $type$ value) { 384 return UNSAFE.getAndAdd$Type$(handle.base, 385 handle.fieldOffset, 386 value); 387 } 388 389 @ForceInline 390 static $type$ addAndGet(FieldStaticReadWrite handle, $type$ value) { 391 return {#if[ShorterThanInt]?($type$)}(UNSAFE.getAndAdd$Type$(handle.base, 392 handle.fieldOffset, 393 value) + value); 394 } 395 #end[AtomicAdd] 396 397 static final VarForm FORM = new VarForm(FieldStaticReadWrite.class, null, $type$.class); 398 } 399 400 401 static final class Array extends VarHandle { 402 final int abase; 403 final int ashift; 404 #if[Object] 405 final Class<{#if[Object]??:$type$[]}> arrayType; 406 final Class<?> componentType; 407 #end[Object] 408 409 Array(int abase, int ashift{#if[Object]?, Class<?> arrayType}) { 410 super(Array.FORM); 411 this.abase = abase; 412 this.ashift = ashift; 413 #if[Object] 632 633 @ForceInline 634 static $type$ getAndAdd(Array handle, Object oarray, int index, $type$ value) { 635 #if[Object] 636 Object[] array = (Object[]) handle.arrayType.cast(oarray); 637 #else[Object] 638 $type$[] array = ($type$[]) oarray; 639 #end[Object] 640 return UNSAFE.getAndAdd$Type$(array, 641 (((long) Preconditions.checkIndex(index, array.length, AIOOBE_SUPPLIER)) << handle.ashift) + handle.abase, 642 value); 643 } 644 645 @ForceInline 646 static $type$ addAndGet(Array handle, Object oarray, int index, $type$ value) { 647 #if[Object] 648 Object[] array = (Object[]) handle.arrayType.cast(oarray); 649 #else[Object] 650 $type$[] array = ($type$[]) oarray; 651 #end[Object] 652 return {#if[ShorterThanInt]?($type$)}(UNSAFE.getAndAdd$Type$(array, 653 (((long) Preconditions.checkIndex(index, array.length, AIOOBE_SUPPLIER)) << handle.ashift) + handle.abase, 654 value) + value); 655 } 656 #end[AtomicAdd] 657 658 static final VarForm FORM = new VarForm(Array.class, {#if[Object]?Object[].class:$type$[].class}, {#if[Object]?Object.class:$type$.class}, int.class); 659 } 660 } |