Direct method handles to static methods

John Rose john.r.rose at
Tue Aug 19 23:47:26 UTC 2014

On Aug 18, 2014, at 5:49 AM, Raffaello Giulietti <raffaello.giulietti at> wrote:

> On 2014-08-18 14:45, Remi Forax wrote:
>> On 08/18/2014 12:19 PM, Raffaello Giulietti wrote:
>>> What happens to direct method handles to *static* methods when the
>>> underlying method implementation changes at runtime, for example by
>>> using java.lang.instrument transformations or redefinitions?
>>> Before doing some experiments, I would just like an authoritative answer.
>> It just works* :)
> You mean that the next invocation via the method handle executes the new code? Fantastic!

The basic design rule is that a method handle behaves like the corresponding invoke* (or get* or set*) bytecode.

Since those have the behavior you describe, so do the method handles.

(Class initialization rules are also respected, for the *static and constructor method handles.  Caller-sensitive methods are caller-sensitive.  Etc.)

If this basic design rule is violated, it is probably a bug in the implementation, not in the design.

— John

More information about the mlvm-dev mailing list