< prev index next >

src/hotspot/share/services/threadService.cpp

Print this page
rev 59864 : imported patch 8249192-stackwalking-patch


 569   }
 570 }
 571 
 572 void ThreadDumpResult::metadata_do(void f(Metadata*)) {
 573   for (ThreadSnapshot* ts = _snapshots; ts != NULL; ts = ts->next()) {
 574     ts->metadata_do(f);
 575   }
 576 }
 577 
 578 ThreadsList* ThreadDumpResult::t_list() {
 579   return _setter.list();
 580 }
 581 
 582 StackFrameInfo::StackFrameInfo(javaVFrame* jvf, bool with_lock_info) {
 583   _method = jvf->method();
 584   _bci = jvf->bci();
 585   _class_holder = _method->method_holder()->klass_holder();
 586   _locked_monitors = NULL;
 587   if (with_lock_info) {
 588     ResourceMark rm;

 589     GrowableArray<MonitorInfo*>* list = jvf->locked_monitors();
 590     int length = list->length();
 591     if (length > 0) {
 592       _locked_monitors = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<oop>(length, true);
 593       for (int i = 0; i < length; i++) {
 594         MonitorInfo* monitor = list->at(i);
 595         assert(monitor->owner() != NULL, "This monitor must have an owning object");
 596         _locked_monitors->append(monitor->owner());
 597       }
 598     }
 599   }
 600 }
 601 
 602 void StackFrameInfo::oops_do(OopClosure* f) {
 603   if (_locked_monitors != NULL) {
 604     int length = _locked_monitors->length();
 605     for (int i = 0; i < length; i++) {
 606       f->do_oop((oop*) _locked_monitors->adr_at(i));
 607     }
 608   }




 569   }
 570 }
 571 
 572 void ThreadDumpResult::metadata_do(void f(Metadata*)) {
 573   for (ThreadSnapshot* ts = _snapshots; ts != NULL; ts = ts->next()) {
 574     ts->metadata_do(f);
 575   }
 576 }
 577 
 578 ThreadsList* ThreadDumpResult::t_list() {
 579   return _setter.list();
 580 }
 581 
 582 StackFrameInfo::StackFrameInfo(javaVFrame* jvf, bool with_lock_info) {
 583   _method = jvf->method();
 584   _bci = jvf->bci();
 585   _class_holder = _method->method_holder()->klass_holder();
 586   _locked_monitors = NULL;
 587   if (with_lock_info) {
 588     ResourceMark rm;
 589     HandleMark hm;
 590     GrowableArray<MonitorInfo*>* list = jvf->locked_monitors();
 591     int length = list->length();
 592     if (length > 0) {
 593       _locked_monitors = new (ResourceObj::C_HEAP, mtInternal) GrowableArray<oop>(length, true);
 594       for (int i = 0; i < length; i++) {
 595         MonitorInfo* monitor = list->at(i);
 596         assert(monitor->owner() != NULL, "This monitor must have an owning object");
 597         _locked_monitors->append(monitor->owner());
 598       }
 599     }
 600   }
 601 }
 602 
 603 void StackFrameInfo::oops_do(OopClosure* f) {
 604   if (_locked_monitors != NULL) {
 605     int length = _locked_monitors->length();
 606     for (int i = 0; i < length; i++) {
 607       f->do_oop((oop*) _locked_monitors->adr_at(i));
 608     }
 609   }


< prev index next >