Don't include VM in VMTest initialization, let it be loaded on demand.
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Tue, 26 Apr 2016 08:05:09 +0200
changeset 1942f8cc2a015ece
parent 1941 621825e167d7
child 1943 4b4f9dbc807b
Don't include VM in VMTest initialization, let it be loaded on demand.
benchmarks/jbox2d/pom.xml
launcher/http/pom.xml
launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java
rt/emul/compact/pom.xml
rt/emul/compact/src/main/assembly/rt.xml
rt/emul/compacttest/pom.xml
rt/emul/zip/pom.xml
rt/vm/src/main/java/org/apidesign/vm4brwsr/ClassPath.java
rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java
rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java
rt/vm8/pom.xml
     1.1 --- a/benchmarks/jbox2d/pom.xml	Tue Apr 26 08:04:12 2016 +0200
     1.2 +++ b/benchmarks/jbox2d/pom.xml	Tue Apr 26 08:05:09 2016 +0200
     1.3 @@ -88,13 +88,6 @@
     1.4      </dependency>
     1.5      <dependency>
     1.6        <groupId>org.apidesign.bck2brwsr</groupId>
     1.7 -      <artifactId>launcher.http</artifactId>
     1.8 -      <version>${project.version}</version>
     1.9 -      <classifier>bck2brwsr</classifier>
    1.10 -      <scope>test</scope>
    1.11 -    </dependency>
    1.12 -    <dependency>
    1.13 -      <groupId>org.apidesign.bck2brwsr</groupId>
    1.14        <artifactId>jbox2d-osgi</artifactId>
    1.15        <version>${project.version}</version>
    1.16        <exclusions>
     2.1 --- a/launcher/http/pom.xml	Tue Apr 26 08:04:12 2016 +0200
     2.2 +++ b/launcher/http/pom.xml	Tue Apr 26 08:05:09 2016 +0200
     2.3 @@ -30,29 +30,6 @@
     2.4                      <skip>false</skip>
     2.5                  </configuration>
     2.6              </plugin>
     2.7 -            <plugin>
     2.8 -                <groupId>org.apidesign.bck2brwsr</groupId>
     2.9 -                <artifactId>bck2brwsr-maven-plugin</artifactId>
    2.10 -                <version>0.17</version>
    2.11 -                <executions>
    2.12 -                    <execution>
    2.13 -                        <goals>
    2.14 -                            <goal>library</goal>
    2.15 -                        </goals>
    2.16 -                    </execution>
    2.17 -                </executions>
    2.18 -                <configuration>
    2.19 -                    <ignoreBootClassPath>false</ignoreBootClassPath>
    2.20 -                </configuration>
    2.21 -                <dependencies>
    2.22 -                    <dependency>
    2.23 -                        <groupId>org.apidesign.bck2brwsr</groupId>
    2.24 -                        <artifactId>aot</artifactId>
    2.25 -                        <version>${project.version}</version>
    2.26 -                        <type>jar</type>
    2.27 -                    </dependency>
    2.28 -                </dependencies>
    2.29 -            </plugin>
    2.30          </plugins>
    2.31      </build>
    2.32      <properties>
     3.1 --- a/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java	Tue Apr 26 08:04:12 2016 +0200
     3.2 +++ b/launcher/http/src/main/java/org/apidesign/bck2brwsr/launcher/CompileCP.java	Tue Apr 26 08:05:09 2016 +0200
     3.3 @@ -101,24 +101,16 @@
     3.4          } catch (URISyntaxException ex) {
     3.5              throw new IOException(ex);
     3.6          }
     3.7 -        final Bck2Brwsr all;
     3.8 -        try {
     3.9 -            URL u = r.get(Bck2Brwsr.class.getName().replace('.', '/') + ".class", 0);
    3.10 -            all = configureFrom(u, rt, 4);
    3.11 -        } catch (URISyntaxException ex) {
    3.12 -            throw new IOException(ex);
    3.13 -        }
    3.14 -
    3.15 -        all
    3.16 -            .standalone(true)
    3.17 +        final Bck2Brwsr all = Bck2Brwsr.newCompiler()
    3.18 +            .standalone(false)
    3.19              //.obfuscation(ObfuscationLevel.FULL)
    3.20              .resources(new Bck2Brwsr.Resources() {
    3.21                  @Override
    3.22                  public InputStream get(String resource) throws IOException {
    3.23 -                    final URL url = r.get(resource, 0);
    3.24 -                    return url == null ? null : url.openStream();
    3.25 +                    return null;
    3.26                  }
    3.27 -            }).generate(sb);
    3.28 +            });
    3.29 +        all.generate(sb);
    3.30      }
    3.31  
    3.32      static Bck2Brwsr configureFrom(URL u, Bck2Brwsr rt, int parents) throws IOException, URISyntaxException {
     4.1 --- a/rt/emul/compact/pom.xml	Tue Apr 26 08:04:12 2016 +0200
     4.2 +++ b/rt/emul/compact/pom.xml	Tue Apr 26 08:05:09 2016 +0200
     4.3 @@ -22,6 +22,18 @@
     4.4        <scope>provided</scope>
     4.5      </dependency>
     4.6      <dependency>
     4.7 +      <groupId>${project.groupId}</groupId>
     4.8 +      <artifactId>launcher.http</artifactId>
     4.9 +      <version>${project.version}</version>
    4.10 +      <scope>provided</scope>
    4.11 +    </dependency>
    4.12 +    <dependency>
    4.13 +      <groupId>${project.groupId}</groupId>
    4.14 +      <artifactId>vm4brwsr</artifactId>
    4.15 +      <version>${project.version}</version>
    4.16 +      <scope>provided</scope>
    4.17 +    </dependency>
    4.18 +    <dependency>
    4.19        <groupId>org.apidesign.bck2brwsr</groupId>
    4.20        <artifactId>core</artifactId>
    4.21        <version>${project.version}</version>
    4.22 @@ -84,6 +96,11 @@
    4.23                  </executions>
    4.24                  <configuration>
    4.25                      <mainJar>${project.build.directory}/${project.build.finalName}-rt.jar</mainJar>
    4.26 +                    <aotDeps>
    4.27 +                        <aotDep>org.apidesign.bck2brwsr:emul.mini</aotDep>
    4.28 +                        <aotDep>org.apidesign.bck2brwsr:launcher.http</aotDep>
    4.29 +                        <aotDep>org.apidesign.bck2brwsr:vm4brwsr</aotDep>
    4.30 +                    </aotDeps>
    4.31                  </configuration>
    4.32              </plugin>
    4.33        </plugins>
     5.1 --- a/rt/emul/compact/src/main/assembly/rt.xml	Tue Apr 26 08:04:12 2016 +0200
     5.2 +++ b/rt/emul/compact/src/main/assembly/rt.xml	Tue Apr 26 08:05:09 2016 +0200
     5.3 @@ -15,8 +15,16 @@
     5.4            <exclude>META-INF/maven/**/*mini*/**</exclude>
     5.5          </excludes>
     5.6        </unpackOptions>
     5.7 +      <includes>
     5.8 +          <include>org.apidesign.bck2brwsr:*:*</include>
     5.9 +      </includes>
    5.10        <excludes>
    5.11            <exclude>org.apidesign.bck2brwsr:core:*</exclude>
    5.12 +          <exclude>org.apidesign.bck2brwsr:vm4brwsr:*</exclude>
    5.13 +          <exclude>org.apidesign.bck2brwsr:aot:*</exclude>
    5.14 +          <exclude>org.apidesign.bck2brwsr:launcher.fx:*</exclude>
    5.15 +          <exclude>org.apidesign.bck2brwsr:launcher.api:*</exclude>
    5.16 +          <exclude>org.apidesign.bck2brwsr:launcher.http:*</exclude>
    5.17        </excludes>
    5.18      </dependencySet>
    5.19    </dependencySets>
     6.1 --- a/rt/emul/compacttest/pom.xml	Tue Apr 26 08:04:12 2016 +0200
     6.2 +++ b/rt/emul/compacttest/pom.xml	Tue Apr 26 08:05:09 2016 +0200
     6.3 @@ -29,9 +29,8 @@
     6.4          </dependency>
     6.5          <dependency>
     6.6              <groupId>${project.groupId}</groupId>
     6.7 -            <artifactId>launcher.http</artifactId>
     6.8 +            <artifactId>vm4brwsr</artifactId>
     6.9              <version>${project.version}</version>
    6.10 -            <classifier>bck2brwsr</classifier>
    6.11              <scope>test</scope>
    6.12          </dependency>
    6.13          <dependency>
     7.1 --- a/rt/emul/zip/pom.xml	Tue Apr 26 08:04:12 2016 +0200
     7.2 +++ b/rt/emul/zip/pom.xml	Tue Apr 26 08:05:09 2016 +0200
     7.3 @@ -87,5 +87,13 @@
     7.4              <type>jar</type>
     7.5              <scope>provided</scope>
     7.6          </dependency>
     7.7 +        <dependency>
     7.8 +            <groupId>org.apidesign.bck2brwsr</groupId>
     7.9 +            <artifactId>emul</artifactId>
    7.10 +            <version>${project.version}</version>
    7.11 +            <classifier>bck2brwsr</classifier>
    7.12 +            <type>jar</type>
    7.13 +            <scope>test</scope>
    7.14 +        </dependency>
    7.15      </dependencies>
    7.16  </project>
     8.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ClassPath.java	Tue Apr 26 08:04:12 2016 +0200
     8.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ClassPath.java	Tue Apr 26 08:05:09 2016 +0200
     8.3 @@ -28,6 +28,7 @@
     8.4   *
     8.5   * @author Jaroslav Tulach <jtulach@netbeans.org>
     8.6   */
     8.7 +@Exported
     8.8  final class ClassPath {
     8.9      private ClassPath() {
    8.10      }
     9.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Tue Apr 26 08:04:12 2016 +0200
     9.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Tue Apr 26 08:05:09 2016 +0200
     9.3 @@ -70,9 +70,7 @@
     9.4          String[] both = config.classes().toArray();
     9.5          
     9.6          final StringArray fixedNames = new StringArray();
     9.7 -        fixedNames.add(Object.class.getName().replace('.', '/'));
     9.8 -        fixedNames.add(Class.class.getName().replace('.', '/'));
     9.9 -        fixedNames.add(ArithmeticException.class.getName().replace('.', '/'));
    9.10 +        boolean addThree = false;
    9.11          
    9.12          VM vm;
    9.13          if (config.isExtension()) {
    9.14 @@ -81,15 +79,22 @@
    9.15                  config.getResources(), both, config.exported(),
    9.16                  config.allResources(), config.classpath()
    9.17              );
    9.18 +            addThree = true;
    9.19          } else {
    9.20              if (config.includeVM()) {
    9.21                  fixedNames.add(VM.class.getName().replace('.', '/'));
    9.22 +                addThree = true;
    9.23              }
    9.24              vm = new Standalone(out, 
    9.25                  config.getResources(), config.exported(),
    9.26                  config.allResources()
    9.27              );
    9.28          }            
    9.29 +        if (addThree) {
    9.30 +            fixedNames.add(Object.class.getName().replace('.', '/'));
    9.31 +            fixedNames.add(Class.class.getName().replace('.', '/'));
    9.32 +            fixedNames.add(ArithmeticException.class.getName().replace('.', '/'));
    9.33 +        }
    9.34          vm.doCompile(fixedNames.addAndNew(both));
    9.35      }
    9.36  
    9.37 @@ -615,14 +620,20 @@
    9.38                  + "    }\n"
    9.39                  + "    var reload = function(name, arr, keep) {\n"
    9.40                  + "      if (!arr) throw 'Cannot find ' + name;\n"
    9.41 -                + "      var lazy = vm['org_apidesign_vm4brwsr_VMLazy'];\n"
    9.42 -                + "      if (!lazy) throw 'No bck2brwsr VM module to compile ' + name;\n"
    9.43 +                + "      var err = null;\n"
    9.44 +                + "      try {\n"
    9.45 +                + "        var lazy = loadClass('org.apidesign.vm4brwsr.VMLazy');\n"
    9.46 +                + "      } catch (e) {\n"
    9.47 +                + "        err = e;\n"
    9.48 +                + "      }\n"
    9.49 +                + "      if (!lazy) {\n"
    9.50 +                + "         throw 'No bck2brwsr VM module to compile ' + name + ':\\n' + err;\n"
    9.51 +                + "      }\n"
    9.52                  + "      if (!keep) {\n"
    9.53                  + "        var attr = mangleClass(name);\n"
    9.54                  + "        delete vm[attr];\n"
    9.55                  + "      }\n"
    9.56 -                + "      return lazy(false)\n"
    9.57 -                + "        ['load__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2_3B']\n"
    9.58 +                + "      return lazy['load__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_String_2_3Ljava_lang_Object_2_3B']\n"
    9.59                  + "        (vm, name, args, arr);\n"
    9.60                  + "    };\n"
    9.61                  + "    var loadClass = function(name) {\n"
    9.62 @@ -791,6 +802,14 @@
    9.63          }
    9.64  
    9.65          @Override
    9.66 +        String accessClass(String className) {
    9.67 +            if (this.extensionClasses.contains(className.replace('_', '/'))) {
    9.68 +                return className;
    9.69 +            }
    9.70 +            return super.accessClass(className);
    9.71 +        }
    9.72 +
    9.73 +        @Override
    9.74          protected String generateClass(String className) throws IOException {
    9.75              if (isExternalClass(className)) {
    9.76                  final String cls = className.replace("_", "_1").replace('/', '_');
    10.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java	Tue Apr 26 08:04:12 2016 +0200
    10.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VMLazy.java	Tue Apr 26 08:05:09 2016 +0200
    10.3 @@ -27,6 +27,7 @@
    10.4   *
    10.5   * @author Jaroslav Tulach <jtulach@netbeans.org>
    10.6   */
    10.7 +@Exported
    10.8  final class VMLazy {
    10.9      private final Object vm;
   10.10      private final Object[] args;
    11.1 --- a/rt/vm8/pom.xml	Tue Apr 26 08:04:12 2016 +0200
    11.2 +++ b/rt/vm8/pom.xml	Tue Apr 26 08:05:09 2016 +0200
    11.3 @@ -74,12 +74,14 @@
    11.4              <artifactId>emul</artifactId>
    11.5              <version>${project.version}</version>
    11.6              <scope>compile</scope>
    11.7 +            <classifier>rt</classifier>
    11.8          </dependency>
    11.9          <dependency>
   11.10 -            <groupId>org.apidesign.bck2brwsr</groupId>
   11.11 -            <artifactId>emul.mini</artifactId>
   11.12 +            <groupId>${project.groupId}</groupId>
   11.13 +            <artifactId>emul</artifactId>
   11.14              <version>${project.version}</version>
   11.15 -            <scope>compile</scope>
   11.16 +            <scope>provided</scope>
   11.17 +            <classifier>bck2brwsr</classifier>
   11.18          </dependency>
   11.19          <dependency>
   11.20              <groupId>org.apidesign.bck2brwsr</groupId>