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
36 static long objCounter = 0;
37 static int userData = 0;
38 static jvmtiEnv* st_jvmti = NULL;
39 static jlong nanos = 0;
40 static jvmtiTimerInfo timer_info1, timer_info2;
41
42 /* ============================================================================= */
43
44 /* jvmtiHeapRootCallback */
45 jvmtiIterationControl JNICALL
46 heapRootCallback( jvmtiHeapRootKind root_kind,
47 jlong class_tag,
48 jlong size,
49 jlong* tag_ptr,
50 void* user_data) {
51
52 *tag_ptr = (jlong)++objCounter;
53
54 if (!nsk_jvmti_isFailStatus()) {
55
56 if (!NSK_JVMTI_VERIFY(st_jvmti->GetCurrentThreadCpuTimerInfo(&timer_info1))) {
57 nsk_jvmti_setFailStatus();
58 }
59 /* Check the returned jvmtiTimerInfo structure */
60 if (timer_info1.max_value == 0) {
61 NSK_COMPLAIN0("heapRootCallback: GetCurrentThreadCpuTimerInfo returned zero in jvmtiTimerInfo.max_value\n");
62 nsk_jvmti_setFailStatus();
63 }
64 if (timer_info1.may_skip_forward != JNI_TRUE && timer_info1.may_skip_forward != JNI_FALSE) {
65 NSK_COMPLAIN0("heapRootCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_forward\n");
66 nsk_jvmti_setFailStatus();
67 }
68 if (timer_info1.may_skip_backward != JNI_TRUE && timer_info1.may_skip_backward != JNI_FALSE) {
69 NSK_COMPLAIN0("heapRootCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
70 nsk_jvmti_setFailStatus();
91 if (timer_info2.may_skip_backward != JNI_TRUE && timer_info2.may_skip_backward != JNI_FALSE) {
92 NSK_COMPLAIN0("heapRootCallback: GetTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
93 nsk_jvmti_setFailStatus();
94 }
95 /* ---------------------------------------------------------------------- */
96
97 nanos = 0;
98 if (!NSK_JVMTI_VERIFY(st_jvmti->GetTime(&nanos))) {
99 nsk_jvmti_setFailStatus();
100 }
101 }
102
103 /*
104 NSK_DISPLAY1("heapRootCallback: %d\n", objCounter);
105 */
106 return JVMTI_ITERATION_CONTINUE;
107 }
108
109 /* jvmtiStackReferenceCallback */
110 jvmtiIterationControl JNICALL
111 stackReferenceCallback( jvmtiHeapRootKind root_kind,
112 jlong class_tag,
113 jlong size,
114 jlong* tag_ptr,
115 jlong thread_tag,
116 jint depth,
117 jmethodID method,
118 jint slot,
119 void* user_data) {
120
121 *tag_ptr = (jlong)++objCounter;
122
123 if (!nsk_jvmti_isFailStatus()) {
124
125 if (!NSK_JVMTI_VERIFY(st_jvmti->GetCurrentThreadCpuTimerInfo(&timer_info1))) {
126 nsk_jvmti_setFailStatus();
127 }
128 /* Check the returned jvmtiTimerInfo structure */
129 if (timer_info1.max_value == 0) {
130 NSK_COMPLAIN0("stackReferenceCallback: GetCurrentThreadCpuTimerInfo returned zero in jvmtiTimerInfo.max_value\n");
131 nsk_jvmti_setFailStatus();
132 }
133 if (timer_info1.may_skip_forward != JNI_TRUE && timer_info1.may_skip_forward != JNI_FALSE) {
134 NSK_COMPLAIN0("stackReferenceCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_forward\n");
135 nsk_jvmti_setFailStatus();
136 }
137 if (timer_info1.may_skip_backward != JNI_TRUE && timer_info1.may_skip_backward != JNI_FALSE) {
138 NSK_COMPLAIN0("stackReferenceCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
139 nsk_jvmti_setFailStatus();
161 NSK_COMPLAIN0("stackReferenceCallback: GetTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
162 nsk_jvmti_setFailStatus();
163 }
164 /* ---------------------------------------------------------------------- */
165
166 nanos = 0;
167 if (!NSK_JVMTI_VERIFY(st_jvmti->GetTime(&nanos))) {
168 nsk_jvmti_setFailStatus();
169 }
170 }
171
172 /*
173 NSK_DISPLAY1("stackRefenceCallback: %d\n", objCounter);
174 */
175 return JVMTI_ITERATION_CONTINUE;
176 }
177
178
179 /* jvmtiObjectReferenceCallback */
180 jvmtiIterationControl JNICALL
181 objectReferenceCallback( jvmtiObjectReferenceKind reference_kind,
182 jlong class_tag,
183 jlong size,
184 jlong* tag_ptr,
185 jlong referrer_tag,
186 jint referrer_index,
187 void* user_data) {
188
189 *tag_ptr = (jlong)++objCounter;
190
191 if (!NSK_JVMTI_VERIFY(st_jvmti->GetCurrentThreadCpuTimerInfo(&timer_info1))) {
192 nsk_jvmti_setFailStatus();
193 }
194 /* Check the returned jvmtiTimerInfo structure */
195 if (timer_info1.max_value == 0) {
196 NSK_COMPLAIN0("objectReferenceCallback: GetCurrentThreadCpuTimerInfo returned zero in jvmtiTimerInfo.max_value\n");
197 nsk_jvmti_setFailStatus();
198 }
199 if (timer_info1.may_skip_forward != JNI_TRUE && timer_info1.may_skip_forward != JNI_FALSE) {
200 NSK_COMPLAIN0("objectReferenceCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_forward\n");
201 nsk_jvmti_setFailStatus();
202 }
203 if (timer_info1.may_skip_backward != JNI_TRUE && timer_info1.may_skip_backward != JNI_FALSE) {
204 NSK_COMPLAIN0("objectReferenceCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
205 nsk_jvmti_setFailStatus();
206 }
207 /* ---------------------------------------------------------------------- */
|
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
36 static long objCounter = 0;
37 static int userData = 0;
38 static jvmtiEnv* st_jvmti = NULL;
39 static jlong nanos = 0;
40 static jvmtiTimerInfo timer_info1, timer_info2;
41
42 /* ============================================================================= */
43
44 /* jvmtiHeapRootCallback */
45 jvmtiIterationControl JNICALL
46 heapRootCallback(jvmtiHeapRootKind root_kind,
47 jlong class_tag,
48 jlong size,
49 jlong* tag_ptr,
50 void* user_data) {
51
52 *tag_ptr = (jlong)++objCounter;
53
54 if (!nsk_jvmti_isFailStatus()) {
55
56 if (!NSK_JVMTI_VERIFY(st_jvmti->GetCurrentThreadCpuTimerInfo(&timer_info1))) {
57 nsk_jvmti_setFailStatus();
58 }
59 /* Check the returned jvmtiTimerInfo structure */
60 if (timer_info1.max_value == 0) {
61 NSK_COMPLAIN0("heapRootCallback: GetCurrentThreadCpuTimerInfo returned zero in jvmtiTimerInfo.max_value\n");
62 nsk_jvmti_setFailStatus();
63 }
64 if (timer_info1.may_skip_forward != JNI_TRUE && timer_info1.may_skip_forward != JNI_FALSE) {
65 NSK_COMPLAIN0("heapRootCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_forward\n");
66 nsk_jvmti_setFailStatus();
67 }
68 if (timer_info1.may_skip_backward != JNI_TRUE && timer_info1.may_skip_backward != JNI_FALSE) {
69 NSK_COMPLAIN0("heapRootCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
70 nsk_jvmti_setFailStatus();
91 if (timer_info2.may_skip_backward != JNI_TRUE && timer_info2.may_skip_backward != JNI_FALSE) {
92 NSK_COMPLAIN0("heapRootCallback: GetTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
93 nsk_jvmti_setFailStatus();
94 }
95 /* ---------------------------------------------------------------------- */
96
97 nanos = 0;
98 if (!NSK_JVMTI_VERIFY(st_jvmti->GetTime(&nanos))) {
99 nsk_jvmti_setFailStatus();
100 }
101 }
102
103 /*
104 NSK_DISPLAY1("heapRootCallback: %d\n", objCounter);
105 */
106 return JVMTI_ITERATION_CONTINUE;
107 }
108
109 /* jvmtiStackReferenceCallback */
110 jvmtiIterationControl JNICALL
111 stackReferenceCallback(jvmtiHeapRootKind root_kind,
112 jlong class_tag,
113 jlong size,
114 jlong* tag_ptr,
115 jlong thread_tag,
116 jint depth,
117 jmethodID method,
118 jint slot,
119 void* user_data) {
120
121 *tag_ptr = (jlong)++objCounter;
122
123 if (!nsk_jvmti_isFailStatus()) {
124
125 if (!NSK_JVMTI_VERIFY(st_jvmti->GetCurrentThreadCpuTimerInfo(&timer_info1))) {
126 nsk_jvmti_setFailStatus();
127 }
128 /* Check the returned jvmtiTimerInfo structure */
129 if (timer_info1.max_value == 0) {
130 NSK_COMPLAIN0("stackReferenceCallback: GetCurrentThreadCpuTimerInfo returned zero in jvmtiTimerInfo.max_value\n");
131 nsk_jvmti_setFailStatus();
132 }
133 if (timer_info1.may_skip_forward != JNI_TRUE && timer_info1.may_skip_forward != JNI_FALSE) {
134 NSK_COMPLAIN0("stackReferenceCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_forward\n");
135 nsk_jvmti_setFailStatus();
136 }
137 if (timer_info1.may_skip_backward != JNI_TRUE && timer_info1.may_skip_backward != JNI_FALSE) {
138 NSK_COMPLAIN0("stackReferenceCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
139 nsk_jvmti_setFailStatus();
161 NSK_COMPLAIN0("stackReferenceCallback: GetTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
162 nsk_jvmti_setFailStatus();
163 }
164 /* ---------------------------------------------------------------------- */
165
166 nanos = 0;
167 if (!NSK_JVMTI_VERIFY(st_jvmti->GetTime(&nanos))) {
168 nsk_jvmti_setFailStatus();
169 }
170 }
171
172 /*
173 NSK_DISPLAY1("stackRefenceCallback: %d\n", objCounter);
174 */
175 return JVMTI_ITERATION_CONTINUE;
176 }
177
178
179 /* jvmtiObjectReferenceCallback */
180 jvmtiIterationControl JNICALL
181 objectReferenceCallback(jvmtiObjectReferenceKind reference_kind,
182 jlong class_tag,
183 jlong size,
184 jlong* tag_ptr,
185 jlong referrer_tag,
186 jint referrer_index,
187 void* user_data) {
188
189 *tag_ptr = (jlong)++objCounter;
190
191 if (!NSK_JVMTI_VERIFY(st_jvmti->GetCurrentThreadCpuTimerInfo(&timer_info1))) {
192 nsk_jvmti_setFailStatus();
193 }
194 /* Check the returned jvmtiTimerInfo structure */
195 if (timer_info1.max_value == 0) {
196 NSK_COMPLAIN0("objectReferenceCallback: GetCurrentThreadCpuTimerInfo returned zero in jvmtiTimerInfo.max_value\n");
197 nsk_jvmti_setFailStatus();
198 }
199 if (timer_info1.may_skip_forward != JNI_TRUE && timer_info1.may_skip_forward != JNI_FALSE) {
200 NSK_COMPLAIN0("objectReferenceCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_forward\n");
201 nsk_jvmti_setFailStatus();
202 }
203 if (timer_info1.may_skip_backward != JNI_TRUE && timer_info1.may_skip_backward != JNI_FALSE) {
204 NSK_COMPLAIN0("objectReferenceCallback: GetCurrentThreadCpuTimerInfo returned unknown type value in jvmtiTimerInfo.may_skip_backward\n");
205 nsk_jvmti_setFailStatus();
206 }
207 /* ---------------------------------------------------------------------- */
|