On 1/25/07, Xiao-Feng Li <[EMAIL PROTECTED]> wrote:

Mikhail, thanks.

> Xiao-Feng,
> JIT does not report objects with type of Address today, because JIT
knows
> them like UnmanagedPointers but not like Objects.
> Address/Offset/Reference and other magics types could be enumerated only
if
>
> 1) We have a field of magic type.
> 2) VM reports it as part of protected JNI arguments.

This is reasonable.

> When I wrote helpers with magics I cared not to use any of the cases
above.
> In the case when I have to save an address to the field I saved its
'int'
> representation.
>
> But If we want to enable fast-path helpers on EM64T we have to support
at
> least case 1)
> I see only one solution here: GC must care about magic types and sizes.

In GCv5 new patch submitted by YuNan, the GChelper class has an
Address field NOS_BOUNDARY. In my test, I found it's enumerated.
NOS_BOUNDARY is only a return value of a JNI method, not JNI argument.

What can be the reason for its being enumerated? Btw, I tested with
today's SVN.


Xiao-Feng,
If you changed the type of
  public static final int NOS_BOUNDARY = getNosBoundary();
to
  public static final Address NOS_BOUNDARY = getNosBoundary();

there is no surprise it's enumerated because of the case 1)
It's not a JIT who reports it. So you can't use fields with Address type
before we teach VM and GC to exclude magic types from enumeration.

--
Mikhail Fursov

Reply via email to