Am 26.06.2012 13:06, schrieb Rémi Forax: [...] >>>> (2) calling super() >>>> afaik I cannot generate a call site that replaces the invokeSpecial call >>>> to a super class constructor. >>> You can call super.foo() >> ah true... this is not reflection.. even if I get the handle from the >> super class it won't call the overriding method in the current class. I >> totally forgot... how do you handle this in your backport? > > I don't :( > > The current plan is to add an empty trampoline method in the code > by default and to redefine the code of this method when you create > a method handle that use invokespecial. > But it only works in agent mode not in reflection only mode.
it works only in agent mode for you because you add the methods at "runtime" I guess. We let the compiler emit those, so we don't depend on an agent... but of course it means the bytecode is quite a bit larger than needed. Ah well.. [...] > For Dart, I don't generate Dart constructor as Java constructor, > I create public default Java constructor that just call super() > and translate the Dart constructor to a Java method. > > Then, a call to new is translated to an invokedynamic that will, > at runtime, fold the call to the Java constructor and the call to > the method that correspond to the Dart constructor. > > This allow me to workaround the VM limitation but > I don't allow any Dart to Java integration like being able > in Java to inherits from a Dart class. I see, well, that is no option for Groovy then. Too bad there is no other way around bye blackdrag -- Jochen "blackdrag" Theodorou - Groovy Project Tech Lead blog: http://blackdragsview.blogspot.com/ german groovy discussion newsgroup: de.comp.lang.misc For Groovy programming sources visit http://groovy-lang.org _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev