aboutsummaryrefslogtreecommitdiff
path: root/libjava/prims.cc
diff options
context:
space:
mode:
authorAnthony Green <green@redhat.com>2000-04-02 15:34:17 +0000
committerAnthony Green <green@gcc.gnu.org>2000-04-02 15:34:17 +0000
commit54c2f04ba05ce07e701345bc66d038b7d47a9bed (patch)
tree199d2b90d14943e4a167f1af547706f43926aeb3 /libjava/prims.cc
parent49d1b8712898e27fde111afc2310e0d43768e8d7 (diff)
downloadgcc-54c2f04ba05ce07e701345bc66d038b7d47a9bed.zip
gcc-54c2f04ba05ce07e701345bc66d038b7d47a9bed.tar.gz
gcc-54c2f04ba05ce07e701345bc66d038b7d47a9bed.tar.bz2
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. From-SVN: r32866
Diffstat (limited to 'libjava/prims.cc')
-rw-r--r--libjava/prims.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/libjava/prims.cc b/libjava/prims.cc
index 81668a8..5b1e62d 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;
}