RFE: 4508774: Implementation for GetOperandStack

Jan Siersch jan.siersch at uni-ulm.de
Mon Feb 10 09:21:28 PST 2014


Hi all,

this post is about a feature request for JVMTI to allow access to the 
operand stack:
https://bugs.openjdk.java.net/browse/JDK-4508774

As part of a project I'm working on, I have implemented a set of 
functions, namely GetOperand<Type>, which provide the requested 
functionality, and I would like to provide this implementation to the 
OpenJDK project. As I am not a regular contributor to the OpenJDK 
project, I do not have an account for the bug tracker and cannot post my 
code there.

I have attached a diff with the modified hotspot source code to this 
e-mail. This implementation adds a new function category "Operand Stack" 
to JVMTI that contains 5 functions (GetOperandObject, GetOperandInt, 
GetOperandLong, GetOperandFloat, GetOperandDouble) which can be used the 
same way as the corresponding GetLocal<Type> functions.

All changes to the source files are purely additive. No existing 
functions are modified. One new VM Operation "GetOperand" is added and 
implemented. The changes are based on the "JDK 7 Updates Master" branch. 
I have compiled OpenJDK locally with these changes and had no problems 
with them.

However this implementation still has one drawback: the functions are 
not type-safe, as I was unable to find the necessary information within 
hotspot to do proper type-checking of operands. For me this is not a 
problem, because in my project I have a way of inferring operand types 
externally, but for proper production code type-checking should be added 
(there is a FIXME in the added source for this purpose).

I hope someone reading this list has the time to look at this code and 
if they find it suitable, to integrate it into the OpenJDK project. 
About licensing: you may use this code in whatever way, shape or form 
you see fit.

Regards,
Jan


More information about the hotspot-dev mailing list