location of static data (was Re: Problem in Thread.c)

"Chris Pickett" <[email protected]> Sun, 16 Apr 2006 19:31:07 -0400 (EDT)
Newsgroups gmane.comp.java.vm.sablevm.devel
Message-ID <[email protected]>
Hi Etienne,

Oh, I'm confused now.  I had thought the wrong thing for a long long
time... :(

Is it the case that in INVOKESTATIC, the line below deferences an
_svmt_object_instance ** to an _svmt_object_instance *, and that the ** i=
s
not located on the heap but the * is?

  _svmt_object_instance *instance =3D *(method->class_info->class_instanc=
e);

When PUTSTATIC_<X> is executed, where does that write?  Previously, I
thought it wrote to a class field that was outside of the heap.

Do the Class instances move on GC?

If so does that mean the jvalue * below from PUTSTATIC_<X>, which is
stored in the code array, gets updated when GC happens?

  jvalue *pvalue =3D (pc++)->pvalue;
  pvalue->$3 =3D stack[--stack_size].$2;

Thanks a lot Etienne, sorry if I confused you Sebastien,
Chris

On Sun, April 16, 2006 6:48 pm, Etienne Gagnon wrote:
> Hi Chris,
>
>
> All object instances are in the heap.  Invoke static has no instance,
> but synchronizes on the Class instance of its class.  Only the internal=
 VM
> data structures of the class are in class loader memory.
>
> Etienne
>
>
> Chris Pickett wrote:
>
>> This is just a guess, but maybe it is because the object instance for
>> an INVOKESTATIC is not on the heap but in class loader memory.
>>
>
> --
> Etienne M. Gagnon, Ph.D.            http://www.info2.uqam.ca/~egagnon/
> SableVM:                                       http://www.sablevm.org/
> SableCC:                                       http://www.sablecc.org/
> _______________________________________________
> SableVM-devel mailing list
> [email protected]
> http://sablevm.org/lists/control/listinfo/sablevm-devel
>
>