23
24 #include <string.h>
25 #include "jvmti.h"
26 #include "agent_common.h"
27 #include "jni_tools.h"
28 #include "jvmti_tools.h"
29
30 extern "C" {
31
32 /* ============================================================================= */
33
34 static jlong timeout = 0;
35 static int fakeUserData = 0, objCounter = 0;
36 static jvmtiEnv* st_jvmti = NULL;
37 static const char* debugeeClassSignature = "Lnsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj003;";
38 static const char* objectFieldName = "object";
39
40 /* ============================================================================= */
41
42 jvmtiIterationControl JNICALL
43 objectReferenceCallback( jvmtiObjectReferenceKind reference_kind,
44 jlong class_tag,
45 jlong size,
46 jlong* tag_ptr,
47 jlong referrer_tag,
48 jint referrer_index,
49 void* user_data) {
50
51 const char* name = "monitorName";
52 jrawMonitorID monitor_ptr = NULL;
53
54 objCounter++;
55
56 if (!NSK_JVMTI_VERIFY(st_jvmti->CreateRawMonitor(name, &monitor_ptr))) {
57 nsk_jvmti_setFailStatus();
58 return JVMTI_ITERATION_ABORT;
59 }
60
61 if (!NSK_JVMTI_VERIFY(st_jvmti->RawMonitorEnter(monitor_ptr))) {
62 nsk_jvmti_setFailStatus();
63 return JVMTI_ITERATION_ABORT;
64 }
65
66 /* Enter second time */
67 if (!NSK_JVMTI_VERIFY(st_jvmti->RawMonitorEnter(monitor_ptr))) {
68 nsk_jvmti_setFailStatus();
69 return JVMTI_ITERATION_ABORT;
|
23
24 #include <string.h>
25 #include "jvmti.h"
26 #include "agent_common.h"
27 #include "jni_tools.h"
28 #include "jvmti_tools.h"
29
30 extern "C" {
31
32 /* ============================================================================= */
33
34 static jlong timeout = 0;
35 static int fakeUserData = 0, objCounter = 0;
36 static jvmtiEnv* st_jvmti = NULL;
37 static const char* debugeeClassSignature = "Lnsk/jvmti/IterateOverObjectsReachableFromObject/iterobjreachobj003;";
38 static const char* objectFieldName = "object";
39
40 /* ============================================================================= */
41
42 jvmtiIterationControl JNICALL
43 objectReferenceCallback(jvmtiObjectReferenceKind reference_kind,
44 jlong class_tag,
45 jlong size,
46 jlong* tag_ptr,
47 jlong referrer_tag,
48 jint referrer_index,
49 void* user_data) {
50
51 const char* name = "monitorName";
52 jrawMonitorID monitor_ptr = NULL;
53
54 objCounter++;
55
56 if (!NSK_JVMTI_VERIFY(st_jvmti->CreateRawMonitor(name, &monitor_ptr))) {
57 nsk_jvmti_setFailStatus();
58 return JVMTI_ITERATION_ABORT;
59 }
60
61 if (!NSK_JVMTI_VERIFY(st_jvmti->RawMonitorEnter(monitor_ptr))) {
62 nsk_jvmti_setFailStatus();
63 return JVMTI_ITERATION_ABORT;
64 }
65
66 /* Enter second time */
67 if (!NSK_JVMTI_VERIFY(st_jvmti->RawMonitorEnter(monitor_ptr))) {
68 nsk_jvmti_setFailStatus();
69 return JVMTI_ITERATION_ABORT;
|