Getting ciObject from oop/jobject

Krystal Mok rednaxelafx at gmail.com
Thu Aug 1 06:16:14 PDT 2013


Hi Nick,

This topic is related to HotSpot Server Compiler instead of the Java core
library, so I'm cc'ing this email to hotspot-compiler-dev and dropping
core-libs-dev.

As you already know, HotSpot compilers are shielded from VM runtime
implementation details via the Compiler Interface (CI). That's why you
shouldn't be getting raw oops in C2 code.

Where are you getting the oopInstance from? If it can be found from some
known "roots", e.g. "well-known classes", fields of "well-known classes",
or the holder class of the method to be compiled, etc., then it's already
available through CI.

- Kris


On Thu, Aug 1, 2013 at 3:17 AM, Nick Williams <
nicholas+openjdk at nicholaswilliams.net> wrote:

> In native code (library_call.cpp), if I have an oop (which I can convert
> to a jobject if need be), how do I get a ciObject? I see that ciEnv has a
> ciObject* get_object(oop) method, but it's private. And ciObjectFactory has
> a ciObject* get(oop) method, but I can't figure out how to get the
> ciObjectFactory instance.
>
> I know that ciObject keeps a jobject internally, and I know that ciObject
> has a ciObject(oop) constructor, but it's protected (for good reason).
>
> If it helps, I'm trying to inline a method and need to
> set_result(makecon(TypeInstPtr::make(oopInstance))). I may be going down
> the wrong path.
>
> Thanks in advance for any help,
>
> Nick
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/attachments/20130801/ae9555e5/attachment.html 


More information about the hotspot-compiler-dev mailing list