summaryrefslogtreecommitdiff
path: root/openjdkjvmti/ti_class.cc
diff options
context:
space:
mode:
Diffstat (limited to 'openjdkjvmti/ti_class.cc')
-rw-r--r--openjdkjvmti/ti_class.cc35
1 files changed, 35 insertions, 0 deletions
diff --git a/openjdkjvmti/ti_class.cc b/openjdkjvmti/ti_class.cc
index c22f38f576..924a0d84d7 100644
--- a/openjdkjvmti/ti_class.cc
+++ b/openjdkjvmti/ti_class.cc
@@ -56,6 +56,7 @@
#include "gc/heap.h"
#include "gc_root.h"
#include "handle.h"
+#include "hidden_api.h"
#include "jni/jni_env_ext-inl.h"
#include "jni/jni_internal.h"
#include "mirror/array-alloc-inl.h"
@@ -1137,4 +1138,38 @@ jvmtiError ClassUtil::GetSourceDebugExtension(jvmtiEnv* env,
return OK;
}
+jvmtiError ClassUtil::DisableHiddenApiEnforcementPolicy(jvmtiEnv* env) {
+ return SetHiddenApiEnforcementPolicy(
+ env, static_cast<jint>(art::hiddenapi::EnforcementPolicy::kDisabled));
+}
+
+jvmtiError ClassUtil::GetHiddenApiEnforcementPolicy(jvmtiEnv* env, jint* policy) {
+ if (env == nullptr) {
+ return ERR(INVALID_ENVIRONMENT);
+ } else if (art::Thread::Current() == nullptr) {
+ return ERR(UNATTACHED_THREAD);
+ } else if (policy == nullptr) {
+ return ERR(NULL_POINTER);
+ }
+ *policy = static_cast<jint>(art::Runtime::Current()->GetHiddenApiEnforcementPolicy());
+ return OK;
+}
+
+jvmtiError ClassUtil::SetHiddenApiEnforcementPolicy(jvmtiEnv* env, jint policy) {
+ if (env == nullptr) {
+ return ERR(INVALID_ENVIRONMENT);
+ } else if (art::Thread::Current() == nullptr) {
+ return ERR(UNATTACHED_THREAD);
+ } else if (policy < static_cast<jint>(art::hiddenapi::EnforcementPolicy::kDisabled) ||
+ policy > static_cast<jint>(art::hiddenapi::EnforcementPolicy::kMax)) {
+ JVMTI_LOG(INFO, env) << "Bad policy: " << policy << ", must be between "
+ << static_cast<jint>(art::hiddenapi::EnforcementPolicy::kDisabled)
+ << " and " << static_cast<jint>(art::hiddenapi::EnforcementPolicy::kMax);
+ return ERR(ILLEGAL_ARGUMENT);
+ }
+ art::Runtime::Current()->SetHiddenApiEnforcementPolicy(
+ static_cast<art::hiddenapi::EnforcementPolicy>(policy));
+ return OK;
+}
+
} // namespace openjdkjvmti