The test fails on invokeDynamic instruction in JavaScript execution jdk8
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sun, 10 Aug 2014 08:07:11 +0200
branchjdk8
changeset 1656589affbf39a2
parent 1655 78485949d340
child 1657 c90c5a9b1900
The test fails on invokeDynamic instruction in JavaScript execution
rt/vm8/pom.xml
rt/vm8/src/test/java/org/apidesign/bck2brwsr/vm8/InvokeDynamicTest.java
     1.1 --- a/rt/vm8/pom.xml	Sun Aug 10 07:52:49 2014 +0200
     1.2 +++ b/rt/vm8/pom.xml	Sun Aug 10 08:07:11 2014 +0200
     1.3 @@ -42,5 +42,11 @@
     1.4              <scope>test</scope>
     1.5              <type>jar</type>
     1.6          </dependency>
     1.7 +        <dependency>
     1.8 +            <groupId>${project.groupId}</groupId>
     1.9 +            <artifactId>emul</artifactId>
    1.10 +            <version>${project.version}</version>
    1.11 +            <scope>test</scope>
    1.12 +        </dependency>
    1.13      </dependencies>
    1.14  </project>
    1.15 \ No newline at end of file
     2.1 --- a/rt/vm8/src/test/java/org/apidesign/bck2brwsr/vm8/InvokeDynamicTest.java	Sun Aug 10 07:52:49 2014 +0200
     2.2 +++ b/rt/vm8/src/test/java/org/apidesign/bck2brwsr/vm8/InvokeDynamicTest.java	Sun Aug 10 08:07:11 2014 +0200
     2.3 @@ -58,7 +58,7 @@
     2.4      @Test public void simpleDynamicInJS() throws Exception {
     2.5          code.assertExec(
     2.6              "Invoke dynamic can return a value", InvokeDynamic.class,
     2.7 -            "dynamic__Ljava_lang_String_2",
     2.8 +            "dynamicSay__Ljava_lang_String_2",
     2.9              "Hello from Dynamic!"
    2.10          );
    2.11      }
    2.12 @@ -102,21 +102,27 @@
    2.13                  0);
    2.14          is.close();
    2.15          invokeDynamicBytes = writer.toByteArray();
    2.16 +        final boolean[] loaded = { false };
    2.17          ClassLoader l = new ClassLoader() {
    2.18              @Override
    2.19              public Class<?> loadClass(String name) throws ClassNotFoundException {
    2.20                  if (name.equals(InvokeDynamic.class.getName())) {
    2.21 +                    loaded[0] = true;
    2.22                      return defineClass(name, invokeDynamicBytes, 0, invokeDynamicBytes.length);
    2.23                  }
    2.24                  return super.loadClass(name);
    2.25              }
    2.26          };
    2.27          invokeDynamicClass = l.loadClass(InvokeDynamic.class.getName());
    2.28 -        
    2.29 +        assertTrue(loaded[0], "InvokeDynamic class should be loaded!");
    2.30 +
    2.31 +        final EmulResWithInvDyn emul = new EmulResWithInvDyn();
    2.32          code = TestVM.compileClass(
    2.33 -            null, null, new EmulationResourcesWithException(),
    2.34 +            null, null, emul,
    2.35              InvokeDynamic.class.getName().replace('.', '/')
    2.36          );
    2.37 +        
    2.38 +        assertTrue(emul.loaded, "InvokeDynamic class should be processed!");
    2.39      }
    2.40      
    2.41      
    2.42 @@ -147,10 +153,13 @@
    2.43          }
    2.44      }
    2.45      
    2.46 -    private static class EmulationResourcesWithException implements Bck2Brwsr.Resources {
    2.47 +    private static class EmulResWithInvDyn implements Bck2Brwsr.Resources {
    2.48 +        boolean loaded;
    2.49 +        
    2.50          @Override
    2.51          public InputStream get(String name) throws IOException {
    2.52 -            if ("org/apidesign/vm4brwsr/InvokeDynamic.class".equals(name)) {
    2.53 +            if ("org/apidesign/bck2brwsr/vm8/InvokeDynamic.class".equals(name)) {
    2.54 +                loaded = true;
    2.55                  return new ByteArrayInputStream(invokeDynamicBytes);
    2.56              }
    2.57              if ("java/net/URI.class".equals(name)) {