OSDN Git Service

Use unsigned compare for stack overflow.
authorAndy McFadden <fadden@android.com>
Wed, 28 Apr 2010 22:46:16 +0000 (15:46 -0700)
committerAndy McFadden <fadden@android.com>
Wed, 28 Apr 2010 22:46:16 +0000 (15:46 -0700)
When checking for stack overflow we're using a comparison that is treating
the pointers as signed values.  If we manage to get a stack straddling
0x80000000, this will not work correctly.

Bug 2613607.

Change-Id: I5d178db86e93a3bb1e6a417e88d7cb1770d285bb

vm/mterp/armv5te/footer.S
vm/mterp/out/InterpAsm-armv4t.S
vm/mterp/out/InterpAsm-armv5te-vfp.S
vm/mterp/out/InterpAsm-armv5te.S
vm/mterp/out/InterpAsm-armv7-a-neon.S
vm/mterp/out/InterpAsm-armv7-a.S

index cf797de..50071ec 100644 (file)
@@ -553,7 +553,7 @@ common_invokeMethodNoRange:
     sub     r3, r10, r3, lsl #2         @ r3<- bottom (newsave - outsSize)
     cmp     r3, r9                      @ bottom < interpStackEnd?
     ldr     r3, [r0, #offMethod_accessFlags] @ r3<- methodToCall->accessFlags
-    blt     .LstackOverflow             @ yes, this frame will overflow stack
+    blo     .LstackOverflow             @ yes, this frame will overflow stack
 
     @ set up newSaveArea
 #ifdef EASY_GDB
index 6ae29ba..f7f1a69 100644 (file)
@@ -10275,7 +10275,7 @@ common_invokeMethodNoRange:
     sub     r3, r10, r3, lsl #2         @ r3<- bottom (newsave - outsSize)
     cmp     r3, r9                      @ bottom < interpStackEnd?
     ldr     r3, [r0, #offMethod_accessFlags] @ r3<- methodToCall->accessFlags
-    blt     .LstackOverflow             @ yes, this frame will overflow stack
+    blo     .LstackOverflow             @ yes, this frame will overflow stack
 
     @ set up newSaveArea
 #ifdef EASY_GDB
index d59668d..e377858 100644 (file)
@@ -9795,7 +9795,7 @@ common_invokeMethodNoRange:
     sub     r3, r10, r3, lsl #2         @ r3<- bottom (newsave - outsSize)
     cmp     r3, r9                      @ bottom < interpStackEnd?
     ldr     r3, [r0, #offMethod_accessFlags] @ r3<- methodToCall->accessFlags
-    blt     .LstackOverflow             @ yes, this frame will overflow stack
+    blo     .LstackOverflow             @ yes, this frame will overflow stack
 
     @ set up newSaveArea
 #ifdef EASY_GDB
index 6b5e41c..6c22d1d 100644 (file)
@@ -10271,7 +10271,7 @@ common_invokeMethodNoRange:
     sub     r3, r10, r3, lsl #2         @ r3<- bottom (newsave - outsSize)
     cmp     r3, r9                      @ bottom < interpStackEnd?
     ldr     r3, [r0, #offMethod_accessFlags] @ r3<- methodToCall->accessFlags
-    blt     .LstackOverflow             @ yes, this frame will overflow stack
+    blo     .LstackOverflow             @ yes, this frame will overflow stack
 
     @ set up newSaveArea
 #ifdef EASY_GDB
index da3d80e..9e00786 100644 (file)
@@ -9721,7 +9721,7 @@ common_invokeMethodNoRange:
     sub     r3, r10, r3, lsl #2         @ r3<- bottom (newsave - outsSize)
     cmp     r3, r9                      @ bottom < interpStackEnd?
     ldr     r3, [r0, #offMethod_accessFlags] @ r3<- methodToCall->accessFlags
-    blt     .LstackOverflow             @ yes, this frame will overflow stack
+    blo     .LstackOverflow             @ yes, this frame will overflow stack
 
     @ set up newSaveArea
 #ifdef EASY_GDB
index 05ad9ad..e2e0def 100644 (file)
@@ -9721,7 +9721,7 @@ common_invokeMethodNoRange:
     sub     r3, r10, r3, lsl #2         @ r3<- bottom (newsave - outsSize)
     cmp     r3, r9                      @ bottom < interpStackEnd?
     ldr     r3, [r0, #offMethod_accessFlags] @ r3<- methodToCall->accessFlags
-    blt     .LstackOverflow             @ yes, this frame will overflow stack
+    blo     .LstackOverflow             @ yes, this frame will overflow stack
 
     @ set up newSaveArea
 #ifdef EASY_GDB