mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 23:34:52 +02:00
8259482: jni_Set/GetField_probe are the same as their _nh versions
Reviewed-by: hseigel, sspitsyn, dholmes
This commit is contained in:
parent
01b2804ef7
commit
23801da94b
3 changed files with 4 additions and 37 deletions
|
@ -1942,7 +1942,7 @@ JNI_ENTRY_NO_PRESERVE(Return, jni_Get##Result##Field(JNIEnv *env, jobject obj, j
|
||||||
int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); \
|
int offset = jfieldIDWorkaround::from_instance_jfieldID(k, fieldID); \
|
||||||
/* Keep JVMTI addition small and only check enabled flag here. */ \
|
/* Keep JVMTI addition small and only check enabled flag here. */ \
|
||||||
if (JvmtiExport::should_post_field_access()) { \
|
if (JvmtiExport::should_post_field_access()) { \
|
||||||
o = JvmtiExport::jni_GetField_probe_nh(thread, obj, o, k, fieldID, false); \
|
o = JvmtiExport::jni_GetField_probe(thread, obj, o, k, fieldID, false); \
|
||||||
} \
|
} \
|
||||||
ret = o->Fieldname##_field(offset); \
|
ret = o->Fieldname##_field(offset); \
|
||||||
return ret; \
|
return ret; \
|
||||||
|
@ -2009,7 +2009,7 @@ JNI_ENTRY_NO_PRESERVE(void, jni_SetObjectField(JNIEnv *env, jobject obj, jfieldI
|
||||||
if (JvmtiExport::should_post_field_modification()) {
|
if (JvmtiExport::should_post_field_modification()) {
|
||||||
jvalue field_value;
|
jvalue field_value;
|
||||||
field_value.l = value;
|
field_value.l = value;
|
||||||
o = JvmtiExport::jni_SetField_probe_nh(thread, obj, o, k, fieldID, false, JVM_SIGNATURE_CLASS, (jvalue *)&field_value);
|
o = JvmtiExport::jni_SetField_probe(thread, obj, o, k, fieldID, false, JVM_SIGNATURE_CLASS, (jvalue *)&field_value);
|
||||||
}
|
}
|
||||||
HeapAccess<ON_UNKNOWN_OOP_REF>::oop_store_at(o, offset, JNIHandles::resolve(value));
|
HeapAccess<ON_UNKNOWN_OOP_REF>::oop_store_at(o, offset, JNIHandles::resolve(value));
|
||||||
HOTSPOT_JNI_SETOBJECTFIELD_RETURN();
|
HOTSPOT_JNI_SETOBJECTFIELD_RETURN();
|
||||||
|
@ -2031,7 +2031,7 @@ JNI_ENTRY_NO_PRESERVE(void, jni_Set##Result##Field(JNIEnv *env, jobject obj, jfi
|
||||||
if (JvmtiExport::should_post_field_modification()) { \
|
if (JvmtiExport::should_post_field_modification()) { \
|
||||||
jvalue field_value; \
|
jvalue field_value; \
|
||||||
field_value.unionType = value; \
|
field_value.unionType = value; \
|
||||||
o = JvmtiExport::jni_SetField_probe_nh(thread, obj, o, k, fieldID, false, SigType, (jvalue *)&field_value); \
|
o = JvmtiExport::jni_SetField_probe(thread, obj, o, k, fieldID, false, SigType, (jvalue *)&field_value); \
|
||||||
} \
|
} \
|
||||||
if (SigType == JVM_SIGNATURE_BOOLEAN) { value = ((jboolean)value) & 1; } \
|
if (SigType == JVM_SIGNATURE_BOOLEAN) { value = ((jboolean)value) & 1; } \
|
||||||
o->Fieldname##_field_put(offset, value); \
|
o->Fieldname##_field_put(offset, value); \
|
||||||
|
|
|
@ -1872,19 +1872,6 @@ void JvmtiExport::notice_unwind_due_to_exception(JavaThread *thread, Method* met
|
||||||
|
|
||||||
oop JvmtiExport::jni_GetField_probe(JavaThread *thread, jobject jobj, oop obj,
|
oop JvmtiExport::jni_GetField_probe(JavaThread *thread, jobject jobj, oop obj,
|
||||||
Klass* klass, jfieldID fieldID, bool is_static) {
|
Klass* klass, jfieldID fieldID, bool is_static) {
|
||||||
if (*((int *)get_field_access_count_addr()) > 0 && thread->has_last_Java_frame()) {
|
|
||||||
// At least one field access watch is set so we have more work
|
|
||||||
// to do. This wrapper is used by entry points that allow us
|
|
||||||
// to create handles in post_field_access_by_jni().
|
|
||||||
post_field_access_by_jni(thread, obj, klass, fieldID, is_static);
|
|
||||||
// event posting can block so refetch oop if we were passed a jobj
|
|
||||||
if (jobj != NULL) return JNIHandles::resolve_non_null(jobj);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
oop JvmtiExport::jni_GetField_probe_nh(JavaThread *thread, jobject jobj, oop obj,
|
|
||||||
Klass* klass, jfieldID fieldID, bool is_static) {
|
|
||||||
if (*((int *)get_field_access_count_addr()) > 0 && thread->has_last_Java_frame()) {
|
if (*((int *)get_field_access_count_addr()) > 0 && thread->has_last_Java_frame()) {
|
||||||
// At least one field access watch is set so we have more work to do.
|
// At least one field access watch is set so we have more work to do.
|
||||||
post_field_access_by_jni(thread, obj, klass, fieldID, is_static);
|
post_field_access_by_jni(thread, obj, klass, fieldID, is_static);
|
||||||
|
@ -1962,20 +1949,6 @@ void JvmtiExport::post_field_access(JavaThread *thread, Method* method,
|
||||||
oop JvmtiExport::jni_SetField_probe(JavaThread *thread, jobject jobj, oop obj,
|
oop JvmtiExport::jni_SetField_probe(JavaThread *thread, jobject jobj, oop obj,
|
||||||
Klass* klass, jfieldID fieldID, bool is_static,
|
Klass* klass, jfieldID fieldID, bool is_static,
|
||||||
char sig_type, jvalue *value) {
|
char sig_type, jvalue *value) {
|
||||||
if (*((int *)get_field_modification_count_addr()) > 0 && thread->has_last_Java_frame()) {
|
|
||||||
// At least one field modification watch is set so we have more work
|
|
||||||
// to do. This wrapper is used by entry points that allow us
|
|
||||||
// to create handles in post_field_modification_by_jni().
|
|
||||||
post_field_modification_by_jni(thread, obj, klass, fieldID, is_static, sig_type, value);
|
|
||||||
// event posting can block so refetch oop if we were passed a jobj
|
|
||||||
if (jobj != NULL) return JNIHandles::resolve_non_null(jobj);
|
|
||||||
}
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
oop JvmtiExport::jni_SetField_probe_nh(JavaThread *thread, jobject jobj, oop obj,
|
|
||||||
Klass* klass, jfieldID fieldID, bool is_static,
|
|
||||||
char sig_type, jvalue *value) {
|
|
||||||
if (*((int *)get_field_modification_count_addr()) > 0 && thread->has_last_Java_frame()) {
|
if (*((int *)get_field_modification_count_addr()) > 0 && thread->has_last_Java_frame()) {
|
||||||
// At least one field modification watch is set so we have more work to do.
|
// At least one field modification watch is set so we have more work to do.
|
||||||
post_field_modification_by_jni(thread, obj, klass, fieldID, is_static, sig_type, value);
|
post_field_modification_by_jni(thread, obj, klass, fieldID, is_static, sig_type, value);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1998, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -310,9 +310,6 @@ class JvmtiExport : public AllStatic {
|
||||||
static oop jni_GetField_probe (JavaThread *thread, jobject jobj,
|
static oop jni_GetField_probe (JavaThread *thread, jobject jobj,
|
||||||
oop obj, Klass* klass, jfieldID fieldID, bool is_static)
|
oop obj, Klass* klass, jfieldID fieldID, bool is_static)
|
||||||
NOT_JVMTI_RETURN_(NULL);
|
NOT_JVMTI_RETURN_(NULL);
|
||||||
static oop jni_GetField_probe_nh (JavaThread *thread, jobject jobj,
|
|
||||||
oop obj, Klass* klass, jfieldID fieldID, bool is_static)
|
|
||||||
NOT_JVMTI_RETURN_(NULL);
|
|
||||||
static void post_field_access_by_jni (JavaThread *thread, oop obj,
|
static void post_field_access_by_jni (JavaThread *thread, oop obj,
|
||||||
Klass* klass, jfieldID fieldID, bool is_static) NOT_JVMTI_RETURN;
|
Klass* klass, jfieldID fieldID, bool is_static) NOT_JVMTI_RETURN;
|
||||||
static void post_field_access (JavaThread *thread, Method* method,
|
static void post_field_access (JavaThread *thread, Method* method,
|
||||||
|
@ -320,9 +317,6 @@ class JvmtiExport : public AllStatic {
|
||||||
static oop jni_SetField_probe (JavaThread *thread, jobject jobj,
|
static oop jni_SetField_probe (JavaThread *thread, jobject jobj,
|
||||||
oop obj, Klass* klass, jfieldID fieldID, bool is_static, char sig_type,
|
oop obj, Klass* klass, jfieldID fieldID, bool is_static, char sig_type,
|
||||||
jvalue *value) NOT_JVMTI_RETURN_(NULL);
|
jvalue *value) NOT_JVMTI_RETURN_(NULL);
|
||||||
static oop jni_SetField_probe_nh (JavaThread *thread, jobject jobj,
|
|
||||||
oop obj, Klass* klass, jfieldID fieldID, bool is_static, char sig_type,
|
|
||||||
jvalue *value) NOT_JVMTI_RETURN_(NULL);
|
|
||||||
static void post_field_modification_by_jni(JavaThread *thread, oop obj,
|
static void post_field_modification_by_jni(JavaThread *thread, oop obj,
|
||||||
Klass* klass, jfieldID fieldID, bool is_static, char sig_type,
|
Klass* klass, jfieldID fieldID, bool is_static, char sig_type,
|
||||||
jvalue *value);
|
jvalue *value);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue