Add field access & modify JVMTI callbacks
This adds support for the FieldAccess and FieldModification callbacks
in JVMTI and all other functions and behaviors associated with the
can_generate_field_modification_events and
can_generate_field_access_events capabilities.
Tests follow in the next CL.
Bug: 34409228
Test: ./test.py --host -j40
Change-Id: Id18fc53677cc1f96e1460c498ade7607219d5a79
diff --git a/runtime/openjdkjvmti/OpenjdkJvmTi.cc b/runtime/openjdkjvmti/OpenjdkJvmTi.cc
index 3ec5b32..8daf6f7 100644
--- a/runtime/openjdkjvmti/OpenjdkJvmTi.cc
+++ b/runtime/openjdkjvmti/OpenjdkJvmTi.cc
@@ -635,36 +635,28 @@
return ERR(NOT_IMPLEMENTED);
}
- static jvmtiError SetFieldAccessWatch(jvmtiEnv* env,
- jclass klass ATTRIBUTE_UNUSED,
- jfieldID field ATTRIBUTE_UNUSED) {
+ static jvmtiError SetFieldAccessWatch(jvmtiEnv* env, jclass klass, jfieldID field) {
ENSURE_VALID_ENV(env);
ENSURE_HAS_CAP(env, can_generate_field_access_events);
- return ERR(NOT_IMPLEMENTED);
+ return FieldUtil::SetFieldAccessWatch(env, klass, field);
}
- static jvmtiError ClearFieldAccessWatch(jvmtiEnv* env,
- jclass klass ATTRIBUTE_UNUSED,
- jfieldID field ATTRIBUTE_UNUSED) {
+ static jvmtiError ClearFieldAccessWatch(jvmtiEnv* env, jclass klass, jfieldID field) {
ENSURE_VALID_ENV(env);
ENSURE_HAS_CAP(env, can_generate_field_access_events);
- return ERR(NOT_IMPLEMENTED);
+ return FieldUtil::ClearFieldAccessWatch(env, klass, field);
}
- static jvmtiError SetFieldModificationWatch(jvmtiEnv* env,
- jclass klass ATTRIBUTE_UNUSED,
- jfieldID field ATTRIBUTE_UNUSED) {
+ static jvmtiError SetFieldModificationWatch(jvmtiEnv* env, jclass klass, jfieldID field) {
ENSURE_VALID_ENV(env);
ENSURE_HAS_CAP(env, can_generate_field_modification_events);
- return ERR(NOT_IMPLEMENTED);
+ return FieldUtil::SetFieldModificationWatch(env, klass, field);
}
- static jvmtiError ClearFieldModificationWatch(jvmtiEnv* env,
- jclass klass ATTRIBUTE_UNUSED,
- jfieldID field ATTRIBUTE_UNUSED) {
+ static jvmtiError ClearFieldModificationWatch(jvmtiEnv* env, jclass klass, jfieldID field) {
ENSURE_VALID_ENV(env);
ENSURE_HAS_CAP(env, can_generate_field_modification_events);
- return ERR(NOT_IMPLEMENTED);
+ return FieldUtil::ClearFieldModificationWatch(env, klass, field);
}
static jvmtiError GetLoadedClasses(jvmtiEnv* env, jint* class_count_ptr, jclass** classes_ptr) {