< prev index next >

src/hotspot/share/prims/jvmtiManageCapabilities.cpp

Print this page




  40   // but to only one environment
  41 jvmtiCapabilities JvmtiManageCapabilities::always_solo_capabilities;
  42 
  43   // capabilities which are potentially available during OnLoad
  44   // but to only one environment
  45 jvmtiCapabilities JvmtiManageCapabilities::onload_solo_capabilities;
  46 
  47   // remaining capabilities which are always potentially available
  48   // but to only one environment
  49 jvmtiCapabilities JvmtiManageCapabilities::always_solo_remaining_capabilities;
  50 
  51   // remaining capabilities which are potentially available during OnLoad
  52   // but to only one environment
  53 jvmtiCapabilities JvmtiManageCapabilities::onload_solo_remaining_capabilities;
  54 
  55   // all capabilities ever acquired
  56 jvmtiCapabilities JvmtiManageCapabilities::acquired_capabilities;
  57 
  58 void JvmtiManageCapabilities::initialize() {
  59   always_capabilities = init_always_capabilities();
  60   if (JvmtiEnv::get_phase() != JVMTI_PHASE_ONLOAD) {
  61     recompute_always_capabilities();
  62   }
  63   onload_capabilities = init_onload_capabilities();
  64   always_solo_capabilities = init_always_solo_capabilities();
  65   onload_solo_capabilities = init_onload_solo_capabilities();
  66   always_solo_remaining_capabilities = init_always_solo_capabilities();
  67   onload_solo_remaining_capabilities = init_onload_solo_capabilities();
  68   memset(&acquired_capabilities, 0, sizeof(acquired_capabilities));
  69 }
  70 
  71 // if the capability sets are initialized in the onload phase then
  72 // it happens before class data sharing (CDS) is initialized. If it
  73 // turns out that CDS gets disabled then we must adjust the always
  74 // capabilities. To ensure a consistent view of the capabililties
  75 // anything we add here should already be in the onload set.
  76 void JvmtiManageCapabilities::recompute_always_capabilities() {
  77   if (!UseSharedSpaces) {
  78     jvmtiCapabilities jc = always_capabilities;
  79     jc.can_generate_all_class_hook_events = 1;
  80     always_capabilities = jc;
  81   }
  82 }
  83 
  84 
  85 // corresponding init functions
  86 jvmtiCapabilities JvmtiManageCapabilities::init_always_capabilities() {
  87   jvmtiCapabilities jc;
  88 
  89   memset(&jc, 0, sizeof(jc));
  90   jc.can_get_bytecodes = 1;
  91   jc.can_signal_thread = 1;
  92   jc.can_get_source_file_name = 1;
  93   jc.can_get_line_numbers = 1;
  94   jc.can_get_synthetic_attribute = 1;
  95   jc.can_get_monitor_info = 1;
  96   jc.can_get_constant_pool = 1;

  97   jc.can_generate_monitor_events = 1;
  98   jc.can_generate_garbage_collection_events = 1;
  99   jc.can_generate_compiled_method_load_events = 1;
 100   jc.can_generate_native_method_bind_events = 1;
 101   jc.can_generate_vm_object_alloc_events = 1;
 102   if (os::is_thread_cpu_time_supported()) {
 103     jc.can_get_current_thread_cpu_time = 1;
 104     jc.can_get_thread_cpu_time = 1;
 105   }
 106   jc.can_redefine_classes = 1;
 107   jc.can_redefine_any_class = 1;
 108   jc.can_retransform_classes = 1;
 109   jc.can_retransform_any_class = 1;
 110   jc.can_set_native_method_prefix = 1;
 111   jc.can_tag_objects = 1;
 112   jc.can_generate_object_free_events = 1;
 113   jc.can_generate_resource_exhaustion_heap_events = 1;
 114   jc.can_generate_resource_exhaustion_threads_events = 1;
 115   return jc;
 116 }
 117 
 118 jvmtiCapabilities JvmtiManageCapabilities::init_onload_capabilities() {
 119   jvmtiCapabilities jc;
 120 
 121   memset(&jc, 0, sizeof(jc));
 122 #ifndef ZERO
 123   jc.can_pop_frame = 1;
 124   jc.can_force_early_return = 1;
 125 #endif // !ZERO
 126   jc.can_get_source_debug_extension = 1;
 127   jc.can_access_local_variables = 1;
 128   jc.can_maintain_original_method_order = 1;
 129   jc.can_generate_all_class_hook_events = 1;
 130   jc.can_generate_single_step_events = 1;
 131   jc.can_generate_exception_events = 1;
 132   jc.can_generate_frame_pop_events = 1;
 133   jc.can_generate_method_entry_events = 1;
 134   jc.can_generate_method_exit_events = 1;
 135   jc.can_get_owned_monitor_info = 1;
 136   jc.can_get_owned_monitor_stack_depth_info = 1;
 137   jc.can_get_current_contended_monitor = 1;
 138   jc.can_generate_early_vmstart = 1;
 139   jc.can_generate_early_class_hook_events = 1;
 140   return jc;
 141 }
 142 
 143 
 144 jvmtiCapabilities JvmtiManageCapabilities::init_always_solo_capabilities() {
 145   jvmtiCapabilities jc;
 146 
 147   memset(&jc, 0, sizeof(jc));
 148   jc.can_suspend = 1;
 149   return jc;




  40   // but to only one environment
  41 jvmtiCapabilities JvmtiManageCapabilities::always_solo_capabilities;
  42 
  43   // capabilities which are potentially available during OnLoad
  44   // but to only one environment
  45 jvmtiCapabilities JvmtiManageCapabilities::onload_solo_capabilities;
  46 
  47   // remaining capabilities which are always potentially available
  48   // but to only one environment
  49 jvmtiCapabilities JvmtiManageCapabilities::always_solo_remaining_capabilities;
  50 
  51   // remaining capabilities which are potentially available during OnLoad
  52   // but to only one environment
  53 jvmtiCapabilities JvmtiManageCapabilities::onload_solo_remaining_capabilities;
  54 
  55   // all capabilities ever acquired
  56 jvmtiCapabilities JvmtiManageCapabilities::acquired_capabilities;
  57 
  58 void JvmtiManageCapabilities::initialize() {
  59   always_capabilities = init_always_capabilities();



  60   onload_capabilities = init_onload_capabilities();
  61   always_solo_capabilities = init_always_solo_capabilities();
  62   onload_solo_capabilities = init_onload_solo_capabilities();
  63   always_solo_remaining_capabilities = init_always_solo_capabilities();
  64   onload_solo_remaining_capabilities = init_onload_solo_capabilities();
  65   memset(&acquired_capabilities, 0, sizeof(acquired_capabilities));
  66 }
  67 













  68 
  69 // corresponding init functions
  70 jvmtiCapabilities JvmtiManageCapabilities::init_always_capabilities() {
  71   jvmtiCapabilities jc;
  72 
  73   memset(&jc, 0, sizeof(jc));
  74   jc.can_get_bytecodes = 1;
  75   jc.can_signal_thread = 1;
  76   jc.can_get_source_file_name = 1;
  77   jc.can_get_line_numbers = 1;
  78   jc.can_get_synthetic_attribute = 1;
  79   jc.can_get_monitor_info = 1;
  80   jc.can_get_constant_pool = 1;
  81   jc.can_generate_all_class_hook_events = 1;
  82   jc.can_generate_monitor_events = 1;
  83   jc.can_generate_garbage_collection_events = 1;
  84   jc.can_generate_compiled_method_load_events = 1;
  85   jc.can_generate_native_method_bind_events = 1;
  86   jc.can_generate_vm_object_alloc_events = 1;
  87   if (os::is_thread_cpu_time_supported()) {
  88     jc.can_get_current_thread_cpu_time = 1;
  89     jc.can_get_thread_cpu_time = 1;
  90   }
  91   jc.can_redefine_classes = 1;
  92   jc.can_redefine_any_class = 1;
  93   jc.can_retransform_classes = 1;
  94   jc.can_retransform_any_class = 1;
  95   jc.can_set_native_method_prefix = 1;
  96   jc.can_tag_objects = 1;
  97   jc.can_generate_object_free_events = 1;
  98   jc.can_generate_resource_exhaustion_heap_events = 1;
  99   jc.can_generate_resource_exhaustion_threads_events = 1;
 100   return jc;
 101 }
 102 
 103 jvmtiCapabilities JvmtiManageCapabilities::init_onload_capabilities() {
 104   jvmtiCapabilities jc;
 105 
 106   memset(&jc, 0, sizeof(jc));
 107 #ifndef ZERO
 108   jc.can_pop_frame = 1;
 109   jc.can_force_early_return = 1;
 110 #endif // !ZERO
 111   jc.can_get_source_debug_extension = 1;
 112   jc.can_access_local_variables = 1;
 113   jc.can_maintain_original_method_order = 1;

 114   jc.can_generate_single_step_events = 1;
 115   jc.can_generate_exception_events = 1;
 116   jc.can_generate_frame_pop_events = 1;
 117   jc.can_generate_method_entry_events = 1;
 118   jc.can_generate_method_exit_events = 1;
 119   jc.can_get_owned_monitor_info = 1;
 120   jc.can_get_owned_monitor_stack_depth_info = 1;
 121   jc.can_get_current_contended_monitor = 1;
 122   jc.can_generate_early_vmstart = 1;
 123   jc.can_generate_early_class_hook_events = 1;
 124   return jc;
 125 }
 126 
 127 
 128 jvmtiCapabilities JvmtiManageCapabilities::init_always_solo_capabilities() {
 129   jvmtiCapabilities jc;
 130 
 131   memset(&jc, 0, sizeof(jc));
 132   jc.can_suspend = 1;
 133   return jc;


< prev index next >