Commit 9ea6c4a4 by Keith Seitz Committed by Keith Seitz

link.cc (_Jv_Linker::wait_for_state): Add JVMTI CLASS_PREPARE notification.

        * link.cc (_Jv_Linker::wait_for_state): Add JVMTI
        CLASS_PREPARE notification.

From-SVN: r121157
parent ee411336
2007-01-24 Keith Seitz <keiths@redhat.com> 2007-01-24 Keith Seitz <keiths@redhat.com>
* link.cc (_Jv_Linker::wait_for_state): Add JVMTI
CLASS_PREPARE notification.
2007-01-24 Keith Seitz <keiths@redhat.com>
* interpret.cc: Include gnu/gcj/jvmti/Breakpoint.h, * interpret.cc: Include gnu/gcj/jvmti/Breakpoint.h,
gnu/gcj/jvmti/BreakpointManager.h, jvmti.h, and jvmti-int.h gnu/gcj/jvmti/BreakpointManager.h, jvmti.h, and jvmti-int.h
* interpret-run.cc: Implement insn_breakpoint. * interpret-run.cc: Implement insn_breakpoint.
......
...@@ -33,6 +33,8 @@ details. */ ...@@ -33,6 +33,8 @@ details. */
#include <limits.h> #include <limits.h>
#include <java-cpool.h> #include <java-cpool.h>
#include <execution.h> #include <execution.h>
#include <jvmti.h>
#include "jvmti-int.h"
#include <java/lang/Class.h> #include <java/lang/Class.h>
#include <java/lang/String.h> #include <java/lang/String.h>
#include <java/lang/StringBuffer.h> #include <java/lang/StringBuffer.h>
...@@ -1941,11 +1943,13 @@ _Jv_Linker::wait_for_state (jclass klass, int state) ...@@ -1941,11 +1943,13 @@ _Jv_Linker::wait_for_state (jclass klass, int state)
if (klass->state >= state) if (klass->state >= state)
return; return;
java::lang::Thread *self = java::lang::Thread::currentThread();
{
JvSynchronize sync (klass); JvSynchronize sync (klass);
// This is similar to the strategy for class initialization. If we // This is similar to the strategy for class initialization. If we
// already hold the lock, just leave. // already hold the lock, just leave.
java::lang::Thread *self = java::lang::Thread::currentThread();
while (klass->state <= state while (klass->state <= state
&& klass->thread && klass->thread
&& klass->thread != self) && klass->thread != self)
...@@ -2026,4 +2030,14 @@ _Jv_Linker::wait_for_state (jclass klass, int state) ...@@ -2026,4 +2030,14 @@ _Jv_Linker::wait_for_state (jclass klass, int state)
if (klass->state == JV_STATE_ERROR) if (klass->state == JV_STATE_ERROR)
throw new java::lang::LinkageError; throw new java::lang::LinkageError;
}
if (__builtin_expect (klass->state == JV_STATE_LINKED, false)
&& state >= JV_STATE_LINKED
&& JVMTI_REQUESTED_EVENT (ClassPrepare))
{
JNIEnv *jni_env = _Jv_GetCurrentJNIEnv ();
_Jv_JVMTI_PostEvent (JVMTI_EVENT_CLASS_PREPARE, self, jni_env,
klass);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment