hotspot/src/share/vm/prims/jvmtiEnv.cpp
changeset 37993 e446184da25e
parent 37220 ec74292c0c9c
child 38151 fffedc5e5cf8
equal deleted inserted replaced
37992:c7ec6a3275f7 37993:e446184da25e
  1673 
  1673 
  1674   Thread *thread = Thread::current();
  1674   Thread *thread = Thread::current();
  1675   HandleMark hm(thread);
  1675   HandleMark hm(thread);
  1676   KlassHandle kh (thread, k_oop);
  1676   KlassHandle kh (thread, k_oop);
  1677 
  1677 
  1678   TraceTime t("FollowReferences", TraceJVMTIObjectTagging);
  1678   TraceTime t("FollowReferences", TRACETIME_LOG(Debug, jvmti, objecttagging));
  1679   JvmtiTagMap::tag_map_for(this)->follow_references(heap_filter, kh, initial_object, callbacks, user_data);
  1679   JvmtiTagMap::tag_map_for(this)->follow_references(heap_filter, kh, initial_object, callbacks, user_data);
  1680   return JVMTI_ERROR_NONE;
  1680   return JVMTI_ERROR_NONE;
  1681 } /* end FollowReferences */
  1681 } /* end FollowReferences */
  1682 
  1682 
  1683 
  1683 
  1704 
  1704 
  1705   Thread *thread = Thread::current();
  1705   Thread *thread = Thread::current();
  1706   HandleMark hm(thread);
  1706   HandleMark hm(thread);
  1707   KlassHandle kh (thread, k_oop);
  1707   KlassHandle kh (thread, k_oop);
  1708 
  1708 
  1709   TraceTime t("IterateThroughHeap", TraceJVMTIObjectTagging);
  1709   TraceTime t("IterateThroughHeap", TRACETIME_LOG(Debug, jvmti, objecttagging));
  1710   JvmtiTagMap::tag_map_for(this)->iterate_through_heap(heap_filter, kh, callbacks, user_data);
  1710   JvmtiTagMap::tag_map_for(this)->iterate_through_heap(heap_filter, kh, callbacks, user_data);
  1711   return JVMTI_ERROR_NONE;
  1711   return JVMTI_ERROR_NONE;
  1712 } /* end IterateThroughHeap */
  1712 } /* end IterateThroughHeap */
  1713 
  1713 
  1714 
  1714 
  1736 // count_ptr - pre-checked for NULL
  1736 // count_ptr - pre-checked for NULL
  1737 // object_result_ptr - NULL is a valid value, must be checked
  1737 // object_result_ptr - NULL is a valid value, must be checked
  1738 // tag_result_ptr - NULL is a valid value, must be checked
  1738 // tag_result_ptr - NULL is a valid value, must be checked
  1739 jvmtiError
  1739 jvmtiError
  1740 JvmtiEnv::GetObjectsWithTags(jint tag_count, const jlong* tags, jint* count_ptr, jobject** object_result_ptr, jlong** tag_result_ptr) {
  1740 JvmtiEnv::GetObjectsWithTags(jint tag_count, const jlong* tags, jint* count_ptr, jobject** object_result_ptr, jlong** tag_result_ptr) {
  1741   TraceTime t("GetObjectsWithTags", TraceJVMTIObjectTagging);
  1741   TraceTime t("GetObjectsWithTags", TRACETIME_LOG(Debug, jvmti, objecttagging));
  1742   return JvmtiTagMap::tag_map_for(this)->get_objects_with_tags((jlong*)tags, tag_count, count_ptr, object_result_ptr, tag_result_ptr);
  1742   return JvmtiTagMap::tag_map_for(this)->get_objects_with_tags((jlong*)tags, tag_count, count_ptr, object_result_ptr, tag_result_ptr);
  1743 } /* end GetObjectsWithTags */
  1743 } /* end GetObjectsWithTags */
  1744 
  1744 
  1745 
  1745 
  1746 jvmtiError
  1746 jvmtiError
  1769 // stack_ref_callback - NULL is a valid value, must be checked
  1769 // stack_ref_callback - NULL is a valid value, must be checked
  1770 // object_ref_callback - NULL is a valid value, must be checked
  1770 // object_ref_callback - NULL is a valid value, must be checked
  1771 // user_data - NULL is a valid value, must be checked
  1771 // user_data - NULL is a valid value, must be checked
  1772 jvmtiError
  1772 jvmtiError
  1773 JvmtiEnv::IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback, jvmtiStackReferenceCallback stack_ref_callback, jvmtiObjectReferenceCallback object_ref_callback, const void* user_data) {
  1773 JvmtiEnv::IterateOverReachableObjects(jvmtiHeapRootCallback heap_root_callback, jvmtiStackReferenceCallback stack_ref_callback, jvmtiObjectReferenceCallback object_ref_callback, const void* user_data) {
  1774   TraceTime t("IterateOverReachableObjects", TraceJVMTIObjectTagging);
  1774   TraceTime t("IterateOverReachableObjects", TRACETIME_LOG(Debug, jvmti, objecttagging));
  1775   JvmtiTagMap::tag_map_for(this)->iterate_over_reachable_objects(heap_root_callback, stack_ref_callback, object_ref_callback, user_data);
  1775   JvmtiTagMap::tag_map_for(this)->iterate_over_reachable_objects(heap_root_callback, stack_ref_callback, object_ref_callback, user_data);
  1776   return JVMTI_ERROR_NONE;
  1776   return JVMTI_ERROR_NONE;
  1777 } /* end IterateOverReachableObjects */
  1777 } /* end IterateOverReachableObjects */
  1778 
  1778 
  1779 
  1779 
  1780 // heap_object_callback - pre-checked for NULL
  1780 // heap_object_callback - pre-checked for NULL
  1781 // user_data - NULL is a valid value, must be checked
  1781 // user_data - NULL is a valid value, must be checked
  1782 jvmtiError
  1782 jvmtiError
  1783 JvmtiEnv::IterateOverHeap(jvmtiHeapObjectFilter object_filter, jvmtiHeapObjectCallback heap_object_callback, const void* user_data) {
  1783 JvmtiEnv::IterateOverHeap(jvmtiHeapObjectFilter object_filter, jvmtiHeapObjectCallback heap_object_callback, const void* user_data) {
  1784   TraceTime t("IterateOverHeap", TraceJVMTIObjectTagging);
  1784   TraceTime t("IterateOverHeap", TRACETIME_LOG(Debug, jvmti, objecttagging));
  1785   Thread *thread = Thread::current();
  1785   Thread *thread = Thread::current();
  1786   HandleMark hm(thread);
  1786   HandleMark hm(thread);
  1787   JvmtiTagMap::tag_map_for(this)->iterate_over_heap(object_filter, KlassHandle(), heap_object_callback, user_data);
  1787   JvmtiTagMap::tag_map_for(this)->iterate_over_heap(object_filter, KlassHandle(), heap_object_callback, user_data);
  1788   return JVMTI_ERROR_NONE;
  1788   return JVMTI_ERROR_NONE;
  1789 } /* end IterateOverHeap */
  1789 } /* end IterateOverHeap */
  1803     return JVMTI_ERROR_INVALID_CLASS;
  1803     return JVMTI_ERROR_INVALID_CLASS;
  1804   }
  1804   }
  1805   Thread *thread = Thread::current();
  1805   Thread *thread = Thread::current();
  1806   HandleMark hm(thread);
  1806   HandleMark hm(thread);
  1807   KlassHandle klass (thread, k_oop);
  1807   KlassHandle klass (thread, k_oop);
  1808   TraceTime t("IterateOverInstancesOfClass", TraceJVMTIObjectTagging);
  1808   TraceTime t("IterateOverInstancesOfClass", TRACETIME_LOG(Debug, jvmti, objecttagging));
  1809   JvmtiTagMap::tag_map_for(this)->iterate_over_heap(object_filter, klass, heap_object_callback, user_data);
  1809   JvmtiTagMap::tag_map_for(this)->iterate_over_heap(object_filter, klass, heap_object_callback, user_data);
  1810   return JVMTI_ERROR_NONE;
  1810   return JVMTI_ERROR_NONE;
  1811 } /* end IterateOverInstancesOfClass */
  1811 } /* end IterateOverInstancesOfClass */
  1812 
  1812 
  1813 
  1813