diff options
author | Elliott Hughes <enh@google.com> | 2012-04-30 17:47:55 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-04-30 17:47:55 -0700 |
commit | 8b946491bd4d09229dc342c0be78ef36a56e7f78 (patch) | |
tree | a09b147dde77c77c451920e1750667610e9d9f10 /vm/mterp | |
parent | d2a4bb85573f20edd751557dfdca2033652b9f36 (diff) | |
parent | 636d67b098baf14ae8b505b638181a80a356e0ab (diff) | |
download | android_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.S | 3 | ||||
-rw-r--r-- | vm/mterp/x86-atom/footer.S | 3 |
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 |