summaryrefslogtreecommitdiffstats
path: root/vm/interp
diff options
context:
space:
mode:
authorbuzbee <buzbee@google.com>2011-05-02 16:06:04 -0700
committerbuzbee <buzbee@google.com>2011-05-02 16:06:04 -0700
commit2ec9f7802034144383261b2fd915bdf1eb396ea4 (patch)
tree92fc30d98395fca653da66397b65960be781a80d /vm/interp
parent17f22e19628bd8dc4c5d0789de7753e294aec9ee (diff)
downloadandroid_dalvik-2ec9f7802034144383261b2fd915bdf1eb396ea4.tar.gz
android_dalvik-2ec9f7802034144383261b2fd915bdf1eb396ea4.tar.bz2
android_dalvik-2ec9f7802034144383261b2fd915bdf1eb396ea4.zip
x86 interpreter fix
Correct the ordering of FP save prior to special subMode handling. Also added a stress test mode to help catch this sort of problem in the future. Change-Id: I5bcd325858fa63023498bfd47e910aaf1530d6bb
Diffstat (limited to 'vm/interp')
-rw-r--r--vm/interp/Interp.cpp5
-rw-r--r--vm/interp/InterpState.h2
2 files changed, 7 insertions, 0 deletions
diff --git a/vm/interp/Interp.cpp b/vm/interp/Interp.cpp
index f61f7bab5..11e940827 100644
--- a/vm/interp/Interp.cpp
+++ b/vm/interp/Interp.cpp
@@ -1687,6 +1687,7 @@ void dvmInitInterpreterState(Thread* self)
// Jit state that can change
dvmJitUpdateThreadStateSingle(self);
#endif
+ dvmInitializeInterpBreak(self);
}
/*
@@ -1708,6 +1709,10 @@ void dvmInitializeInterpBreak(Thread* thread)
if (gDvm.debuggerActive) {
dvmEnableSubMode(thread, kSubModeDebuggerActive);
}
+#if 0
+ // Debugging stress mode - force checkBefore
+ dvmEnableSubMode(thread, kSubModeCheckAlways);
+#endif
}
/*
diff --git a/vm/interp/InterpState.h b/vm/interp/InterpState.h
index 3795bf93d..b782275d2 100644
--- a/vm/interp/InterpState.h
+++ b/vm/interp/InterpState.h
@@ -51,6 +51,7 @@ enum ExecutionSubModes {
kSubModeSuspendPending = 0x0010,
kSubModeCallbackPending = 0x0020,
kSubModeCountedStep = 0x0040,
+ kSubModeCheckAlways = 0x0080,
kSubModeJitTraceBuild = 0x4000,
kSubModeJitSV = 0x8000,
kSubModeDebugProfile = (kSubModeMethodTrace |
@@ -78,6 +79,7 @@ enum InterpBreakFlags {
#define SINGLESTEP_BREAK_MASK ( kSubModeInstCounting | \
kSubModeDebuggerActive | \
kSubModeCountedStep | \
+ kSubModeCheckAlways | \
kSubModeJitSV | \
kSubModeJitTraceBuild )