< prev index next >

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

Print this page
@@ -41,11 +41,11 @@
  
      static final boolean BE = UNSAFE.isBigEndian();
  
      static final ScopedMemoryAccess SCOPED_MEMORY_ACCESS = ScopedMemoryAccess.getScopedMemoryAccess();
  
-     static final int VM_ALIGN = $BoxType$.BYTES - 1;
+     static final int NON_PLAIN_ACCESS_MIN_ALIGN_MASK = $BoxType$.BYTES - 1;
  
      static final VarForm FORM = new VarForm(VarHandleSegmentAs$Type$s.class, MemorySegment.class, $type$.class, long.class);
  
      VarHandleSegmentAs$Type$s(boolean be, long length, long alignmentMask, boolean exact) {
          super(FORM, be, length, alignmentMask, exact);

@@ -102,20 +102,19 @@
          oo.checkAccess(offset, length, ro);
          return oo;
      }
  
      @ForceInline
-     static long offset(AbstractMemorySegmentImpl bb, long offset, long alignmentMask) {
-         long address = offsetNoVMAlignCheck(bb, offset, alignmentMask);
-         if ((address & VM_ALIGN) != 0) {
-             throw VarHandleSegmentViewBase.newIllegalArgumentExceptionForMisalignedAccess(address);
+     static long offsetNonPlain(AbstractMemorySegmentImpl bb, long offset, long alignmentMask) {
+         if ((alignmentMask & NON_PLAIN_ACCESS_MIN_ALIGN_MASK) != NON_PLAIN_ACCESS_MIN_ALIGN_MASK) {
+             throw VarHandleSegmentViewBase.newUnsupportedAccessModeForAlignment(alignmentMask + 1);
          }
-         return address;
+         return offsetPlain(bb, offset, alignmentMask);
      }
  
      @ForceInline
-     static long offsetNoVMAlignCheck(AbstractMemorySegmentImpl bb, long offset, long alignmentMask) {
+     static long offsetPlain(AbstractMemorySegmentImpl bb, long offset, long alignmentMask) {
          long base = bb.unsafeGetOffset();
          long address = base + offset;
          long maxAlignMask = bb.maxAlignMask();
          if (((address | maxAlignMask) & alignmentMask) != 0) {
              throw VarHandleSegmentViewBase.newIllegalArgumentExceptionForMisalignedAccess(address);

@@ -128,22 +127,22 @@
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, true);
  #if[floatingPoint]
          $rawType$ rawValue = SCOPED_MEMORY_ACCESS.get$RawType$Unaligned(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offsetNoVMAlignCheck(bb, base, handle.alignmentMask),
+                 offsetPlain(bb, base, handle.alignmentMask),
                  handle.be);
          return $Type$.$rawType$BitsTo$Type$(rawValue);
  #else[floatingPoint]
  #if[byte]
          return SCOPED_MEMORY_ACCESS.get$Type$(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offsetNoVMAlignCheck(bb, base, handle.alignmentMask));
+                 offsetPlain(bb, base, handle.alignmentMask));
  #else[byte]
          return SCOPED_MEMORY_ACCESS.get$Type$Unaligned(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offsetNoVMAlignCheck(bb, base, handle.alignmentMask),
+                 offsetPlain(bb, base, handle.alignmentMask),
                  handle.be);
  #end[byte]
  #end[floatingPoint]
      }
  

@@ -152,23 +151,23 @@
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
  #if[floatingPoint]
          SCOPED_MEMORY_ACCESS.put$RawType$Unaligned(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offsetNoVMAlignCheck(bb, base, handle.alignmentMask),
+                 offsetPlain(bb, base, handle.alignmentMask),
                  $Type$.$type$ToRaw$RawType$Bits(value),
                  handle.be);
  #else[floatingPoint]
  #if[byte]
          SCOPED_MEMORY_ACCESS.put$Type$(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offsetNoVMAlignCheck(bb, base, handle.alignmentMask),
+                 offsetPlain(bb, base, handle.alignmentMask),
                  value);
  #else[byte]
          SCOPED_MEMORY_ACCESS.put$Type$Unaligned(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offsetNoVMAlignCheck(bb, base, handle.alignmentMask),
+                 offsetPlain(bb, base, handle.alignmentMask),
                  value,
                  handle.be);
  #end[byte]
  #end[floatingPoint]
      }

@@ -178,177 +177,177 @@
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, true);
          return convEndian(handle.be,
                            SCOPED_MEMORY_ACCESS.get$RawType$Volatile(bb.sessionImpl(),
                                    bb.unsafeGetBase(),
-                                   offset(bb, base, handle.alignmentMask)));
+                                   offsetNonPlain(bb, base, handle.alignmentMask)));
      }
  
      @ForceInline
      static void setVolatile(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          SCOPED_MEMORY_ACCESS.put$RawType$Volatile(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offset(bb, base, handle.alignmentMask),
+                 offsetNonPlain(bb, base, handle.alignmentMask),
                  convEndian(handle.be, value));
      }
  
      @ForceInline
      static $type$ getAcquire(VarHandle ob, Object obb, long base) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, true);
          return convEndian(handle.be,
                            SCOPED_MEMORY_ACCESS.get$RawType$Acquire(bb.sessionImpl(),
                                    bb.unsafeGetBase(),
-                                   offset(bb, base, handle.alignmentMask)));
+                                   offsetNonPlain(bb, base, handle.alignmentMask)));
      }
  
      @ForceInline
      static void setRelease(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          SCOPED_MEMORY_ACCESS.put$RawType$Release(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offset(bb, base, handle.alignmentMask),
+                 offsetNonPlain(bb, base, handle.alignmentMask),
                  convEndian(handle.be, value));
      }
  
      @ForceInline
      static $type$ getOpaque(VarHandle ob, Object obb, long base) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, true);
          return convEndian(handle.be,
                            SCOPED_MEMORY_ACCESS.get$RawType$Opaque(bb.sessionImpl(),
                                    bb.unsafeGetBase(),
-                                   offset(bb, base, handle.alignmentMask)));
+                                   offsetNonPlain(bb, base, handle.alignmentMask)));
      }
  
      @ForceInline
      static void setOpaque(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          SCOPED_MEMORY_ACCESS.put$RawType$Opaque(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offset(bb, base, handle.alignmentMask),
+                 offsetNonPlain(bb, base, handle.alignmentMask),
                  convEndian(handle.be, value));
      }
  #if[CAS]
  
      @ForceInline
      static boolean compareAndSet(VarHandle ob, Object obb, long base, $type$ expected, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return SCOPED_MEMORY_ACCESS.compareAndSet$RawType$(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offset(bb, base, handle.alignmentMask),
+                 offsetNonPlain(bb, base, handle.alignmentMask),
                  convEndian(handle.be, expected), convEndian(handle.be, value));
      }
  
      @ForceInline
      static $type$ compareAndExchange(VarHandle ob, Object obb, long base, $type$ expected, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return convEndian(handle.be,
                            SCOPED_MEMORY_ACCESS.compareAndExchange$RawType$(bb.sessionImpl(),
                                    bb.unsafeGetBase(),
-                                   offset(bb, base, handle.alignmentMask),
+                                   offsetNonPlain(bb, base, handle.alignmentMask),
                                    convEndian(handle.be, expected), convEndian(handle.be, value)));
      }
  
      @ForceInline
      static $type$ compareAndExchangeAcquire(VarHandle ob, Object obb, long base, $type$ expected, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return convEndian(handle.be,
                            SCOPED_MEMORY_ACCESS.compareAndExchange$RawType$Acquire(bb.sessionImpl(),
                                    bb.unsafeGetBase(),
-                                   offset(bb, base, handle.alignmentMask),
+                                   offsetNonPlain(bb, base, handle.alignmentMask),
                                    convEndian(handle.be, expected), convEndian(handle.be, value)));
      }
  
      @ForceInline
      static $type$ compareAndExchangeRelease(VarHandle ob, Object obb, long base, $type$ expected, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return convEndian(handle.be,
                            SCOPED_MEMORY_ACCESS.compareAndExchange$RawType$Release(bb.sessionImpl(),
                                    bb.unsafeGetBase(),
-                                   offset(bb, base, handle.alignmentMask),
+                                   offsetNonPlain(bb, base, handle.alignmentMask),
                                    convEndian(handle.be, expected), convEndian(handle.be, value)));
      }
  
      @ForceInline
      static boolean weakCompareAndSetPlain(VarHandle ob, Object obb, long base, $type$ expected, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return SCOPED_MEMORY_ACCESS.weakCompareAndSet$RawType$Plain(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offset(bb, base, handle.alignmentMask),
+                 offsetNonPlain(bb, base, handle.alignmentMask),
                  convEndian(handle.be, expected), convEndian(handle.be, value));
      }
  
      @ForceInline
      static boolean weakCompareAndSet(VarHandle ob, Object obb, long base, $type$ expected, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return SCOPED_MEMORY_ACCESS.weakCompareAndSet$RawType$(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offset(bb, base, handle.alignmentMask),
+                 offsetNonPlain(bb, base, handle.alignmentMask),
                  convEndian(handle.be, expected), convEndian(handle.be, value));
      }
  
      @ForceInline
      static boolean weakCompareAndSetAcquire(VarHandle ob, Object obb, long base, $type$ expected, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return SCOPED_MEMORY_ACCESS.weakCompareAndSet$RawType$Acquire(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offset(bb, base, handle.alignmentMask),
+                 offsetNonPlain(bb, base, handle.alignmentMask),
                  convEndian(handle.be, expected), convEndian(handle.be, value));
      }
  
      @ForceInline
      static boolean weakCompareAndSetRelease(VarHandle ob, Object obb, long base, $type$ expected, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return SCOPED_MEMORY_ACCESS.weakCompareAndSet$RawType$Release(bb.sessionImpl(),
                  bb.unsafeGetBase(),
-                 offset(bb, base, handle.alignmentMask),
+                 offsetNonPlain(bb, base, handle.alignmentMask),
                  convEndian(handle.be, expected), convEndian(handle.be, value));
      }
  
      @ForceInline
      static $type$ getAndSet(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return convEndian(handle.be,
                            SCOPED_MEMORY_ACCESS.getAndSet$RawType$(bb.sessionImpl(),
                                    bb.unsafeGetBase(),
-                                   offset(bb, base, handle.alignmentMask),
+                                   offsetNonPlain(bb, base, handle.alignmentMask),
                                    convEndian(handle.be, value)));
      }
  
      @ForceInline
      static $type$ getAndSetAcquire(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return convEndian(handle.be,
                            SCOPED_MEMORY_ACCESS.getAndSet$RawType$Acquire(bb.sessionImpl(),
                                    bb.unsafeGetBase(),
-                                   offset(bb, base, handle.alignmentMask),
+                                   offsetNonPlain(bb, base, handle.alignmentMask),
                                    convEndian(handle.be, value)));
      }
  
      @ForceInline
      static $type$ getAndSetRelease(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          return convEndian(handle.be,
                            SCOPED_MEMORY_ACCESS.getAndSet$RawType$Release(bb.sessionImpl(),
                                    bb.unsafeGetBase(),
-                                   offset(bb, base, handle.alignmentMask),
+                                   offsetNonPlain(bb, base, handle.alignmentMask),
                                    convEndian(handle.be, value)));
      }
  #end[CAS]
  #if[AtomicAdd]
  

@@ -357,42 +356,42 @@
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndAdd$RawType$(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      delta);
          } else {
-             return getAndAddConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), delta);
+             return getAndAddConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), delta);
          }
      }
  
      @ForceInline
      static $type$ getAndAddAcquire(VarHandle ob, Object obb, long base, $type$ delta) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndAdd$RawType$Acquire(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      delta);
          } else {
-             return getAndAddConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), delta);
+             return getAndAddConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), delta);
          }
      }
  
      @ForceInline
      static $type$ getAndAddRelease(VarHandle ob, Object obb, long base, $type$ delta) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndAdd$RawType$Release(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      delta);
          } else {
-             return getAndAddConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), delta);
+             return getAndAddConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), delta);
          }
      }
  
      @ForceInline
      static $type$ getAndAddConvEndianWithCAS(AbstractMemorySegmentImpl  bb, long offset, $type$ delta) {

@@ -413,42 +412,42 @@
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndBitwiseOr$RawType$(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      value);
          } else {
-             return getAndBitwiseOrConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), value);
+             return getAndBitwiseOrConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), value);
          }
      }
  
      @ForceInline
      static $type$ getAndBitwiseOrRelease(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndBitwiseOr$RawType$Release(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      value);
          } else {
-             return getAndBitwiseOrConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), value);
+             return getAndBitwiseOrConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), value);
          }
      }
  
      @ForceInline
      static $type$ getAndBitwiseOrAcquire(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndBitwiseOr$RawType$Acquire(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      value);
          } else {
-             return getAndBitwiseOrConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), value);
+             return getAndBitwiseOrConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), value);
          }
      }
  
      @ForceInline
      static $type$ getAndBitwiseOrConvEndianWithCAS(AbstractMemorySegmentImpl  bb, long offset, $type$ value) {

@@ -467,42 +466,42 @@
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndBitwiseAnd$RawType$(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      value);
          } else {
-             return getAndBitwiseAndConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), value);
+             return getAndBitwiseAndConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), value);
          }
      }
  
      @ForceInline
      static $type$ getAndBitwiseAndRelease(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndBitwiseAnd$RawType$Release(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      value);
          } else {
-             return getAndBitwiseAndConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), value);
+             return getAndBitwiseAndConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), value);
          }
      }
  
      @ForceInline
      static $type$ getAndBitwiseAndAcquire(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndBitwiseAnd$RawType$Acquire(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      value);
          } else {
-             return getAndBitwiseAndConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), value);
+             return getAndBitwiseAndConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), value);
          }
      }
  
      @ForceInline
      static $type$ getAndBitwiseAndConvEndianWithCAS(AbstractMemorySegmentImpl  bb, long offset, $type$ value) {

@@ -522,42 +521,42 @@
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndBitwiseXor$RawType$(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      value);
          } else {
-             return getAndBitwiseXorConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), value);
+             return getAndBitwiseXorConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), value);
          }
      }
  
      @ForceInline
      static $type$ getAndBitwiseXorRelease(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndBitwiseXor$RawType$Release(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      value);
          } else {
-             return getAndBitwiseXorConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), value);
+             return getAndBitwiseXorConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), value);
          }
      }
  
      @ForceInline
      static $type$ getAndBitwiseXorAcquire(VarHandle ob, Object obb, long base, $type$ value) {
          VarHandleSegmentViewBase handle = (VarHandleSegmentViewBase)ob;
          AbstractMemorySegmentImpl bb = checkAddress(obb, base, handle.length, false);
          if (handle.be == BE) {
              return SCOPED_MEMORY_ACCESS.getAndBitwiseXor$RawType$Acquire(bb.sessionImpl(),
                      bb.unsafeGetBase(),
-                     offset(bb, base, handle.alignmentMask),
+                     offsetNonPlain(bb, base, handle.alignmentMask),
                      value);
          } else {
-             return getAndBitwiseXorConvEndianWithCAS(bb, offset(bb, base, handle.alignmentMask), value);
+             return getAndBitwiseXorConvEndianWithCAS(bb, offsetNonPlain(bb, base, handle.alignmentMask), value);
          }
      }
  
      @ForceInline
      static $type$ getAndBitwiseXorConvEndianWithCAS(AbstractMemorySegmentImpl  bb, long offset, $type$ value) {
< prev index next >