< prev index next >

src/java.base/share/classes/java/lang/invoke/MethodHandleImpl.java

Print this page

        

*** 39,48 **** --- 39,49 ---- import sun.invoke.util.ValueConversions; import sun.invoke.util.VerifyType; import sun.invoke.util.Wrapper; import java.lang.reflect.Array; + import java.nio.ByteOrder; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List;
*** 1788,1797 **** --- 1789,1836 ---- return GenerateJLIClassesHelper .generateInvokersHolderClassBytes(className, invokerMethodTypes, callSiteMethodTypes); } + @Override + public VarHandle memoryAddressViewVarHandle(Class<?> carrier, long alignmentMask, + ByteOrder order, long offset, long[] strides) { + return VarHandles.makeMemoryAddressViewHandle(carrier, alignmentMask, order, offset, strides); + } + + @Override + public Class<?> memoryAddressCarrier(VarHandle handle) { + return checkMemAccessHandle(handle).carrier(); + } + + @Override + public long memoryAddressAlignmentMask(VarHandle handle) { + return checkMemAccessHandle(handle).alignmentMask; + } + + @Override + public ByteOrder memoryAddressByteOrder(VarHandle handle) { + return checkMemAccessHandle(handle).be ? + ByteOrder.BIG_ENDIAN : ByteOrder.LITTLE_ENDIAN; + } + + @Override + public long memoryAddressOffset(VarHandle handle) { + return checkMemAccessHandle(handle).offset; + } + + @Override + public long[] memoryAddressStrides(VarHandle handle) { + return checkMemAccessHandle(handle).strides(); + } + + private VarHandleMemoryAddressBase checkMemAccessHandle(VarHandle handle) { + if (!(handle instanceof VarHandleMemoryAddressBase)) { + throw new IllegalArgumentException("Not a memory access varhandle: " + handle); + } + return (VarHandleMemoryAddressBase) handle; + } }); } /** Result unboxing: ValueConversions.unbox() OR ValueConversions.identity() OR ValueConversions.ignore(). */ private static MethodHandle unboxResultHandle(Class<?> returnType) {
< prev index next >