#include "dacapolog.h" #include "dacapotag.h" #include "dacapooptions.h" #include "dacapolock.h" #include "dacapothread.h" #include "dacapoallocation.h" static long gcForceCycle = 0; static long gcCount = 0; void allocation_init() { } void allocation_capabilities(const jvmtiCapabilities* availableCapabilities, jvmtiCapabilities* capabilities) { if (isSelected(OPT_ALLOCATE,NULL)) { capabilities->can_generate_vm_object_alloc_events = availableCapabilities->can_generate_vm_object_alloc_events; capabilities->can_generate_object_free_events = availableCapabilities->can_generate_object_free_events; } } void allocation_callbacks(const jvmtiCapabilities* capabilities, jvmtiEventCallbacks* callbacks) { if (isSelected(OPT_ALLOCATE,NULL)) { if (capabilities->can_generate_vm_object_alloc_events) DEFINE_CALLBACK(callbacks,VMObjectAlloc,JVMTI_EVENT_VM_OBJECT_ALLOC); if (capabilities->can_generate_object_free_events) DEFINE_CALLBACK(callbacks,ObjectFree,JVMTI_EVENT_OBJECT_FREE); } char* arg = NULL; if (isSelected(OPT_GC,&arg)) { gcForceCycle = atol(arg); if (arg != NULL) { free(arg); arg = NULL; } } } static jint forceGC(JNIEnv *env) { gcCount = 0; rawMonitorEnter(&lockLog); log_field_string(LOG_PREFIX_GC); log_field_current_time(); log_eol(); rawMonitorExit(&lockLog); jint res = JVMTI_FUNC_PTR(baseEnv,ForceGarbageCollection)(baseEnv); setReportHeap(env,!FALSE); return res; } void allocation_logon(JNIEnv* env) { if (jvmRunning && !jvmStopped && 0