summaryrefslogtreecommitdiff
path: root/openjdkjvmti/art_jvmti.h
diff options
context:
space:
mode:
author Alex Light <allight@google.com> 2018-03-14 14:44:29 -0700
committer Alex Light <allight@google.com> 2018-10-04 11:04:49 -0700
commit88a2a9d7a14b67e10525d93b0ee57d9dd6bc345a (patch)
treea19af813a97be817a76072534139a77b16f3ad87 /openjdkjvmti/art_jvmti.h
parentfc7d33fc052d993eaa205337e6a805022d2cd822 (diff)
JVMTI PopFrame support
Implement support for the JVMTI can_pop_frames capability. This works by marking shadow-frames with a bit that forces it to be popped or an instruction to be retried. When a PopFrame is requested the plugin will deoptimize the targeted thread and force the interpreter to deal with the frame pop. If the can_pop_frames capability is enabled the runtime will be forced to handle all exceptions through the interpreter. This is required to support PopFrame during some exception events. Test: ./test.py --host Test: ./art/tools/run-libjdwp-tests.sh --mode=host Bug: 73255278 Bug: 111357976 Change-Id: I62d6b1f4ff387c794ba45093c3d6773aaf642067
Diffstat (limited to 'openjdkjvmti/art_jvmti.h')
-rw-r--r--openjdkjvmti/art_jvmti.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/openjdkjvmti/art_jvmti.h b/openjdkjvmti/art_jvmti.h
index 82f3866c65..1218e3b9a7 100644
--- a/openjdkjvmti/art_jvmti.h
+++ b/openjdkjvmti/art_jvmti.h
@@ -249,7 +249,7 @@ const jvmtiCapabilities kPotentialCapabilities = {
.can_get_owned_monitor_info = 1,
.can_get_current_contended_monitor = 1,
.can_get_monitor_info = 1,
- .can_pop_frame = 0,
+ .can_pop_frame = 1,
.can_redefine_classes = 1,
.can_signal_thread = 1,
.can_get_source_file_name = 1,
@@ -291,6 +291,7 @@ const jvmtiCapabilities kPotentialCapabilities = {
// can_retransform_classes:
// can_redefine_any_class:
// can_redefine_classes:
+// can_pop_frame:
// We need to ensure that inlined code is either not present or can always be deoptimized. This
// is not guaranteed for non-debuggable processes since we might have inlined bootclasspath code
// on a threads stack.
@@ -303,7 +304,7 @@ const jvmtiCapabilities kNonDebuggableUnsupportedCapabilities = {
.can_get_owned_monitor_info = 0,
.can_get_current_contended_monitor = 0,
.can_get_monitor_info = 0,
- .can_pop_frame = 0,
+ .can_pop_frame = 1,
.can_redefine_classes = 1,
.can_signal_thread = 0,
.can_get_source_file_name = 0,