diff options
| author | green <green@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-04-02 15:34:17 +0000 |
|---|---|---|
| committer | green <green@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-04-02 15:34:17 +0000 |
| commit | 89d1c15834957f4bc62db37dbf77b1f955f84b66 (patch) | |
| tree | 199d2b90d14943e4a167f1af547706f43926aeb3 /libjava/prims.cc | |
| parent | e28c262c90c0dbbc9c4532be0f1c09935e7f4bb5 (diff) | |
| download | ppe42-gcc-89d1c15834957f4bc62db37dbf77b1f955f84b66.tar.gz ppe42-gcc-89d1c15834957f4bc62db37dbf77b1f955f84b66.zip | |
JVMPI changes...
Sun Apr 2 08:27:18 2000 Anthony Green <green@redhat.com>
* configure: Rebuilt.
* configure.in: Add --disable-jvmpi.
* include/config.h.in: Rebuilt.
* acconfig.h: Add ENABLE_JVMPI.
* include/jvm.h: Declare _Jv_DisableGC and _Jv_EnableGC.
(_Jv_JVMPI_Notify_OBJECT_ALLOC): New define.
(_Jv_JVMPI_Notify_THREAD_END): New define.
(_Jv_JVMPI_Notify_THREAD_END): New define.
* prims.cc (_Jv_JVMPI_Notify_OBJECT_ALLOC): Declare.
(_Jv_JVMPI_Notify_THREAD_END): Declare.
(_Jv_JVMPI_Notify_THREAD_END): Declare.
* prims.cc (_Jv_AllocObject): Generate JVMPI object allocation
events.
* java/lang/natThread.cc: Include JVMPI headers if necessary.
(finish_): Generate JVMPI thread end events.
(run_): Generate JVMPI thread start events.
* gnu/gcj/runtime/natFirstThread.cc (run): Call JNI_OnLoad for any
preloaded JNI library.
Include JVMPI headers if necessary.
(run): Generate JVMPI thread start events.
* boehm.cc: Define GC_disable and GC_enable.
(_Jv_DisableGC): New function.
(_Jv_EnableGC): New function.
(disable_gc_mutex): Declare.
* nogc.cc (_Jv_DisableGC): New function.
(_Jv_EnableGC): New function.
* jni.cc (_Jv_JNI_GetEnv): Handle JVMPI interface requests.
(_Jv_JVMPI_Interface): Define.
(jvmpiEnableEvent): New function.
(_Jv_JNI_Init): Initialize _Jv_JVMPI_Interface.
* include/jvmpi.h: New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@32866 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/prims.cc')
| -rw-r--r-- | libjava/prims.cc | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/libjava/prims.cc b/libjava/prims.cc index 81668a86c88..5b1e62d4ba3 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -34,6 +34,10 @@ details. */ #include <java-signal.h> #include <java-threads.h> +#ifdef ENABLE_JVMPI +#include <jvmpi.h> +#endif + #ifndef DISABLE_GETENV_PROPERTIES #include <ctype.h> #include <java-props.h> @@ -83,6 +87,12 @@ property_pair *_Jv_Environment_Properties; // The name of this executable. static char * _Jv_execName; +#ifdef ENABLE_JVMPI +// Pointer to JVMPI notification functions. +void (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (JVMPI_Event *event); +void (*_Jv_JVMPI_Notify_THREAD_START) (JVMPI_Event *event); +void (*_Jv_JVMPI_Notify_THREAD_END) (JVMPI_Event *event); +#endif #ifdef HANDLE_SEGV @@ -326,6 +336,27 @@ _Jv_AllocObject (jclass c, jint size) if (c->vtable->method[1] != ObjectClass.vtable->method[1]) _Jv_RegisterFinalizer (obj, _Jv_FinalizeObject); +#ifdef ENABLE_JVMPI + // Service JVMPI request. + + if (_Jv_JVMPI_Notify_OBJECT_ALLOC) + { + JVMPI_Event event; + + event.event_type = JVMPI_EVENT_OBJECT_ALLOC; + event.env_id = NULL; + event.u.obj_alloc.arena_id = 0; + event.u.obj_alloc.class_id = (jobjectID) c; + event.u.obj_alloc.is_array = 0; + event.u.obj_alloc.size = size; + event.u.obj_alloc.obj_id = (jobjectID) obj; + + _Jv_DisableGC (); + (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (&event); + _Jv_EnableGC (); + } +#endif + return obj; } |

