diff options
| author | Sebastien Hertz <shertz@google.com> | 2015-03-24 14:12:35 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-03-24 14:12:35 +0000 |
| commit | af87659f462ac650009fce295097cae3dabce171 (patch) | |
| tree | f203c9eed1543f6393175b2431ac6b43deb1b43c /runtime/interpreter | |
| parent | 94ead7673f90a8199d926fe161d7d021202f0aa7 (diff) | |
| parent | eb07669e9784ccb41d75df180727e57fc4520e28 (diff) | |
| download | art-af87659f462ac650009fce295097cae3dabce171.tar.gz art-af87659f462ac650009fce295097cae3dabce171.tar.bz2 art-af87659f462ac650009fce295097cae3dabce171.zip | |
Merge "JDWP: Optimized single step during debugging"
Diffstat (limited to 'runtime/interpreter')
| -rw-r--r-- | runtime/interpreter/interpreter_common.cc | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/runtime/interpreter/interpreter_common.cc b/runtime/interpreter/interpreter_common.cc index 26ab602dc1..a3ab026ba8 100644 --- a/runtime/interpreter/interpreter_common.cc +++ b/runtime/interpreter/interpreter_common.cc @@ -18,6 +18,7 @@ #include <cmath> +#include "debugger.h" #include "mirror/array-inl.h" #include "unstarted_runtime.h" @@ -616,8 +617,14 @@ bool DoCall(ArtMethod* called_method, Thread* self, ShadowFrame& shadow_frame, << PrettyMethod(new_shadow_frame->GetMethod()); UNREACHABLE(); } - (new_shadow_frame->GetMethod()->GetEntryPointFromInterpreter())(self, code_item, - new_shadow_frame, result); + // Force the use of interpreter when it is required by the debugger. + mirror::EntryPointFromInterpreter* entry; + if (UNLIKELY(Dbg::IsForcedInterpreterNeededForCalling(self, new_shadow_frame->GetMethod()))) { + entry = &art::artInterpreterToInterpreterBridge; + } else { + entry = new_shadow_frame->GetMethod()->GetEntryPointFromInterpreter(); + } + entry(self, code_item, new_shadow_frame, result); } else { UnstartedRuntimeInvoke(self, code_item, new_shadow_frame, result, first_dest_reg); } |
