< prev index next >

src/jdk.jlink/share/classes/jdk/tools/jlink/internal/plugins/SystemModulesPlugin.java

Print this page
rev 16336 : 8171373: Reduce copying during initialization of ModuleHashes
Reviewed-by: alanb, mchung, chegar


 950                 // new jdk.internal.module.ModuleHashes.Builder
 951                 newModuleHashesBuilder();
 952 
 953                 // Invoke ModuleHashes.Builder::hashForModule
 954                 recordedHashes
 955                     .names()
 956                     .forEach(mn -> hashForModule(mn, recordedHashes.hashFor(mn)));
 957 
 958                 // Put ModuleHashes into the hashes array
 959                 pushModuleHashes();
 960             }
 961 
 962 
 963             /*
 964              * Create ModuleHashes.Builder instance
 965              */
 966             void newModuleHashesBuilder() {
 967                 hmv.visitTypeInsn(NEW, MODULE_HASHES_BUILDER);
 968                 hmv.visitInsn(DUP);
 969                 hmv.visitLdcInsn(recordedHashes.algorithm());

 970                 hmv.visitMethodInsn(INVOKESPECIAL, MODULE_HASHES_BUILDER,
 971                     "<init>", "(Ljava/lang/String;)V", false);
 972                 hmv.visitVarInsn(ASTORE, BUILDER_VAR);
 973                 hmv.visitVarInsn(ALOAD, BUILDER_VAR);
 974             }
 975 
 976 
 977             /*
 978              * Invoke ModuleHashes.Builder::build and put the returned
 979              * ModuleHashes to the hashes array
 980              */
 981             void pushModuleHashes() {
 982                 hmv.visitVarInsn(ALOAD, MH_VAR);
 983                 pushInt(hmv, index);
 984                 hmv.visitVarInsn(ALOAD, BUILDER_VAR);
 985                 hmv.visitMethodInsn(INVOKEVIRTUAL, MODULE_HASHES_BUILDER,
 986                     "build", "()Ljdk/internal/module/ModuleHashes;",
 987                     false);
 988                 hmv.visitInsn(AASTORE);
 989             }
 990 
 991             /*




 950                 // new jdk.internal.module.ModuleHashes.Builder
 951                 newModuleHashesBuilder();
 952 
 953                 // Invoke ModuleHashes.Builder::hashForModule
 954                 recordedHashes
 955                     .names()
 956                     .forEach(mn -> hashForModule(mn, recordedHashes.hashFor(mn)));
 957 
 958                 // Put ModuleHashes into the hashes array
 959                 pushModuleHashes();
 960             }
 961 
 962 
 963             /*
 964              * Create ModuleHashes.Builder instance
 965              */
 966             void newModuleHashesBuilder() {
 967                 hmv.visitTypeInsn(NEW, MODULE_HASHES_BUILDER);
 968                 hmv.visitInsn(DUP);
 969                 hmv.visitLdcInsn(recordedHashes.algorithm());
 970                 pushInt(hmv, ((4 * recordedHashes.names().size()) / 3) + 1);
 971                 hmv.visitMethodInsn(INVOKESPECIAL, MODULE_HASHES_BUILDER,
 972                     "<init>", "(Ljava/lang/String;I)V", false);
 973                 hmv.visitVarInsn(ASTORE, BUILDER_VAR);
 974                 hmv.visitVarInsn(ALOAD, BUILDER_VAR);
 975             }
 976 
 977 
 978             /*
 979              * Invoke ModuleHashes.Builder::build and put the returned
 980              * ModuleHashes to the hashes array
 981              */
 982             void pushModuleHashes() {
 983                 hmv.visitVarInsn(ALOAD, MH_VAR);
 984                 pushInt(hmv, index);
 985                 hmv.visitVarInsn(ALOAD, BUILDER_VAR);
 986                 hmv.visitMethodInsn(INVOKEVIRTUAL, MODULE_HASHES_BUILDER,
 987                     "build", "()Ljdk/internal/module/ModuleHashes;",
 988                     false);
 989                 hmv.visitInsn(AASTORE);
 990             }
 991 
 992             /*


< prev index next >