< prev index next >

src/hotspot/share/services/threadService.cpp

Print this page
rev 60252 : imported patch 8249192-monitorinfo-naked-oops


 550   _last = ts;
 551 }
 552 
 553 void ThreadDumpResult::metadata_do(void f(Metadata*)) {
 554   for (ThreadSnapshot* ts = _snapshots; ts != NULL; ts = ts->next()) {
 555     ts->metadata_do(f);
 556   }
 557 }
 558 
 559 ThreadsList* ThreadDumpResult::t_list() {
 560   return _setter.list();
 561 }
 562 
 563 StackFrameInfo::StackFrameInfo(javaVFrame* jvf, bool with_lock_info) {
 564   _method = jvf->method();
 565   _bci = jvf->bci();
 566   _class_holder = OopHandle(Universe::vm_global(), _method->method_holder()->klass_holder());
 567   _locked_monitors = NULL;
 568   if (with_lock_info) {
 569     ResourceMark rm;

 570     GrowableArray<MonitorInfo*>* list = jvf->locked_monitors();
 571     int length = list->length();
 572     if (length > 0) {
 573       _locked_monitors = new (ResourceObj::C_HEAP, mtServiceability) GrowableArray<OopHandle>(length, mtServiceability);
 574       for (int i = 0; i < length; i++) {
 575         MonitorInfo* monitor = list->at(i);
 576         assert(monitor->owner() != NULL, "This monitor must have an owning object");
 577         _locked_monitors->append(OopHandle(Universe::vm_global(), monitor->owner()));
 578       }
 579     }
 580   }
 581 }
 582 
 583 StackFrameInfo::~StackFrameInfo() {
 584   if (_locked_monitors != NULL) {
 585     for (int i = 0; i < _locked_monitors->length(); i++) {
 586       _locked_monitors->at(i).release(Universe::vm_global());
 587     }
 588     delete _locked_monitors;
 589   }




 550   _last = ts;
 551 }
 552 
 553 void ThreadDumpResult::metadata_do(void f(Metadata*)) {
 554   for (ThreadSnapshot* ts = _snapshots; ts != NULL; ts = ts->next()) {
 555     ts->metadata_do(f);
 556   }
 557 }
 558 
 559 ThreadsList* ThreadDumpResult::t_list() {
 560   return _setter.list();
 561 }
 562 
 563 StackFrameInfo::StackFrameInfo(javaVFrame* jvf, bool with_lock_info) {
 564   _method = jvf->method();
 565   _bci = jvf->bci();
 566   _class_holder = OopHandle(Universe::vm_global(), _method->method_holder()->klass_holder());
 567   _locked_monitors = NULL;
 568   if (with_lock_info) {
 569     ResourceMark rm;
 570     HandleMark hm;
 571     GrowableArray<MonitorInfo*>* list = jvf->locked_monitors();
 572     int length = list->length();
 573     if (length > 0) {
 574       _locked_monitors = new (ResourceObj::C_HEAP, mtServiceability) GrowableArray<OopHandle>(length, mtServiceability);
 575       for (int i = 0; i < length; i++) {
 576         MonitorInfo* monitor = list->at(i);
 577         assert(monitor->owner() != NULL, "This monitor must have an owning object");
 578         _locked_monitors->append(OopHandle(Universe::vm_global(), monitor->owner()));
 579       }
 580     }
 581   }
 582 }
 583 
 584 StackFrameInfo::~StackFrameInfo() {
 585   if (_locked_monitors != NULL) {
 586     for (int i = 0; i < _locked_monitors->length(); i++) {
 587       _locked_monitors->at(i).release(Universe::vm_global());
 588     }
 589     delete _locked_monitors;
 590   }


< prev index next >