376 _bps.initialize(this,listener_fun);
377 }
378
379 JvmtiBreakpoints:: ~JvmtiBreakpoints() {}
380
381 void JvmtiBreakpoints::oops_do(OopClosure* f) {
382 _bps.oops_do(f);
383 }
384
385 void JvmtiBreakpoints::metadata_do(void f(Metadata*)) {
386 _bps.metadata_do(f);
387 }
388
389 void JvmtiBreakpoints::gc_epilogue() {
390 _bps.gc_epilogue();
391 }
392
393 void JvmtiBreakpoints::print() {
394 #ifndef PRODUCT
395 LogTarget(Trace, jvmti) log;
396 LogStreamCHeap log_stream(log);
397
398 int n = _bps.length();
399 for (int i=0; i<n; i++) {
400 JvmtiBreakpoint& bp = _bps.at(i);
401 log_stream.print("%d: ", i);
402 bp.print_on(&log_stream);
403 log_stream.cr();
404 }
405 #endif
406 }
407
408
409 void JvmtiBreakpoints::set_at_safepoint(JvmtiBreakpoint& bp) {
410 assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
411
412 int i = _bps.find(bp);
413 if (i == -1) {
414 _bps.append(bp);
415 bp.set();
416 }
|
376 _bps.initialize(this,listener_fun);
377 }
378
379 JvmtiBreakpoints:: ~JvmtiBreakpoints() {}
380
381 void JvmtiBreakpoints::oops_do(OopClosure* f) {
382 _bps.oops_do(f);
383 }
384
385 void JvmtiBreakpoints::metadata_do(void f(Metadata*)) {
386 _bps.metadata_do(f);
387 }
388
389 void JvmtiBreakpoints::gc_epilogue() {
390 _bps.gc_epilogue();
391 }
392
393 void JvmtiBreakpoints::print() {
394 #ifndef PRODUCT
395 LogTarget(Trace, jvmti) log;
396 LogStream log_stream(log);
397
398 int n = _bps.length();
399 for (int i=0; i<n; i++) {
400 JvmtiBreakpoint& bp = _bps.at(i);
401 log_stream.print("%d: ", i);
402 bp.print_on(&log_stream);
403 log_stream.cr();
404 }
405 #endif
406 }
407
408
409 void JvmtiBreakpoints::set_at_safepoint(JvmtiBreakpoint& bp) {
410 assert(SafepointSynchronize::is_at_safepoint(), "must be at safepoint");
411
412 int i = _bps.find(bp);
413 if (i == -1) {
414 _bps.append(bp);
415 bp.set();
416 }
|