Why does "jobject" on interpreter stack point to wield locations?

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Tue Apr 14 09:22:03 PDT 2009


That interpreter stack doesn't use jobjects.  It contains raw  
references to Java objects so just use them directly.

tom

On Apr 13, 2009, at 9:21 PM, Colin(Du Li) wrote:

>
> Hello.
> I'm playing with stack of c++ interpreter. I have some questions  
> about the
> object reference on the stack.
> Let's look at the following example:
> When interpreter invoke("invokespecial") method  "virtual jobject
> java.lang.ClassLoader.loadClass(jobject)", I print out stack frame  
> (last
> frame), and the result is as follows:
>
> - local  [0x7e747b90] ; #0
> - local  [0x7e7489d0] ; #1
> - stack  [0x7e7489d0] ; #1
> - stack  [0x7e747b90] ; #0
> [ - obj
> a 'sun/misc/Launcher$AppClassLoader'
> - lock
> monitor
> - monitor[0xbff3f8c8]
> - bcp    [0xb3f3fa4e] ; @2
> - locals [0xbff3f944]
> - method [0xb3f3fa78] ; virtual jobject
> java.lang.ClassLoader.loadClassInternal(jobject)
>
> According to the jvm specification, stack slot #0 should contain the
> "receiver", and stack slot to the parameter of method  
> "loadclass(jobject)".
> I use JNIHandles::resolve(obj) to resolve the two jobjects on the  
> above
> stack slot. The result of slot #0 is a reference pointing to another  
> slot of
> the current stack. The result of slot #1 is a invalid address, "0x1".
> The results confuse me. I assumed both of them pointed to some  
> object is
> heap.
> Could you give me some explanation for this question?
> I really need your help.
> Thanks a lot!
>
> Colin.
> -- 
> View this message in context: http://www.nabble.com/Why-does-%22jobject%22-on-interpreter-stack-point-to-wield-locations--tp23033048p23033048.html
> Sent from the OpenJDK Hotspot Virtual Machine mailing list archive  
> at Nabble.com.
>




More information about the hotspot-dev mailing list