On Feb 8, 2011, at 1:14 AM, John Rose wrote:
> On Feb 7, 2011, at 11:55 AM, Attila Szegedi wrote:
>
>> That indeed works - thanks for the hep Rémi!
>>
>> FWIW, I'm updating my dynamic linker framework library to work with this
>> version of MLVM; I got everything to compile after some nontrivial amount of
>> work (Linkage went away, for one thing :-) ) and was stumped on this for
>> running my test suite. Now that's eliminated, I hope I'll be able to roll
>> out a new version of the library soon.
>
>
> Wow, that's great, Attila. I hope the package name change will be an easier
> step.
Yeah, I want to do it as a three-step process:
1. update it to work with the latest available binary (as Stephen provides them
:-) )
2. optimize it for the features available since 2010 April when I last updated
it (i.e. start using ClassValue and some new MethodHandle goodness)
3. track the package rename, once it becomes available.
> I pushed patches to fix the bug you found with X.java.
That's great!
BTW there's still this problem with MethodHandles.collectArguments (now
MethodHandle.asCollector) that I originally reported back in 2009, and it is
still present (at least in the 2011-01-31 build as produced by Stephen
Bannasch). It also happens with method handles that are created ab ovo as
vararg collectors:
Here's a small testcase:
import java.dyn.*;
public class TestCollectArguments {
public static void main(String[] args) throws Throwable {
MethodHandle xs = MethodHandles.publicLookup().findVirtual(
TestCollectArguments.class, "xs", MethodType.methodType(
String.class, String.class, String[].class));
// This works
System.out.println(xs.invokeWithArguments(new TestCollectArguments(),
"a",
new String[] { "b", "c" }));
// This fails but it should work as xs is a vararg collector
try {
System.out.println(xs.invokeWithArguments(new TestCollectArguments(),
"a", "b", "c"));
}
catch(ClassCastException e) {
e.printStackTrace();
}
// This fails too
try {
System.out.println(xs.asCollector(String[].class,
2).invokeWithArguments(
new TestCollectArguments(), "a", "b", "c"));
}
catch(ClassCastException e) {
e.printStackTrace();
}
}
public String xs(String y, String... z) {
for (String zz : z) {
y += zz;
}
return y;
}
}
>
> The delicate initialization ordering will get more robust when we move
> everything into one package.
>
> -- John
> _______________________________________________
> mlvm-dev mailing list
> [email protected]
> http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev
_______________________________________________
mlvm-dev mailing list
[email protected]
http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev