< prev index next >

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

Print this page
*** 50,10 ***
--- 50,11 ---
  import jdk.internal.access.SharedSecrets;
  import jdk.internal.classfile.ClassHierarchyResolver;
  import jdk.internal.classfile.Classfile;
  import jdk.internal.classfile.CodeBuilder;
  import jdk.internal.classfile.TypeKind;
+ import jdk.internal.misc.ValhallaFeatures;
  import jdk.internal.module.Modules;
  import jdk.internal.reflect.CallerSensitive;
  import jdk.internal.reflect.Reflection;
  import jdk.internal.util.ClassFileDumper;
  import sun.reflect.misc.ReflectUtil;

*** 368,11 ***
      private static byte[] createTemplate(ClassLoader loader, ClassDesc proxyDesc, ClassDesc ifaceDesc,
                                           String methodName, List<MethodInfo> methods) {
          return Classfile.of(ClassHierarchyResolverOption.of(ClassHierarchyResolver.ofClassLoading(loader)))
                          .build(proxyDesc, clb -> {
              clb.withSuperclass(CD_Object);
!             clb.withFlags(ACC_FINAL | ACC_SYNTHETIC);
              clb.withInterfaceSymbols(ifaceDesc);
  
              // static and instance fields
              clb.withField(TYPE_NAME, CD_Class, ACC_PRIVATE | ACC_STATIC | ACC_FINAL);
              clb.withField(TARGET_NAME, CD_MethodHandle, ACC_PRIVATE | ACC_FINAL);
--- 369,11 ---
      private static byte[] createTemplate(ClassLoader loader, ClassDesc proxyDesc, ClassDesc ifaceDesc,
                                           String methodName, List<MethodInfo> methods) {
          return Classfile.of(ClassHierarchyResolverOption.of(ClassHierarchyResolver.ofClassLoading(loader)))
                          .build(proxyDesc, clb -> {
              clb.withSuperclass(CD_Object);
!             clb.withFlags((ValhallaFeatures.isEnabled() ? ACC_IDENTITY : 0) | ACC_FINAL | ACC_SYNTHETIC);
              clb.withInterfaceSymbols(ifaceDesc);
  
              // static and instance fields
              clb.withField(TYPE_NAME, CD_Class, ACC_PRIVATE | ACC_STATIC | ACC_FINAL);
              clb.withField(TARGET_NAME, CD_MethodHandle, ACC_PRIVATE | ACC_FINAL);
< prev index next >