RFR (M): 8019519: PPC64 (part 105): C interpreter: implement support for jvmti early return.

Lindenmaier, Goetz goetz.lindenmaier at sap.com
Sat Jul 6 12:35:06 PDT 2013

Hi Serguei,

>The above will reset the msg to the return_from_method
>when it was already set to the early_return which is
>inconsistent with the popping_frame case.

That's because the frame manager tests for popping_frame.
The early_return case is handled as a normal return, we faked the
return result in the cppInterpreter code that's in this change.

See also
line 1922

>  jc.can_force_early_return = 1;
We will enable the capabilities in a change later on.

Best regards & thanks for your review,

From: serguei.spitsyn at oracle.com [mailto:serguei.spitsyn at oracle.com]
Sent: Saturday, July 06, 2013 3:10 AM
To: Lindenmaier, Goetz
Cc: Vladimir Kozlov; 'hotspot-dev at openjdk.java.net'; 'ppc-aix-port-dev at openjdk.java.net'
Subject: Re: RFR (M): 8019519: PPC64 (part 105): C interpreter: implement support for jvmti early return.

Hi Goetz,

As before it looks good in general.

I'm not sure the following change is correct:

-      THREAD->clr_pop_frame_in_process();

+    } else {

+      istate->set_msg(return_from_method);


The above will reset the msg to the return_from_method
when it was already set to the early_return which is
inconsistent with the popping_frame case.

Could you explain why did you make it for non-popping_frame cases only?
It would not surprise me if it does not matter though. :)

Also, one more case needs to be added to the  BytecodeInterpreter::C_msg():

322?      case BytecodeInterpreter::early_return:  return("early_return");

One more comment below...

On 7/4/13 5:39 AM, Lindenmaier, Goetz wrote:

pop_frame_in_process will be cleared when the frame manager calls
the interpreter loop again with the message popping_frame.
6953477 broke our pop_frame tests. I don't see though how pop_frame
could be tested with 6953477, as the capability is not set
if CC_INTERP is defined.

It is explicitly disabled in the jvmtiManageCapabilities.cpp:
#ifndef CC_INTERP
  jc.can_pop_frame = 1;
  jc.can_force_early_return = 1;
#endif // !CC_INTERP

It is because it was not fully implemented yet for CC_INTERP.
You can take the can_force_early_return out of the ifdef.


 (I removed a ShouldNotReachHere in the updated change, that was
in the wrong patch of the port but belongs here.)

_return_kind is unused.  In the updated webrev I also removed the
definition of the field.

I also fixed the syntax stuff.

This is the new webrev:

Best regards,

From: serguei.spitsyn at oracle.com<mailto:serguei.spitsyn at oracle.com> [mailto:serguei.spitsyn at oracle.com]
Sent: Mittwoch, 3. Juli 2013 21:59
To: Lindenmaier, Goetz
Cc: 'hotspot-dev at openjdk.java.net<mailto:hotspot-dev at openjdk.java.net>'; 'ppc-aix-port-dev at openjdk.java.net<mailto:ppc-aix-port-dev at openjdk.java.net>'; Vladimir Kozlov
Subject: Re: RFR (M): 8019519: PPC64 (part 105): C interpreter: implement support for jvmti early return.

Hi Goetz,

The fix looks good in general.
Thank you for doing this!

A couple of comments:


It looks like you have accidentally dropped the line:

2981       THREAD->clr_pop_frame_in_process();

What is the reason that the following lines are deleted? (the same as Vladimir already asked):

2962       istate->set_return_kind((Bytecodes::Code)opcode);

2987     istate->set_return_kind((Bytecodes::Code)opcode);


On 7/3/13 3:24 AM, Lindenmaier, Goetz wrote:


This change implements jvmti early return  and pop frame support

in the cppInterpreter. To work properly, the corresponding properties in

JvmtiManageCapabilities::init_onload_capabilities() must be enabled.

We will add this in a later change.

I would be happy about a review of this change:


Best regards,


More information about the hotspot-dev mailing list