Regression?
Howard Lovatt
howard.lovatt at gmail.com
Thu Sep 2 16:29:42 PDT 2010
I posted the following observation about different versions of the
MLVM on Lambda Dev and at the suggestion of Rémi Forax I am reposting
here. The following code:
class Test {
public static void print(ActionEvent e) { System.out.println("Hello!"); }
public static void main(String[] args) {
final ActionListener al4 = Test#print( ActionEvent );
JButton b = new JButton();
b.addActionListener(al4);
b.doClick();
b.removeActionListener(al4);
}
}
Works with the MLVM java-1.7.0-internal-2010_07_30.tar.gz from:
http://www.concord.org/~sbannasch/mlvm/
Which has version number:
wizziewol-ln:lambdas lov080$
jdk=/System/Library/Frameworks/JavaVM.framework/Versions/1.7.0_2010_07_30/Home/bin
wizziewol-ln:lambdas lov080$ $jdk/java -version
openjdk version "1.7.0-internal-fastdebug"
OpenJDK Runtime Environment (build
1.7.0-internal-fastdebug-stephen_2010_07_30_11_56-b00)
OpenJDK Server VM (build 19.0-b03-fastdebug, mixed mode)
But with the later build, java-1.7.0-internal-mlvm-2010_08_18.tar.gz,
which has version number:
wizziewol-ln:lambdas lov080$
jdk=/System/Library/Frameworks/JavaVM.framework/Versions/1.7.0_2010_08_18/Home/bin
wizziewol-ln:lambdas lov080$ $jdk/java -version
openjdk version "1.7.0-internal-fastdebug"
OpenJDK Runtime Environment (build
1.7.0-internal-fastdebug-stephen_2010_08_18_15_10-b00)
OpenJDK 64-Bit Server VM (build 19.0-b03-fastdebug, mixed mode)
It fails with:
Exception in thread "main" java.dyn.WrongMethodTypeException:
(Ljava/dyn/MethodHandle;Ljava/awt/event/ActionEvent;)V cannot be
called as (Ljava/dyn/MethodHandle;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
at sun.dyn.FromGeneric$A2.invoke_I2(FromGeneric.java:533)
at java.dyn.MethodHandle.invokeVarargs(MethodHandle.java:332)
at com.sun.runtime.ProxyHelper$1.invoke(ProxyHelper.java:61)
at $Proxy0.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2015)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2338)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
at lambdas.Test.main(Test.java:18)
The compile/run script is:
#!/bin/sh
# Compile and run Test example
jdk=/System/Library/Frameworks/JavaVM.framework/Versions/1.7.0_2010_08_18/Home/bin
javac=/Users/lov080/Dropbox/Personal/Java/JDK7/langtools/dist/lib/javac.jar
package=lambdas
name=Test
cd ..
rm ../build/classes/$package/$name.class
# Compile (javac)
$jdk/java -Xbootclasspath/p:$javac -ea -jar $javac \
-g -deprecation -source 7 -Xlint:all -XDallowFunctionTypes -d
../build/classes \
$package/$name.java
cd ../build/classes
# Run
$jdk/java -cp .:$javac -ea -Xfuture \
-XX:+UnlockExperimentalVMOptions -XX:+EnableMethodHandles
-XX:+EnableInvokeDynamic \
-XX:SuppressErrorAt=/constantPoolOop.cpp:283 \
$package.$name
Where javac.jar is made from the JDK 7 mercurial repository.
Cheers,
-- Howard.
More information about the mlvm-dev
mailing list