< prev index next >

src/share/vm/services/threadService.cpp

Print this page
rev 13054 : imported patch monitor_deflate_conc


 463 
 464 void ThreadDumpResult::metadata_do(void f(Metadata*)) {
 465   for (ThreadSnapshot* ts = _snapshots; ts != NULL; ts = ts->next()) {
 466     ts->metadata_do(f);
 467   }
 468 }
 469 
 470 StackFrameInfo::StackFrameInfo(javaVFrame* jvf, bool with_lock_info) {
 471   _method = jvf->method();
 472   _bci = jvf->bci();
 473   _class_holder = _method->method_holder()->klass_holder();
 474   _locked_monitors = NULL;
 475   if (with_lock_info) {
 476     ResourceMark rm;
 477     GrowableArray<MonitorInfo*>* list = jvf->locked_monitors();
 478     int length = list->length();
 479     if (length > 0) {
 480       _locked_monitors = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<oop>(length, true);
 481       for (int i = 0; i < length; i++) {
 482         MonitorInfo* monitor = list->at(i);
 483         assert(monitor->owner(), "This monitor must have an owning object");
 484         _locked_monitors->append(monitor->owner());
 485       }
 486     }
 487   }
 488 }
 489 
 490 void StackFrameInfo::oops_do(OopClosure* f) {
 491   if (_locked_monitors != NULL) {
 492     int length = _locked_monitors->length();
 493     for (int i = 0; i < length; i++) {
 494       f->do_oop((oop*) _locked_monitors->adr_at(i));
 495     }
 496   }
 497   f->do_oop(&_class_holder);
 498 }
 499 
 500 void StackFrameInfo::metadata_do(void f(Metadata*)) {
 501   f(_method);
 502 }
 503 




 463 
 464 void ThreadDumpResult::metadata_do(void f(Metadata*)) {
 465   for (ThreadSnapshot* ts = _snapshots; ts != NULL; ts = ts->next()) {
 466     ts->metadata_do(f);
 467   }
 468 }
 469 
 470 StackFrameInfo::StackFrameInfo(javaVFrame* jvf, bool with_lock_info) {
 471   _method = jvf->method();
 472   _bci = jvf->bci();
 473   _class_holder = _method->method_holder()->klass_holder();
 474   _locked_monitors = NULL;
 475   if (with_lock_info) {
 476     ResourceMark rm;
 477     GrowableArray<MonitorInfo*>* list = jvf->locked_monitors();
 478     int length = list->length();
 479     if (length > 0) {
 480       _locked_monitors = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<oop>(length, true);
 481       for (int i = 0; i < length; i++) {
 482         MonitorInfo* monitor = list->at(i);
 483         assert(monitor->owner() != NULL, "This monitor must have an owning object");
 484         _locked_monitors->append(monitor->owner());
 485       }
 486     }
 487   }
 488 }
 489 
 490 void StackFrameInfo::oops_do(OopClosure* f) {
 491   if (_locked_monitors != NULL) {
 492     int length = _locked_monitors->length();
 493     for (int i = 0; i < length; i++) {
 494       f->do_oop((oop*) _locked_monitors->adr_at(i));
 495     }
 496   }
 497   f->do_oop(&_class_holder);
 498 }
 499 
 500 void StackFrameInfo::metadata_do(void f(Metadata*)) {
 501   f(_method);
 502 }
 503 


< prev index next >