Xiao-Feng,

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

Mikhail, we want to seperate the GC module from TM so that only
limited VM APIs are accessed from GC. That means, we want a simpler
API to get GC thread info than accessing GC TLS data individually.
Using info.get_tls_current_free() to access a field info of GC TLS
data looks like not very elegant. Can't we deference once to get the
field info from (GC TLS data pointer + offset_of_free_in_GC_tls)?


The current hythread API we have allows to allocate keys for void* sized
values only.
Let's ask TM developers why can't we allocate N*(void*) sized values with a
single key?

The situation we have is rather simple: VM_thread does not allow you to have
static offsets (so your helper could not be efficiently inlined) and to
access to a data in VM_thread you have to perform +1 memory access in
comparison with access to HyThread fields.


This
can keep the GC_Thread_Info of GC (or Allocator structure in GCv5). I
think this is important for modularity. Thanks.


Here we have different vision what modularity is. Thread Manager is
responsible to work with threads, so I do not understand why VM should
delegate all of the API of TM that is needed by different components? In
this case VM must do it for every component, not only for TM, isn't it?

The same is with VM_thread: the way it keeps gc_private_data is a hack that
brokes the design. What if GC needs more TLS slots than available in
VM_thread? What if a component XYZ needs TLS data? Will we add it to
VM_thread xyz_private_data[N] field?




--
Mikhail Fursov

Reply via email to