2648 */
2649 @SuppressWarnings("unchecked")
2650 private static <T extends Object & Comparable<? super T>>
2651 int compare(Set<T> s1, Set<T> s2) {
2652 T[] a1 = (T[]) s1.toArray();
2653 T[] a2 = (T[]) s2.toArray();
2654 Arrays.sort(a1);
2655 Arrays.sort(a2);
2656 return Arrays.compare(a1, a2);
2657 }
2658
2659 private static <E extends Enum<E>> long modsValue(Set<E> set) {
2660 long value = 0;
2661 for (Enum<E> e : set) {
2662 value += 1 << e.ordinal();
2663 }
2664 return value;
2665 }
2666
2667 static {
2668 /**
2669 * Setup the shared secret to allow code in other packages access
2670 * private package methods in java.lang.module.
2671 */
2672 jdk.internal.access.SharedSecrets
2673 .setJavaLangModuleAccess(new jdk.internal.access.JavaLangModuleAccess() {
2674 @Override
2675 public Builder newModuleBuilder(String mn,
2676 boolean strict,
2677 Set<ModuleDescriptor.Modifier> modifiers) {
2678 return new Builder(mn, strict, modifiers);
2679 }
2680
2681 @Override
2682 public Set<String> packages(ModuleDescriptor.Builder builder) {
2683 return builder.packages();
2684 }
2685
2686 @Override
2687 public void requires(ModuleDescriptor.Builder builder,
|
2648 */
2649 @SuppressWarnings("unchecked")
2650 private static <T extends Object & Comparable<? super T>>
2651 int compare(Set<T> s1, Set<T> s2) {
2652 T[] a1 = (T[]) s1.toArray();
2653 T[] a2 = (T[]) s2.toArray();
2654 Arrays.sort(a1);
2655 Arrays.sort(a2);
2656 return Arrays.compare(a1, a2);
2657 }
2658
2659 private static <E extends Enum<E>> long modsValue(Set<E> set) {
2660 long value = 0;
2661 for (Enum<E> e : set) {
2662 value += 1 << e.ordinal();
2663 }
2664 return value;
2665 }
2666
2667 static {
2668 runtimeSetup();
2669 }
2670
2671 // Called from JVM when loading an AOT cache
2672 private static void runtimeSetup() {
2673 /**
2674 * Setup the shared secret to allow code in other packages access
2675 * private package methods in java.lang.module.
2676 */
2677 jdk.internal.access.SharedSecrets
2678 .setJavaLangModuleAccess(new jdk.internal.access.JavaLangModuleAccess() {
2679 @Override
2680 public Builder newModuleBuilder(String mn,
2681 boolean strict,
2682 Set<ModuleDescriptor.Modifier> modifiers) {
2683 return new Builder(mn, strict, modifiers);
2684 }
2685
2686 @Override
2687 public Set<String> packages(ModuleDescriptor.Builder builder) {
2688 return builder.packages();
2689 }
2690
2691 @Override
2692 public void requires(ModuleDescriptor.Builder builder,
|