122 /* :16 */ |
122 /* :16 */ |
123 } |
123 } |
124 |
124 |
125 #define CHECK_CAP(initCaps, caps, name) \ |
125 #define CHECK_CAP(initCaps, caps, name) \ |
126 if (caps->name != 0) { \ |
126 if (caps->name != 0) { \ |
127 success = NSK_FALSE; \ |
127 success = false; \ |
128 NSK_COMPLAIN4("GetCapabilities() in %s returned capability after add and relinguish all potential capabilities:\n" \ |
128 NSK_COMPLAIN4("GetCapabilities() in %s returned capability after add and relinguish all potential capabilities:\n" \ |
129 "# capability: %s\n" \ |
129 "# capability: %s\n" \ |
130 "# got value: %d\n" \ |
130 "# got value: %d\n" \ |
131 "# expected: %d\n", \ |
131 "# expected: %d\n", \ |
132 where, #name, (int)caps->name, 0) ; \ |
132 where, #name, (int)caps->name, 0) ; \ |
133 } |
133 } |
134 |
134 |
135 /** |
135 /** |
136 * Check value of known capabilities. |
136 * Check value of known capabilities. |
137 * @returns NSK_FALSE if any error occured. |
137 * @returns false if any error occured. |
138 */ |
138 */ |
139 static int checkCapabilitiesValue(jvmtiCapabilities* caps, jvmtiCapabilities* initCaps, const char where[]) { |
139 static bool checkCapabilitiesValue(jvmtiCapabilities* caps, jvmtiCapabilities* initCaps, const char where[]) { |
140 int success = NSK_TRUE; |
140 bool success = true; |
141 |
141 |
142 CHECK_CAP(initCaps, caps, can_tag_objects); |
142 CHECK_CAP(initCaps, caps, can_tag_objects); |
143 CHECK_CAP(initCaps, caps, can_generate_field_modification_events); |
143 CHECK_CAP(initCaps, caps, can_generate_field_modification_events); |
144 CHECK_CAP(initCaps, caps, can_generate_field_access_events); |
144 CHECK_CAP(initCaps, caps, can_generate_field_access_events); |
145 CHECK_CAP(initCaps, caps, can_get_bytecodes); |
145 CHECK_CAP(initCaps, caps, can_get_bytecodes); |
182 return success; |
182 return success; |
183 } |
183 } |
184 |
184 |
185 /** |
185 /** |
186 * Get and check current capabilities. |
186 * Get and check current capabilities. |
187 * @returns NSK_FALSE if any error occured. |
187 * @returns false if any error occured. |
188 */ |
188 */ |
189 static int checkCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* initCaps, const char where[]) { |
189 static bool checkCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* initCaps, const char where[]) { |
190 int success = NSK_TRUE; |
190 bool success = true; |
191 jvmtiCapabilities caps; |
191 jvmtiCapabilities caps; |
192 |
192 |
193 memset(&caps, 0, sizeof(jvmtiCapabilities)); |
193 memset(&caps, 0, sizeof(jvmtiCapabilities)); |
194 |
194 |
195 NSK_DISPLAY0("GetCapabilities() for current JVMTI env\n"); |
195 NSK_DISPLAY0("GetCapabilities() for current JVMTI env\n"); |
196 if (!NSK_JVMTI_VERIFY(jvmti->GetCapabilities(&caps))) { |
196 if (!NSK_JVMTI_VERIFY(jvmti->GetCapabilities(&caps))) { |
197 return NSK_FALSE; |
197 return false; |
198 } |
198 } |
199 |
199 |
200 NSK_DISPLAY0("Got raw capabilities:\n"); |
200 NSK_DISPLAY0("Got raw capabilities:\n"); |
201 printRawCapabilities(&caps); |
201 printRawCapabilities(&caps); |
202 |
202 |
210 return success; |
210 return success; |
211 } |
211 } |
212 |
212 |
213 /** |
213 /** |
214 * Add given capabilities list. |
214 * Add given capabilities list. |
215 * @returns NSK_FALSE if any error occured. |
215 * @returns false if any error occured. |
216 */ |
216 */ |
217 static int addCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps) { |
217 static bool addCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps) { |
218 NSK_DISPLAY0("AddCapabilities() for current JVMTI env\n"); |
218 NSK_DISPLAY0("AddCapabilities() for current JVMTI env\n"); |
219 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(caps))) { |
219 if (!NSK_JVMTI_VERIFY(jvmti->AddCapabilities(caps))) { |
220 return NSK_FALSE; |
220 return false; |
221 } |
221 } |
222 NSK_DISPLAY0(" ... set\n"); |
222 NSK_DISPLAY0(" ... set\n"); |
223 |
223 |
224 return NSK_TRUE; |
224 return true; |
225 } |
225 } |
226 |
226 |
227 /** |
227 /** |
228 * Remove given capabilities list. |
228 * Remove given capabilities list. |
229 * @returns NSK_FALSE if any error occured. |
229 * @returns false if any error occured. |
230 */ |
230 */ |
231 static int removeCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps, const char where[]) { |
231 static bool removeCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps, const char where[]) { |
232 NSK_DISPLAY0("RelinquishCapabilities() for current JVMTI env\n"); |
232 NSK_DISPLAY0("RelinquishCapabilities() for current JVMTI env\n"); |
233 if (!NSK_JVMTI_VERIFY(jvmti->RelinquishCapabilities(caps))) { |
233 if (!NSK_JVMTI_VERIFY(jvmti->RelinquishCapabilities(caps))) { |
234 return NSK_FALSE; |
234 return false; |
235 } |
235 } |
236 NSK_DISPLAY0(" ... relinguished\n"); |
236 NSK_DISPLAY0(" ... relinguished\n"); |
237 |
237 |
238 return NSK_TRUE; |
238 return true; |
239 } |
239 } |
240 |
240 |
241 /** |
241 /** |
242 * Get potential capabilities to the given list. |
242 * Get potential capabilities to the given list. |
243 * @returns NSK_FALSE if any error occured. |
243 * @returns false if any error occured. |
244 */ |
244 */ |
245 static int getPotentialCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps) { |
245 static bool getPotentialCapabilities(jvmtiEnv* jvmti, jvmtiCapabilities* caps) { |
246 NSK_DISPLAY0("GetPotentialCapabilities() for current JVMTI env\n"); |
246 NSK_DISPLAY0("GetPotentialCapabilities() for current JVMTI env\n"); |
247 if (!NSK_JVMTI_VERIFY(jvmti->GetPotentialCapabilities(caps))) { |
247 if (!NSK_JVMTI_VERIFY(jvmti->GetPotentialCapabilities(caps))) { |
248 return NSK_FALSE; |
248 return false; |
249 } |
249 } |
250 |
250 |
251 NSK_DISPLAY0("Got raw capabilities:\n"); |
251 NSK_DISPLAY0("Got raw capabilities:\n"); |
252 printRawCapabilities(caps); |
252 printRawCapabilities(caps); |
253 |
253 |
254 NSK_DISPLAY0("Known capabilities:\n"); |
254 NSK_DISPLAY0("Known capabilities:\n"); |
255 printKnownCapabilities(caps); |
255 printKnownCapabilities(caps); |
256 |
256 |
257 return NSK_TRUE; |
257 return true; |
258 } |
258 } |
259 |
259 |
260 /* ============================================================================= */ |
260 /* ============================================================================= */ |
261 |
261 |
262 /** Agent algorithm. */ |
262 /** Agent algorithm. */ |
293 /** |
293 /** |
294 * Callback for VM_DEATH event. |
294 * Callback for VM_DEATH event. |
295 */ |
295 */ |
296 JNIEXPORT void JNICALL |
296 JNIEXPORT void JNICALL |
297 callbackVMDeath(jvmtiEnv* jvmti, JNIEnv* jni) { |
297 callbackVMDeath(jvmtiEnv* jvmti, JNIEnv* jni) { |
298 int success = NSK_TRUE; |
298 bool success = true; |
299 |
299 |
300 NSK_DISPLAY0(">>> Testcase #4: Check capabilities in VM_DEATH callback\n"); |
300 NSK_DISPLAY0(">>> Testcase #4: Check capabilities in VM_DEATH callback\n"); |
301 success = checkCapabilities(jvmti, &initCaps, "VM_DEATH callback"); |
301 success = checkCapabilities(jvmti, &initCaps, "VM_DEATH callback"); |
302 |
302 |
303 NSK_DISPLAY1("Disable events: %d events\n", EVENTS_COUNT); |
303 NSK_DISPLAY1("Disable events: %d events\n", EVENTS_COUNT); |
304 if (!nsk_jvmti_enableEvents(JVMTI_DISABLE, EVENTS_COUNT, events, NULL)) { |
304 if (!nsk_jvmti_enableEvents(JVMTI_DISABLE, EVENTS_COUNT, events, NULL)) { |
305 success = NSK_FALSE; |
305 success = false; |
306 } else { |
306 } else { |
307 NSK_DISPLAY0(" ... disabled\n"); |
307 NSK_DISPLAY0(" ... disabled\n"); |
308 } |
308 } |
309 |
309 |
310 if (success != NSK_TRUE) { |
310 if (success != true) { |
311 NSK_DISPLAY1("Exit with FAIL exit status: %d\n", STATUS_FAIL); |
311 NSK_DISPLAY1("Exit with FAIL exit status: %d\n", STATUS_FAIL); |
312 NSK_BEFORE_TRACE(exit(STATUS_FAIL)); |
312 NSK_BEFORE_TRACE(exit(STATUS_FAIL)); |
313 } |
313 } |
314 } |
314 } |
315 |
315 |