Am 02.09.2014 16:38, schrieb Vladimir Ivanov:
[...]
It's possible to optimize some shapes of method handle chains (like
nested GWTs) and tailor special LambdaForm shape or do some inlining
during bytecode translation. Though such specialization contradicts LF
sharing goal, probable benefits may worth the effort.
Maybe something to investigate after LF sharing.
[...]
I don't think it will work. If you load a MethodHandle from
WeakReference and then use MH.invoke*, inlining will be broken for sure.
right, I forgot that I have to invoke it then. And things like
foldArguments or exactInvoker won't help.
For example if I do
def foo(x) {
x.bar()
}
Then after the first execution the class this has defined will prevent
the class used for x to unload. In case of a virtual method I may get
away with a parent or interface if I adapt my receiver runtime class
check to use WeakReferences. But other parts of the handle will keep the
class in memory. And that for as long as the class containing foo(x)
exists, even if it is never touched again. In a system that creates
often classes from scripts this could turn into a problem.
[...]
since in the traditional implementation the callsite is always Object[]
based we have one such class per executed target method. Of course we
run into profile pollution if we use the same callsite object for
multiple callsites, but it would be the same for the target method, so
in my thinking there is no real problem. Anyway... if there is no need
to create such a class per target of a direct method handle, then I
would expect quite a lot of less memory usage from your approach
That's interesting. I'll try to experiment with that. Thanks for sharing
your experience.
always happy if I can contribute something interesting in the end
bye Jochen
--
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