< prev index next >

src/java.base/share/classes/java/lang/module/ModuleDescriptor.java

Print this page

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,
< prev index next >