# HG changeset patch # User Jaroslav Tulach # Date 1407650831 -7200 # Node ID 589affbf39a2dca674d51c071aacce462137f9ba # Parent 78485949d340c22e19c5660f5e32e1f0a4949617 The test fails on invokeDynamic instruction in JavaScript execution diff -r 78485949d340 -r 589affbf39a2 rt/vm8/pom.xml --- a/rt/vm8/pom.xml Sun Aug 10 07:52:49 2014 +0200 +++ b/rt/vm8/pom.xml Sun Aug 10 08:07:11 2014 +0200 @@ -42,5 +42,11 @@ test jar + + ${project.groupId} + emul + ${project.version} + test + \ No newline at end of file diff -r 78485949d340 -r 589affbf39a2 rt/vm8/src/test/java/org/apidesign/bck2brwsr/vm8/InvokeDynamicTest.java --- a/rt/vm8/src/test/java/org/apidesign/bck2brwsr/vm8/InvokeDynamicTest.java Sun Aug 10 07:52:49 2014 +0200 +++ b/rt/vm8/src/test/java/org/apidesign/bck2brwsr/vm8/InvokeDynamicTest.java Sun Aug 10 08:07:11 2014 +0200 @@ -58,7 +58,7 @@ @Test public void simpleDynamicInJS() throws Exception { code.assertExec( "Invoke dynamic can return a value", InvokeDynamic.class, - "dynamic__Ljava_lang_String_2", + "dynamicSay__Ljava_lang_String_2", "Hello from Dynamic!" ); } @@ -102,21 +102,27 @@ 0); is.close(); invokeDynamicBytes = writer.toByteArray(); + final boolean[] loaded = { false }; ClassLoader l = new ClassLoader() { @Override public Class loadClass(String name) throws ClassNotFoundException { if (name.equals(InvokeDynamic.class.getName())) { + loaded[0] = true; return defineClass(name, invokeDynamicBytes, 0, invokeDynamicBytes.length); } return super.loadClass(name); } }; invokeDynamicClass = l.loadClass(InvokeDynamic.class.getName()); - + assertTrue(loaded[0], "InvokeDynamic class should be loaded!"); + + final EmulResWithInvDyn emul = new EmulResWithInvDyn(); code = TestVM.compileClass( - null, null, new EmulationResourcesWithException(), + null, null, emul, InvokeDynamic.class.getName().replace('.', '/') ); + + assertTrue(emul.loaded, "InvokeDynamic class should be processed!"); } @@ -147,10 +153,13 @@ } } - private static class EmulationResourcesWithException implements Bck2Brwsr.Resources { + private static class EmulResWithInvDyn implements Bck2Brwsr.Resources { + boolean loaded; + @Override public InputStream get(String name) throws IOException { - if ("org/apidesign/vm4brwsr/InvokeDynamic.class".equals(name)) { + if ("org/apidesign/bck2brwsr/vm8/InvokeDynamic.class".equals(name)) { + loaded = true; return new ByteArrayInputStream(invokeDynamicBytes); } if ("java/net/URI.class".equals(name)) {