Merge "Freeze capabilities JVMTI tests request by default."
diff --git a/test/901-hello-ti-agent/basics.cc b/test/901-hello-ti-agent/basics.cc
index 21dcf98..2edd91e 100644
--- a/test/901-hello-ti-agent/basics.cc
+++ b/test/901-hello-ti-agent/basics.cc
@@ -127,7 +127,7 @@
printf("Unable to get jvmti env!\n");
return 1;
}
- SetAllCapabilities(jvmti_env);
+ SetStandardCapabilities(jvmti_env);
jvmtiPhase current_phase;
jvmtiError phase_result = jvmti_env->GetPhase(¤t_phase);
diff --git a/test/905-object-free/tracking_free.cc b/test/905-object-free/tracking_free.cc
index 998194a..5479772 100644
--- a/test/905-object-free/tracking_free.cc
+++ b/test/905-object-free/tracking_free.cc
@@ -61,7 +61,7 @@
JavaVM* jvm = nullptr;
env->GetJavaVM(&jvm);
CHECK_EQ(jvm->GetEnv(reinterpret_cast<void**>(&jvmti_env2), JVMTI_VERSION_1_2), 0);
- SetAllCapabilities(jvmti_env2);
+ SetStandardCapabilities(jvmti_env2);
setupObjectFreeCallback(env, jvmti_env2, ObjectFree2);
}
diff --git a/test/936-search-onload/search_onload.cc b/test/936-search-onload/search_onload.cc
index b2ef056..90d87e0 100644
--- a/test/936-search-onload/search_onload.cc
+++ b/test/936-search-onload/search_onload.cc
@@ -39,7 +39,7 @@
printf("Unable to get jvmti env!\n");
return 1;
}
- SetAllCapabilities(jvmti_env);
+ SetStandardCapabilities(jvmti_env);
char* dex_loc = getenv("DEX_LOCATION");
std::string dex1 = android::base::StringPrintf("%s/936-search-onload.jar", dex_loc);
diff --git a/test/983-source-transform-verify/source_transform.cc b/test/983-source-transform-verify/source_transform.cc
index a433dc9..7cd39f4 100644
--- a/test/983-source-transform-verify/source_transform.cc
+++ b/test/983-source-transform-verify/source_transform.cc
@@ -111,7 +111,7 @@
printf("Unable to get jvmti env!\n");
return 1;
}
- SetAllCapabilities(jvmti_env);
+ SetStandardCapabilities(jvmti_env);
jvmtiEventCallbacks cb;
memset(&cb, 0, sizeof(cb));
cb.ClassFileLoadHook = CheckDexFileHook;
diff --git a/test/ti-agent/common_load.cc b/test/ti-agent/common_load.cc
index 0679c1b..1d13c62 100644
--- a/test/ti-agent/common_load.cc
+++ b/test/ti-agent/common_load.cc
@@ -62,7 +62,7 @@
printf("Unable to get jvmti env!\n");
return 1;
}
- SetAllCapabilities(jvmti_env);
+ SetStandardCapabilities(jvmti_env);
return 0;
}
diff --git a/test/ti-agent/jvmti_helper.cc b/test/ti-agent/jvmti_helper.cc
index 598a30f..ccd3cab 100644
--- a/test/ti-agent/jvmti_helper.cc
+++ b/test/ti-agent/jvmti_helper.cc
@@ -38,12 +38,65 @@
}
}
+// These are a set of capabilities we will enable in all situations. These are chosen since they
+// will not affect the runtime in any significant way if they are enabled.
+static const jvmtiCapabilities standard_caps = {
+ .can_tag_objects = 1,
+ .can_generate_field_modification_events = 1,
+ .can_generate_field_access_events = 1,
+ .can_get_bytecodes = 1,
+ .can_get_synthetic_attribute = 1,
+ .can_get_owned_monitor_info = 0,
+ .can_get_current_contended_monitor = 0,
+ .can_get_monitor_info = 0,
+ .can_pop_frame = 0,
+ .can_redefine_classes = 1,
+ .can_signal_thread = 0,
+ .can_get_source_file_name = 1,
+ .can_get_line_numbers = 1,
+ .can_get_source_debug_extension = 1,
+ .can_access_local_variables = 0,
+ .can_maintain_original_method_order = 0,
+ .can_generate_single_step_events = 1,
+ .can_generate_exception_events = 0,
+ .can_generate_frame_pop_events = 0,
+ .can_generate_breakpoint_events = 1,
+ .can_suspend = 1,
+ .can_redefine_any_class = 0,
+ .can_get_current_thread_cpu_time = 0,
+ .can_get_thread_cpu_time = 0,
+ .can_generate_method_entry_events = 1,
+ .can_generate_method_exit_events = 1,
+ .can_generate_all_class_hook_events = 0,
+ .can_generate_compiled_method_load_events = 0,
+ .can_generate_monitor_events = 0,
+ .can_generate_vm_object_alloc_events = 1,
+ .can_generate_native_method_bind_events = 1,
+ .can_generate_garbage_collection_events = 1,
+ .can_generate_object_free_events = 1,
+ .can_force_early_return = 0,
+ .can_get_owned_monitor_stack_depth_info = 0,
+ .can_get_constant_pool = 0,
+ .can_set_native_method_prefix = 0,
+ .can_retransform_classes = 1,
+ .can_retransform_any_class = 0,
+ .can_generate_resource_exhaustion_heap_events = 0,
+ .can_generate_resource_exhaustion_threads_events = 0,
+};
+
+jvmtiCapabilities GetStandardCapabilities() {
+ return standard_caps;
+}
+
+void SetStandardCapabilities(jvmtiEnv* env) {
+ jvmtiCapabilities caps = GetStandardCapabilities();
+ CheckJvmtiError(env, env->AddCapabilities(&caps));
+}
+
void SetAllCapabilities(jvmtiEnv* env) {
jvmtiCapabilities caps;
- jvmtiError error1 = env->GetPotentialCapabilities(&caps);
- CheckJvmtiError(env, error1);
- jvmtiError error2 = env->AddCapabilities(&caps);
- CheckJvmtiError(env, error2);
+ CheckJvmtiError(env, env->GetPotentialCapabilities(&caps));
+ CheckJvmtiError(env, env->AddCapabilities(&caps));
}
bool JvmtiErrorToException(JNIEnv* env, jvmtiEnv* jvmti_env, jvmtiError error) {
diff --git a/test/ti-agent/jvmti_helper.h b/test/ti-agent/jvmti_helper.h
index 66d88d0..0145f36 100644
--- a/test/ti-agent/jvmti_helper.h
+++ b/test/ti-agent/jvmti_helper.h
@@ -26,7 +26,14 @@
namespace art {
+// Get a standard set of capabilities for use in tests.
+jvmtiCapabilities GetStandardCapabilities();
+
+// Add all the standard capabilities to the given env.
+void SetStandardCapabilities(jvmtiEnv* env);
+
// Add all capabilities to the given env.
+// TODO Remove this in the future.
void SetAllCapabilities(jvmtiEnv* env);
// Check whether the given error is NONE. If not, print out the corresponding error message
diff --git a/test/ti-agent/redefinition_helper.cc b/test/ti-agent/redefinition_helper.cc
index 3b18879..75a6f5f 100644
--- a/test/ti-agent/redefinition_helper.cc
+++ b/test/ti-agent/redefinition_helper.cc
@@ -332,7 +332,7 @@
"Unable to create temporary jvmtiEnv for RetransformClasses call.");
return;
}
- SetAllCapabilities(real_env);
+ SetStandardCapabilities(real_env);
} else {
real_env = jvmti_env;
}
@@ -373,15 +373,14 @@
} // namespace common_transform
static void SetupCommonRedefine() {
- jvmtiCapabilities caps;
- jvmti_env->GetPotentialCapabilities(&caps);
+ jvmtiCapabilities caps = GetStandardCapabilities();
caps.can_retransform_classes = 0;
caps.can_retransform_any_class = 0;
jvmti_env->AddCapabilities(&caps);
}
static void SetupCommonRetransform() {
- SetAllCapabilities(jvmti_env);
+ SetStandardCapabilities(jvmti_env);
jvmtiEventCallbacks cb;
memset(&cb, 0, sizeof(cb));
cb.ClassFileLoadHook = common_retransform::CommonClassFileLoadHookRetransformable;
@@ -392,8 +391,7 @@
static void SetupCommonTransform() {
// Don't set the retransform caps
- jvmtiCapabilities caps;
- jvmti_env->GetPotentialCapabilities(&caps);
+ jvmtiCapabilities caps = GetStandardCapabilities();
caps.can_retransform_classes = 0;
caps.can_retransform_any_class = 0;
jvmti_env->AddCapabilities(&caps);
diff --git a/test/ti-stress/stress.cc b/test/ti-stress/stress.cc
index d197acd..aa50648 100644
--- a/test/ti-stress/stress.cc
+++ b/test/ti-stress/stress.cc
@@ -780,8 +780,49 @@
}
// Just get all capabilities.
- jvmtiCapabilities caps;
- jvmti->GetPotentialCapabilities(&caps);
+ jvmtiCapabilities caps = {
+ .can_tag_objects = 0,
+ .can_generate_field_modification_events = 1,
+ .can_generate_field_access_events = 1,
+ .can_get_bytecodes = 0,
+ .can_get_synthetic_attribute = 0,
+ .can_get_owned_monitor_info = 0,
+ .can_get_current_contended_monitor = 0,
+ .can_get_monitor_info = 0,
+ .can_pop_frame = 0,
+ .can_redefine_classes = 1,
+ .can_signal_thread = 0,
+ .can_get_source_file_name = 1,
+ .can_get_line_numbers = 1,
+ .can_get_source_debug_extension = 0,
+ .can_access_local_variables = 0,
+ .can_maintain_original_method_order = 0,
+ .can_generate_single_step_events = 1,
+ .can_generate_exception_events = 0,
+ .can_generate_frame_pop_events = 0,
+ .can_generate_breakpoint_events = 0,
+ .can_suspend = 0,
+ .can_redefine_any_class = 0,
+ .can_get_current_thread_cpu_time = 0,
+ .can_get_thread_cpu_time = 0,
+ .can_generate_method_entry_events = 1,
+ .can_generate_method_exit_events = 1,
+ .can_generate_all_class_hook_events = 0,
+ .can_generate_compiled_method_load_events = 0,
+ .can_generate_monitor_events = 0,
+ .can_generate_vm_object_alloc_events = 0,
+ .can_generate_native_method_bind_events = 1,
+ .can_generate_garbage_collection_events = 0,
+ .can_generate_object_free_events = 0,
+ .can_force_early_return = 0,
+ .can_get_owned_monitor_stack_depth_info = 0,
+ .can_get_constant_pool = 0,
+ .can_set_native_method_prefix = 0,
+ .can_retransform_classes = 1,
+ .can_retransform_any_class = 0,
+ .can_generate_resource_exhaustion_heap_events = 0,
+ .can_generate_resource_exhaustion_threads_events = 0,
+ };
jvmti->AddCapabilities(&caps);
// Set callbacks.