< prev index next >

src/hotspot/share/prims/jvmtiEnvBase.cpp

Print this page




 724         // add locked objects for this frame into list
 725         err = get_locked_objects_in_frame(calling_thread, java_thread, jvf, owned_monitors_list, depth-1);
 726         if (err != JVMTI_ERROR_NONE) {
 727           return err;
 728         }
 729       }
 730     }
 731   }
 732 
 733   // Get off stack monitors. (e.g. acquired via jni MonitorEnter).
 734   JvmtiMonitorClosure jmc(java_thread, calling_thread, owned_monitors_list, this);
 735   ObjectSynchronizer::monitors_iterate(&jmc);
 736   err = jmc.error();
 737 
 738   return err;
 739 }
 740 
 741 // Save JNI local handles for any objects that this frame owns.
 742 jvmtiError
 743 JvmtiEnvBase::get_locked_objects_in_frame(JavaThread* calling_thread, JavaThread* java_thread,
 744                                  javaVFrame *jvf, GrowableArray<jvmtiMonitorStackDepthInfo*>* owned_monitors_list, int stack_depth) {
 745   jvmtiError err = JVMTI_ERROR_NONE;
 746   ResourceMark rm;
 747 
 748   GrowableArray<MonitorInfo*>* mons = jvf->monitors();
 749   if (mons->is_empty()) {
 750     return err;  // this javaVFrame holds no monitors
 751   }
 752 
 753   HandleMark hm;
 754   oop wait_obj = NULL;
 755   {
 756     // save object of current wait() call (if any) for later comparison
 757     ObjectMonitor *mon = java_thread->current_waiting_monitor();
 758     if (mon != NULL) {
 759       wait_obj = (oop)mon->object();
 760     }
 761   }
 762   oop pending_obj = NULL;
 763   {
 764     // save object of current enter() call (if any) for later comparison




 724         // add locked objects for this frame into list
 725         err = get_locked_objects_in_frame(calling_thread, java_thread, jvf, owned_monitors_list, depth-1);
 726         if (err != JVMTI_ERROR_NONE) {
 727           return err;
 728         }
 729       }
 730     }
 731   }
 732 
 733   // Get off stack monitors. (e.g. acquired via jni MonitorEnter).
 734   JvmtiMonitorClosure jmc(java_thread, calling_thread, owned_monitors_list, this);
 735   ObjectSynchronizer::monitors_iterate(&jmc);
 736   err = jmc.error();
 737 
 738   return err;
 739 }
 740 
 741 // Save JNI local handles for any objects that this frame owns.
 742 jvmtiError
 743 JvmtiEnvBase::get_locked_objects_in_frame(JavaThread* calling_thread, JavaThread* java_thread,
 744                                  javaVFrame *jvf, GrowableArray<jvmtiMonitorStackDepthInfo*>* owned_monitors_list, jint stack_depth) {
 745   jvmtiError err = JVMTI_ERROR_NONE;
 746   ResourceMark rm;
 747 
 748   GrowableArray<MonitorInfo*>* mons = jvf->monitors();
 749   if (mons->is_empty()) {
 750     return err;  // this javaVFrame holds no monitors
 751   }
 752 
 753   HandleMark hm;
 754   oop wait_obj = NULL;
 755   {
 756     // save object of current wait() call (if any) for later comparison
 757     ObjectMonitor *mon = java_thread->current_waiting_monitor();
 758     if (mon != NULL) {
 759       wait_obj = (oop)mon->object();
 760     }
 761   }
 762   oop pending_obj = NULL;
 763   {
 764     // save object of current enter() call (if any) for later comparison


< prev index next >