--- old/src/share/vm/interpreter/interpreterRuntime.cpp 2015-06-27 04:11:09.000000000 +0300 +++ new/src/share/vm/interpreter/interpreterRuntime.cpp 2015-06-27 04:11:09.000000000 +0300 @@ -1041,6 +1041,7 @@ if ((ik->field_access_flags(index) & JVM_ACC_FIELD_ACCESS_WATCHED) == 0) return; bool is_static = (obj == NULL); + bool is_final = ((ik->field_access_flags(index) & JVM_ACC_FINAL) != 0); HandleMark hm(thread); Handle h_obj; @@ -1049,7 +1050,7 @@ h_obj = Handle(thread, obj); } instanceKlassHandle h_cp_entry_f1(thread, (Klass*)cp_entry->f1_as_klass()); - jfieldID fid = jfieldIDWorkaround::to_jfieldID(h_cp_entry_f1, cp_entry->f2_as_index(), is_static); + jfieldID fid = jfieldIDWorkaround::to_jfieldID(h_cp_entry_f1, cp_entry->f2_as_index(), is_static, is_final); JvmtiExport::post_field_access(thread, method(thread), bcp(thread), h_cp_entry_f1, h_obj, fid); IRT_END @@ -1078,10 +1079,11 @@ default: ShouldNotReachHere(); return; } bool is_static = (obj == NULL); + bool is_final = ((ik->field_access_flags(index) & JVM_ACC_FINAL) != 0); HandleMark hm(thread); instanceKlassHandle h_klass(thread, k); - jfieldID fid = jfieldIDWorkaround::to_jfieldID(h_klass, cp_entry->f2_as_index(), is_static); + jfieldID fid = jfieldIDWorkaround::to_jfieldID(h_klass, cp_entry->f2_as_index(), is_static, is_final); jvalue fvalue; #ifdef _LP64 fvalue = *value;