< prev index next >

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

Print this page
rev 55127 : 8223351: [lworld] Primary mirror and nullable mirror for inline type
Reviewed-by: tbd

@@ -76,11 +76,11 @@
     static DirectMethodHandle make(byte refKind, Class<?> refc, MemberName member, Class<?> callerClass) {
         MethodType mtype = member.getMethodOrFieldType();
         if (!member.isStatic()) {
             if (!member.getDeclaringClass().isAssignableFrom(refc) || member.isConstructor())
                 throw new InternalError(member.toString());
-            mtype = mtype.insertParameterTypes(0, refc.isValue() ? refc.asValueType() : refc);
+            mtype = mtype.insertParameterTypes(0, refc.asPrimaryType());
         }
         if (!member.isField()) {
             // refKind reflects the original type of lookup via findSpecial or
             // findVirtual etc.
             switch (refKind) {

@@ -109,16 +109,16 @@
         } else {
             LambdaForm lform = preparedFieldLambdaForm(member);
             if (member.isStatic()) {
                 long offset = MethodHandleNatives.staticFieldOffset(member);
                 Object base = MethodHandleNatives.staticFieldBase(member);
-                return member.isValue() ? new StaticValueAccessor(mtype, lform, member, base, offset)
+                return member.isInlineableField() ? new StaticValueAccessor(mtype, lform, member, base, offset)
                                         : new StaticAccessor(mtype, lform, member, base, offset);
             } else {
                 long offset = MethodHandleNatives.objectFieldOffset(member);
                 assert(offset == (int)offset);
-                return  member.isValue() ? new ValueAccessor(mtype, lform, member, (int)offset)
+                return  member.isInlineableField() ? new ValueAccessor(mtype, lform, member, (int)offset)
                                          : new Accessor(mtype, lform, member, (int)offset);
 
             }
         }
     }

@@ -133,13 +133,11 @@
             return makeAllocator(member);
         return make(member.getDeclaringClass(), member);
     }
     private static DirectMethodHandle makeAllocator(MemberName ctor) {
         assert(ctor.isConstructor() && ctor.getName().equals("<init>"));
-        Class<?> instanceClass = ctor.getDeclaringClass();
-        if (instanceClass.isValue())
-            instanceClass = instanceClass.asValueType();  // convert to Q-Type
+        Class<?> instanceClass = ctor.getDeclaringClass().asPrimaryType();  // convert to Q-Type
         ctor = ctor.asConstructor();
         assert(ctor.isConstructor() && ctor.getReferenceKind() == REF_newInvokeSpecial) : ctor;
         MethodType mtype = ctor.getMethodType().changeReturnType(instanceClass);
         LambdaForm lform = preparedLambdaForm(ctor);
         MemberName init = ctor.asSpecial();

@@ -665,16 +663,16 @@
         case REF_putStatic:     formOp = AF_PUTSTATIC;   break;
         default:  throw new InternalError(m.toString());
         }
         if (shouldBeInitialized(m)) {
             // precompute the barrier-free version:
-            preparedFieldLambdaForm(formOp, m.isVolatile(), m.isValue(), m.isFlattened(), ftype);
+            preparedFieldLambdaForm(formOp, m.isVolatile(), m.isInlineableField(), m.isFlattened(), ftype);
             assert((AF_GETSTATIC_INIT - AF_GETSTATIC) ==
                    (AF_PUTSTATIC_INIT - AF_PUTSTATIC));
             formOp += (AF_GETSTATIC_INIT - AF_GETSTATIC);
         }
-        LambdaForm lform = preparedFieldLambdaForm(formOp, m.isVolatile(), m.isValue(), m.isFlattened(), ftype);
+        LambdaForm lform = preparedFieldLambdaForm(formOp, m.isVolatile(), m.isInlineableField(), m.isFlattened(), ftype);
         maybeCompile(lform, m);
         assert(lform.methodType().dropParameterTypes(0, 1)
                 .equals(m.getInvocationType().basicType()))
                 : Arrays.asList(m, m.getInvocationType().basicType(), lform, lform.methodType());
         return lform;
< prev index next >