From 8ba141520c44ab720084dbdf3e07a9015a05dc17 Mon Sep 17 00:00:00 2001 From: Bryce McKinlay Date: Mon, 23 Aug 2004 21:31:53 +0000 Subject: [PATCH] prims.cc (JVMPI_NOTIFY_ALLOC): New macro. 2004-08-23 Bryce McKinlay * prims.cc (JVMPI_NOTIFY_ALLOC): New macro. Call jvmpi_notify_alloc only if jvmpi is enabled. (jvmpi_notify_alloc): Don't check if jvmpi is enabled here. (_Jv_AllocObjectNoFinalizer): Use JVMPI_NOTIFY_ALLOC. (_Jv_AllocString): Likewise. (_Jv_AllocPtrFreeObject): Likewise. From-SVN: r86441 --- libjava/ChangeLog | 10 +++++ libjava/prims.cc | 96 ++++++++++++++--------------------------------- 2 files changed, 39 insertions(+), 67 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index bf219e978ee..7e0c0689b7e 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,4 +1,14 @@ +2004-08-23 Bryce McKinlay + + * prims.cc (JVMPI_NOTIFY_ALLOC): New macro. Call jvmpi_notify_alloc + only if jvmpi is enabled. + (jvmpi_notify_alloc): Don't check if jvmpi is enabled here. + (_Jv_AllocObjectNoFinalizer): Use JVMPI_NOTIFY_ALLOC. + (_Jv_AllocString): Likewise. + (_Jv_AllocPtrFreeObject): Likewise. + 2004-08-23 Hans Boehm + * defineclass.cc: Include . * java/lang/natClassLoader.cc: Include . diff --git a/libjava/prims.cc b/libjava/prims.cc index 7f3276e77d8..285363f2cfc 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -364,37 +364,37 @@ void _Jv_ThrowNoMemory() } #ifdef ENABLE_JVMPI +# define JVMPI_NOTIFY_ALLOC(klass,size,obj) \ + if (__builtin_expect (_Jv_JVMPI_Notify_OBJECT_ALLOC != 0, false)) \ + jvmpi_notify_alloc(klass,size,obj); static void jvmpi_notify_alloc(jclass klass, jint size, jobject obj) { // Service JVMPI allocation request. - if (__builtin_expect (_Jv_JVMPI_Notify_OBJECT_ALLOC != 0, false)) - { - 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) klass; - event.u.obj_alloc.is_array = 0; - event.u.obj_alloc.size = size; - event.u.obj_alloc.obj_id = (jobjectID) obj; - - // FIXME: This doesn't look right for the Boehm GC. A GC may - // already be in progress. _Jv_DisableGC () doesn't wait for it. - // More importantly, I don't see the need for disabling GC, since we - // blatantly have a pointer to obj on our stack, ensuring that the - // object can't be collected. Even for a nonconservative collector, - // it appears to me that this must be true, since we are about to - // return obj. Isn't this whole approach way too intrusive for - // a useful profiling interface? - HB - _Jv_DisableGC (); - (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (&event); - _Jv_EnableGC (); - } + 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) klass; + event.u.obj_alloc.is_array = 0; + event.u.obj_alloc.size = size; + event.u.obj_alloc.obj_id = (jobjectID) obj; + + // FIXME: This doesn't look right for the Boehm GC. A GC may + // already be in progress. _Jv_DisableGC () doesn't wait for it. + // More importantly, I don't see the need for disabling GC, since we + // blatantly have a pointer to obj on our stack, ensuring that the + // object can't be collected. Even for a nonconservative collector, + // it appears to me that this must be true, since we are about to + // return obj. Isn't this whole approach way too intrusive for + // a useful profiling interface? - HB + _Jv_DisableGC (); + (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (&event); + _Jv_EnableGC (); } #else /* !ENABLE_JVMPI */ -# define jvmpi_notify_alloc(klass,size,obj) /* do nothing */ +# define JVMPI_NOTIFY_ALLOC(klass,size,obj) /* do nothing */ #endif // Allocate a new object of class KLASS. @@ -407,7 +407,7 @@ _Jv_AllocObjectNoInitNoFinalizer (jclass klass) { jint size = klass->size (); jobject obj = (jobject) _Jv_AllocObj (size, klass); - jvmpi_notify_alloc (klass, size, obj); + JVMPI_NOTIFY_ALLOC (klass, size, obj); return obj; } @@ -418,7 +418,7 @@ _Jv_AllocObjectNoFinalizer (jclass klass) _Jv_InitClass (klass); jint size = klass->size (); jobject obj = (jobject) _Jv_AllocObj (size, klass); - jvmpi_notify_alloc (klass, size, obj); + JVMPI_NOTIFY_ALLOC (klass, size, obj); return obj; } @@ -462,27 +462,8 @@ _Jv_AllocString(jsize len) obj->boffset = sizeof(java::lang::String); obj->count = len; obj->cachedHashCode = 0; - -#ifdef ENABLE_JVMPI - // Service JVMPI request. - if (__builtin_expect (_Jv_JVMPI_Notify_OBJECT_ALLOC != 0, false)) - { - 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) &String::class$; - event.u.obj_alloc.is_array = 0; - event.u.obj_alloc.size = sz; - event.u.obj_alloc.obj_id = (jobjectID) obj; - - _Jv_DisableGC (); - (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (&event); - _Jv_EnableGC (); - } -#endif + JVMPI_NOTIFY_ALLOC (&String::class$, sz, obj); return obj; } @@ -499,26 +480,7 @@ _Jv_AllocPtrFreeObject (jclass klass) jobject obj = (jobject) _Jv_AllocPtrFreeObj (size, klass); -#ifdef ENABLE_JVMPI - // Service JVMPI request. - - if (__builtin_expect (_Jv_JVMPI_Notify_OBJECT_ALLOC != 0, false)) - { - 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) klass; - 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 + JVMPI_NOTIFY_ALLOC (klass, size, obj); return obj; } -- 2.30.2