harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gregory Shimansky <gshiman...@gmail.com>
Subject Re: [drlvm][ti] thread unsafe global list of compiled stubs
Date Fri, 08 Dec 2006 21:30:39 GMT
Alexei Fedotov wrote:
> Gregory, Ilya, TI gurus,
> 
> Could you please help me to understand why do we need a global list of
> ia32 specific code chunks VM_Global_State::loader_env->dcList? Cannot
> we use good old CodeChunkInfo structure?

The information contained in dcList is different from CodeChunks. It 
contains generated stubs which are not compiled Java methods. It is 
necessary for GenerateEvents [1] function implementation with 
JVMTI_EVENT_DYNAMIC_CODE_GENERATED argument. An agent may request to 
receive all missed DynamicCodeGenerated events which it could have 
missed, and therefore it is necessary to store information about 
generated stubs in VM.

> I have noticed that access to the list is not thread safe (you put
> TODO comment here). Does it mean we have some intermittent crashes due
> to this issue?

Yes, this FIXME stands true. It is possible to get a race condition if 
you run a profiling JVMTI agent which uses GenrateEvents function while 
multithreaded application is executed.

But in the normal mode when JVMTI is not used this list is only written, 
and never used. I think that compile_add_dynamic_generated_code_chunk 
should have a check that ti->isEnabled(), or it is just wasting the memory.

[1] 
http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html#GenerateEvents

-- 
Gregory


Mime
View raw message