235
236 static bool is_jvmti_version(jint version) { return (version & JVMTI_VERSION_MASK) == JVMTI_VERSION_VALUE; }
237 static bool is_jvmdi_version(jint version) { return (version & JVMTI_VERSION_MASK) == JVMDI_VERSION_VALUE; }
238 static jint get_jvmti_interface(JavaVM *jvm, void **penv, jint version);
239
240 // single stepping management methods
241 static void at_single_stepping_point(JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
242 static void expose_single_stepping(JavaThread *thread) KERNEL_RETURN;
243 static bool hide_single_stepping(JavaThread *thread) KERNEL_RETURN_(return false;);
244
245 // Methods that notify the debugger that something interesting has happened in the VM.
246 static void post_vm_start ();
247 static void post_vm_initialized ();
248 static void post_vm_death ();
249
250 static void post_single_step (JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
251 static void post_raw_breakpoint (JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
252
253 static void post_exception_throw (JavaThread *thread, methodOop method, address location, oop exception) KERNEL_RETURN;
254 static void notice_unwind_due_to_exception (JavaThread *thread, methodOop method, address location, oop exception, bool in_handler_frame) KERNEL_RETURN;
255
256 static oop jni_GetField_probe (JavaThread *thread, jobject jobj,
257 oop obj, klassOop klass, jfieldID fieldID, bool is_static)
258 KERNEL_RETURN_(return NULL;);
259 static oop jni_GetField_probe_nh (JavaThread *thread, jobject jobj,
260 oop obj, klassOop klass, jfieldID fieldID, bool is_static)
261 KERNEL_RETURN_(return NULL;);
262 static void post_field_access_by_jni (JavaThread *thread, oop obj,
263 klassOop klass, jfieldID fieldID, bool is_static) KERNEL_RETURN;
264 static void post_field_access (JavaThread *thread, methodOop method,
265 address location, KlassHandle field_klass, Handle object, jfieldID field) KERNEL_RETURN;
266 static oop jni_SetField_probe (JavaThread *thread, jobject jobj,
267 oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
268 jvalue *value) KERNEL_RETURN_(return NULL;);
269 static oop jni_SetField_probe_nh (JavaThread *thread, jobject jobj,
270 oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
271 jvalue *value) KERNEL_RETURN_(return NULL;);
272 static void post_field_modification_by_jni(JavaThread *thread, oop obj,
273 klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
274 jvalue *value);
|
235
236 static bool is_jvmti_version(jint version) { return (version & JVMTI_VERSION_MASK) == JVMTI_VERSION_VALUE; }
237 static bool is_jvmdi_version(jint version) { return (version & JVMTI_VERSION_MASK) == JVMDI_VERSION_VALUE; }
238 static jint get_jvmti_interface(JavaVM *jvm, void **penv, jint version);
239
240 // single stepping management methods
241 static void at_single_stepping_point(JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
242 static void expose_single_stepping(JavaThread *thread) KERNEL_RETURN;
243 static bool hide_single_stepping(JavaThread *thread) KERNEL_RETURN_(return false;);
244
245 // Methods that notify the debugger that something interesting has happened in the VM.
246 static void post_vm_start ();
247 static void post_vm_initialized ();
248 static void post_vm_death ();
249
250 static void post_single_step (JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
251 static void post_raw_breakpoint (JavaThread *thread, methodOop method, address location) KERNEL_RETURN;
252
253 static void post_exception_throw (JavaThread *thread, methodOop method, address location, oop exception) KERNEL_RETURN;
254 static void notice_unwind_due_to_exception (JavaThread *thread, methodOop method, address location, oop exception, bool in_handler_frame) KERNEL_RETURN;
255 static jint must_post_exception_events_jrt_leaf();
256 static jint must_post_exception_events();
257
258 static oop jni_GetField_probe (JavaThread *thread, jobject jobj,
259 oop obj, klassOop klass, jfieldID fieldID, bool is_static)
260 KERNEL_RETURN_(return NULL;);
261 static oop jni_GetField_probe_nh (JavaThread *thread, jobject jobj,
262 oop obj, klassOop klass, jfieldID fieldID, bool is_static)
263 KERNEL_RETURN_(return NULL;);
264 static void post_field_access_by_jni (JavaThread *thread, oop obj,
265 klassOop klass, jfieldID fieldID, bool is_static) KERNEL_RETURN;
266 static void post_field_access (JavaThread *thread, methodOop method,
267 address location, KlassHandle field_klass, Handle object, jfieldID field) KERNEL_RETURN;
268 static oop jni_SetField_probe (JavaThread *thread, jobject jobj,
269 oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
270 jvalue *value) KERNEL_RETURN_(return NULL;);
271 static oop jni_SetField_probe_nh (JavaThread *thread, jobject jobj,
272 oop obj, klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
273 jvalue *value) KERNEL_RETURN_(return NULL;);
274 static void post_field_modification_by_jni(JavaThread *thread, oop obj,
275 klassOop klass, jfieldID fieldID, bool is_static, char sig_type,
276 jvalue *value);
|