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) {