diff options
author | 2022-08-01 14:31:25 +0000 | |
---|---|---|
committer | 2022-08-10 04:18:09 +0000 | |
commit | 6ecfa91a040bb1a58e57ad99ab2765cd911e845a (patch) | |
tree | 1c61a33ffbd6516c9ab7438a0c045fb542a46f0d /runtime/jit/jit_code_cache.cc | |
parent | e22aa32240589cf31d341e0f59bf0bf522b4a239 (diff) |
Update instrumentation support for non-java debuggable runtimes
Support for debugger features wasn't consistent in non-debuggable
runtimes earlier. This CL unifies the support for debuggable /
non-debuggable runtimes and support debugger features more consistently
in non-debuggable runtime. Debug features are still supported on a best
effort basis for any methods on the stack when the debugger was
attached. Certain features like redefinition are still not supported.
This CL:
1. Replaces is_debuggable boolean with an enum with three states:
NonJavaDebuggable, JavaDebuggable, JavaDebuggableAtInit
2. Adds support to switch between NonJavaDebuggable -> JavaDebuggable
and vice versa.
3. Updates the checks for IsJavaDebuggable to check for
JavaDebuggableAtInit or JavaDebuggable as required.
Test: art/test.py
Bug: 206029744
Change-Id: I1d072d8a1d215b70f3d2425b458b836a22af6812
Diffstat (limited to 'runtime/jit/jit_code_cache.cc')
-rw-r--r-- | runtime/jit/jit_code_cache.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/runtime/jit/jit_code_cache.cc b/runtime/jit/jit_code_cache.cc index f725d97c8f..3eb1701080 100644 --- a/runtime/jit/jit_code_cache.cc +++ b/runtime/jit/jit_code_cache.cc @@ -1759,6 +1759,18 @@ void JitCodeCache::InvalidateAllCompiledCode() { Runtime::Current()->GetInstrumentation()->InitializeMethodsCode(meth, /*aot_code=*/ nullptr); } } + + for (auto it : zygote_map_) { + if (it.method == nullptr) { + continue; + } + if (it.method->IsPreCompiled()) { + it.method->ClearPreCompiled(); + } + Runtime::Current()->GetInstrumentation()->InitializeMethodsCode(it.method, + /*aot_code=*/nullptr); + } + saved_compiled_methods_map_.clear(); osr_code_map_.clear(); } |