< prev index next >

src/java.base/share/classes/java/lang/runtime/SwitchBootstraps.java

Print this page
@@ -48,10 +48,11 @@
  import jdk.internal.vm.annotation.Stable;
  
  import static java.lang.invoke.MethodHandles.Lookup.ClassOption.NESTMATE;
  import static java.lang.invoke.MethodHandles.Lookup.ClassOption.STRONG;
  import static java.util.Objects.requireNonNull;
+ import jdk.internal.misc.PreviewFeatures;
  
  /**
   * Bootstrap methods for linking {@code invokedynamic} call sites that implement
   * the selection functionality of the {@code switch} statement.  The bootstraps
   * take additional static arguments corresponding to the {@code case} labels

@@ -385,11 +386,11 @@
      private static MethodHandle generateInnerClass(MethodHandles.Lookup caller, Object[] labels) {
          List<EnumDesc<?>> enumDescs = new ArrayList<>();
          List<Class<?>> extraClassLabels = new ArrayList<>();
  
          byte[] classBytes = ClassFile.of().build(ClassDesc.of(typeSwitchClassName(caller.lookupClass())), clb -> {
-             clb.withFlags(AccessFlag.FINAL, AccessFlag.SUPER, AccessFlag.SYNTHETIC)
+             clb.withFlags(AccessFlag.FINAL, (PreviewFeatures.isEnabled())  ? AccessFlag.IDENTITY : AccessFlag.SUPER, AccessFlag.SYNTHETIC)
                 .withMethodBody("typeSwitch",
                                 TYPES_SWITCH_DESCRIPTOR,
                                 ClassFile.ACC_FINAL | ClassFile.ACC_PUBLIC | ClassFile.ACC_STATIC,
                                 cb -> {
                      cb.aload(0);
< prev index next >