A sudden concern about invokedynamic
John Rose
John.Rose at Sun.COM
Mon Jun 23 12:40:46 PDT 2008
On Jun 21, 2008, at 12:31 AM, Charles Oliver Nutter wrote:
> How would invokedynamic work if we don't have compiled Java bytecode
> anywhere to dispatch to? For example, JRuby is mixed mode right
> now, and
> some methods are interpreted (AST or various bytecode specs) while
> some
> methods get compiled to JVM bytecode on-the-fly. For the compiled
> ones,
> invokedynamic would just get a normal method handle. What about for
> the
> interpreted ones? Essentially we want to be able to pass out a method
> handle that's actually just a call into the JRuby interpreter.
You probably want to use MethodHandles.insertArgument to introduce a
hidden receiver argument, which represents the target method as known
to the interpreter. You probably also want to use
MethodHandles.collectArguments to regularize the calling sequence
which the interpreted method gets.
> I don't recall seeing anything in the docs that might show how to do
> that. Did I miss something?
All those sorts of calling sequence adjustments must be composable
from method handle adapters, created by the MethodHandles methods
mentioned in the EDR spec. The real question is, did the EDR miss
anything?
-- John
More information about the mlvm-dev
mailing list