jdk/src/java.base/share/classes/java/lang/invoke/X-VarHandle.java.template
changeset 40734 48879ea67e2a
parent 40733 8d1263354d62
child 45518 4a116dd82fb5
equal deleted inserted replaced
40733:8d1263354d62 40734:48879ea67e2a
   154                                                {#if[Object]?handle.fieldType.cast(expected):expected},
   154                                                {#if[Object]?handle.fieldType.cast(expected):expected},
   155                                                {#if[Object]?handle.fieldType.cast(value):value});
   155                                                {#if[Object]?handle.fieldType.cast(value):value});
   156         }
   156         }
   157 
   157 
   158         @ForceInline
   158         @ForceInline
       
   159         static boolean weakCompareAndSetPlain(FieldInstanceReadWrite handle, Object holder, $type$ expected, $type$ value) {
       
   160             return UNSAFE.weakCompareAndSwap$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)),
       
   161                                                handle.fieldOffset,
       
   162                                                {#if[Object]?handle.fieldType.cast(expected):expected},
       
   163                                                {#if[Object]?handle.fieldType.cast(value):value});
       
   164         }
       
   165 
       
   166         @ForceInline
   159         static boolean weakCompareAndSet(FieldInstanceReadWrite handle, Object holder, $type$ expected, $type$ value) {
   167         static boolean weakCompareAndSet(FieldInstanceReadWrite handle, Object holder, $type$ expected, $type$ value) {
   160             return UNSAFE.weakCompareAndSwap$Type$(Objects.requireNonNull(handle.receiverType.cast(holder)),
       
   161                                                handle.fieldOffset,
       
   162                                                {#if[Object]?handle.fieldType.cast(expected):expected},
       
   163                                                {#if[Object]?handle.fieldType.cast(value):value});
       
   164         }
       
   165 
       
   166         @ForceInline
       
   167         static boolean weakCompareAndSetVolatile(FieldInstanceReadWrite handle, Object holder, $type$ expected, $type$ value) {
       
   168             return UNSAFE.weakCompareAndSwap$Type$Volatile(Objects.requireNonNull(handle.receiverType.cast(holder)),
   168             return UNSAFE.weakCompareAndSwap$Type$Volatile(Objects.requireNonNull(handle.receiverType.cast(holder)),
   169                                                handle.fieldOffset,
   169                                                handle.fieldOffset,
   170                                                {#if[Object]?handle.fieldType.cast(expected):expected},
   170                                                {#if[Object]?handle.fieldType.cast(expected):expected},
   171                                                {#if[Object]?handle.fieldType.cast(value):value});
   171                                                {#if[Object]?handle.fieldType.cast(value):value});
   172         }
   172         }
   422                                                {#if[Object]?handle.fieldType.cast(expected):expected},
   422                                                {#if[Object]?handle.fieldType.cast(expected):expected},
   423                                                {#if[Object]?handle.fieldType.cast(value):value});
   423                                                {#if[Object]?handle.fieldType.cast(value):value});
   424         }
   424         }
   425 
   425 
   426         @ForceInline
   426         @ForceInline
       
   427         static boolean weakCompareAndSetPlain(FieldStaticReadWrite handle, $type$ expected, $type$ value) {
       
   428             return UNSAFE.weakCompareAndSwap$Type$(handle.base,
       
   429                                                handle.fieldOffset,
       
   430                                                {#if[Object]?handle.fieldType.cast(expected):expected},
       
   431                                                {#if[Object]?handle.fieldType.cast(value):value});
       
   432         }
       
   433 
       
   434         @ForceInline
   427         static boolean weakCompareAndSet(FieldStaticReadWrite handle, $type$ expected, $type$ value) {
   435         static boolean weakCompareAndSet(FieldStaticReadWrite handle, $type$ expected, $type$ value) {
   428             return UNSAFE.weakCompareAndSwap$Type$(handle.base,
       
   429                                                handle.fieldOffset,
       
   430                                                {#if[Object]?handle.fieldType.cast(expected):expected},
       
   431                                                {#if[Object]?handle.fieldType.cast(value):value});
       
   432         }
       
   433 
       
   434         @ForceInline
       
   435         static boolean weakCompareAndSetVolatile(FieldStaticReadWrite handle, $type$ expected, $type$ value) {
       
   436             return UNSAFE.weakCompareAndSwap$Type$Volatile(handle.base,
   436             return UNSAFE.weakCompareAndSwap$Type$Volatile(handle.base,
   437                                                handle.fieldOffset,
   437                                                handle.fieldOffset,
   438                                                {#if[Object]?handle.fieldType.cast(expected):expected},
   438                                                {#if[Object]?handle.fieldType.cast(expected):expected},
   439                                                {#if[Object]?handle.fieldType.cast(value):value});
   439                                                {#if[Object]?handle.fieldType.cast(value):value});
   440         }
   440         }
   733                     {#if[Object]?handle.componentType.cast(expected):expected},
   733                     {#if[Object]?handle.componentType.cast(expected):expected},
   734                     {#if[Object]?handle.componentType.cast(value):value});
   734                     {#if[Object]?handle.componentType.cast(value):value});
   735         }
   735         }
   736 
   736 
   737         @ForceInline
   737         @ForceInline
       
   738         static boolean weakCompareAndSetPlain(Array handle, Object oarray, int index, $type$ expected, $type$ value) {
       
   739 #if[Object]
       
   740             Object[] array = (Object[]) handle.arrayType.cast(oarray);
       
   741 #else[Object]
       
   742             $type$[] array = ($type$[]) oarray;
       
   743 #end[Object]
       
   744             return UNSAFE.weakCompareAndSwap$Type$(array,
       
   745                     (((long) Preconditions.checkIndex(index, array.length, AIOOBE_SUPPLIER)) << handle.ashift) + handle.abase,
       
   746                     {#if[Object]?handle.componentType.cast(expected):expected},
       
   747                     {#if[Object]?handle.componentType.cast(value):value});
       
   748         }
       
   749 
       
   750         @ForceInline
   738         static boolean weakCompareAndSet(Array handle, Object oarray, int index, $type$ expected, $type$ value) {
   751         static boolean weakCompareAndSet(Array handle, Object oarray, int index, $type$ expected, $type$ value) {
   739 #if[Object]
       
   740             Object[] array = (Object[]) handle.arrayType.cast(oarray);
       
   741 #else[Object]
       
   742             $type$[] array = ($type$[]) oarray;
       
   743 #end[Object]
       
   744             return UNSAFE.weakCompareAndSwap$Type$(array,
       
   745                     (((long) Preconditions.checkIndex(index, array.length, AIOOBE_SUPPLIER)) << handle.ashift) + handle.abase,
       
   746                     {#if[Object]?handle.componentType.cast(expected):expected},
       
   747                     {#if[Object]?handle.componentType.cast(value):value});
       
   748         }
       
   749 
       
   750         @ForceInline
       
   751         static boolean weakCompareAndSetVolatile(Array handle, Object oarray, int index, $type$ expected, $type$ value) {
       
   752 #if[Object]
   752 #if[Object]
   753             Object[] array = (Object[]) handle.arrayType.cast(oarray);
   753             Object[] array = (Object[]) handle.arrayType.cast(oarray);
   754 #else[Object]
   754 #else[Object]
   755             $type$[] array = ($type$[]) oarray;
   755             $type$[] array = ($type$[]) oarray;
   756 #end[Object]
   756 #end[Object]