summaryrefslogtreecommitdiffstats
path: root/vm/mterp
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2012-04-30 17:47:55 -0700
committerandroid code review <noreply-gerritcodereview@google.com>2012-04-30 17:47:55 -0700
commit8b946491bd4d09229dc342c0be78ef36a56e7f78 (patch)
treea09b147dde77c77c451920e1750667610e9d9f10 /vm/mterp
parentd2a4bb85573f20edd751557dfdca2033652b9f36 (diff)
parent636d67b098baf14ae8b505b638181a80a356e0ab (diff)
downloadandroid_dalvik-8b946491bd4d09229dc342c0be78ef36a56e7f78.tar.gz
android_dalvik-8b946491bd4d09229dc342c0be78ef36a56e7f78.tar.bz2
android_dalvik-8b946491bd4d09229dc342c0be78ef36a56e7f78.zip
Merge "Fixed bug in x86-atom fast interpreter. Adds guard for potential null pointer. Adds guard for potential null pointer when checking for debugger active on return from method."
Diffstat (limited to 'vm/mterp')
-rw-r--r--vm/mterp/out/InterpAsm-x86-atom.S3
-rw-r--r--vm/mterp/x86-atom/footer.S3
2 files changed, 6 insertions, 0 deletions
diff --git a/vm/mterp/out/InterpAsm-x86-atom.S b/vm/mterp/out/InterpAsm-x86-atom.S
index e7ca17c32..f4dfbf784 100644
--- a/vm/mterp/out/InterpAsm-x86-atom.S
+++ b/vm/mterp/out/InterpAsm-x86-atom.S
@@ -27556,7 +27556,10 @@ common_returnFromMethod:
movl rGLUE, rINST # %ecx<- pMterpGlue
movl offGlue_pSelfSuspendCount(rINST), %edx # %ebx<- pSuspendCount (int)
movl offGlue_pDebuggerActive(rINST), %eax # %eax<- pDebuggerActive
+ testl %eax, %eax
+ je 5f
movl (%eax), %eax # %eax<- get debuggerActive (boolean)
+5:
and $7, %eax # %eax<- mask for boolean (just how many bits does it take?)
cmp $0, (%edx) # check if suspend is pending
jne 2f # handle suspend
diff --git a/vm/mterp/x86-atom/footer.S b/vm/mterp/x86-atom/footer.S
index 7b5ed9cf9..ab4e63dfd 100644
--- a/vm/mterp/x86-atom/footer.S
+++ b/vm/mterp/x86-atom/footer.S
@@ -353,7 +353,10 @@ common_returnFromMethod:
movl rGLUE, rINST # %ecx<- pMterpGlue
movl offGlue_pSelfSuspendCount(rINST), %edx # %ebx<- pSuspendCount (int)
movl offGlue_pDebuggerActive(rINST), %eax # %eax<- pDebuggerActive
+ testl %eax, %eax
+ je 5f
movl (%eax), %eax # %eax<- get debuggerActive (boolean)
+5:
and $$7, %eax # %eax<- mask for boolean (just how many bits does it take?)
cmp $$0, (%edx) # check if suspend is pending
jne 2f # handle suspend