summaryrefslogtreecommitdiffstats
path: root/runtime/stack.cc
diff options
context:
space:
mode:
authorJeff Hao <jeffhao@google.com>2013-07-16 16:39:33 -0700
committerJeff Hao <jeffhao@google.com>2013-07-17 13:40:51 -0700
commit65d15d985a27be01e1d64f473af0e9d8eb19051d (patch)
tree211dfad2d50cd42a1d5418941da44abeb1d2d16c /runtime/stack.cc
parent82f9f02d89ea859bd04514bd28bb6cac0409c7b2 (diff)
downloadart-65d15d985a27be01e1d64f473af0e9d8eb19051d.zip
art-65d15d985a27be01e1d64f473af0e9d8eb19051d.tar.gz
art-65d15d985a27be01e1d64f473af0e9d8eb19051d.tar.bz2
Fixes to instrumentation for debug build and interpreter.
- Stub uninstall will put back the interpreter entry point if Xint mode is specified. - Copy method entry and exit listeners before iterating over them to prevent problems that occur when they are modified during iteration. - Corrected checks from WalkStack and AssertPcIsWithinCode to handle instrumented code since they are used to remove the stubs. Change-Id: Ib0e2b421e6b56d520e4643699624dd80ee5148e3
Diffstat (limited to 'runtime/stack.cc')
-rw-r--r--runtime/stack.cc5
1 files changed, 1 insertions, 4 deletions
diff --git a/runtime/stack.cc b/runtime/stack.cc
index fcd0f2d..f4ae81d 100644
--- a/runtime/stack.cc
+++ b/runtime/stack.cc
@@ -289,7 +289,6 @@ void StackVisitor::WalkStack(bool include_transitions) {
DCHECK(current_fragment->GetTopShadowFrame() == NULL);
mirror::AbstractMethod* method = *cur_quick_frame_;
while (method != NULL) {
- DCHECK(cur_quick_frame_pc_ != GetInstrumentationExitPc());
SanityCheckFrame();
bool should_continue = VisitFrame();
if (UNLIKELY(!should_continue)) {
@@ -312,9 +311,7 @@ void StackVisitor::WalkStack(bool include_transitions) {
instrumentation_stack_depth++;
if (instrumentation_frame.interpreter_entry_) {
mirror::AbstractMethod* callee = Runtime::Current()->GetCalleeSaveMethod(Runtime::kRefsAndArgs);
- if (GetMethod() != callee) {
- LOG(FATAL) << "Expected: " << callee << " Found: " << PrettyMethod(GetMethod());
- }
+ CHECK_EQ(GetMethod(), callee);
} else if (instrumentation_frame.method_ != GetMethod()) {
LOG(FATAL) << "Expected: " << PrettyMethod(instrumentation_frame.method_)
<< " Found: " << PrettyMethod(GetMethod());