re PR libgcj/8995 (race cases in interpreter)

2008-09-17  Andrew Haley  <aph@redhat.com>

        PR libgcj/8995:

        * defineclass.cc (_Jv_ClassReader::handleCodeAttribute):
        Initialize thread_count.
        * include/java-interp.h (_Jv_InterpMethod::thread_count): New
        field.
         (_Jv_InterpMethod::rewrite_insn_mutex): New mutex.
        (_Jv_InterpFrame:: _Jv_InterpFrame): Pass frame_type.
        * interpret.cc
        (ThreadCountAdjuster): New class.
        (_Jv_InterpMethod::thread_count): New field.
        (_Jv_InitInterpreter): Initialize rewrite_insn_mutex.
        Increment and decrement thread_count field in methods.
        * interpret-run.cc (REWRITE_INSN): Check thread_count <= 1.
        (REWRITE_INSN): Likewise.
        Declare a ThreadCountAdjuster.
        * java/lang/reflect/natVMProxy.cc (run_proxy): Initialize frame
        type as frame_proxy.

From-SVN: r140593
This commit is contained in:
Andrew Haley
2008-09-23 13:51:58 +00:00
committed by Andrew Haley
parent 5c0466b537
commit f0580031a7
6 changed files with 155 additions and 31 deletions

View File

@@ -1682,7 +1682,9 @@ void _Jv_ClassReader::handleCodeAttribute
method->prepared = NULL;
method->line_table_len = 0;
method->line_table = NULL;
#ifdef DIRECT_THREADED
method->thread_count = 0;
#endif
// grab the byte code!
memcpy ((void*) method->bytecode (),