< prev index next >

src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template

Print this page




 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 }
< prev index next >