1
0
mirror of https://github.com/golang/go synced 2024-11-19 05:34:40 -07:00

runtime: add argument sizes for asm functions for bytes, strings

Also fixed a stack corruption bug for nacl/amd64p32.

Change-Id: I64b821b16999c296a159137d971af3870053c621
Signed-off-by: Shenghou Ma <minux@golang.org>
Reviewed-on: https://go-review.googlesource.com/7073
Reviewed-by: Dave Cheney <dave@cheney.net>
This commit is contained in:
Shenghou Ma 2015-03-07 00:18:16 -05:00 committed by Minux Ma
parent de486b24d1
commit 3b00197017
5 changed files with 15 additions and 15 deletions

View File

@ -1451,7 +1451,7 @@ TEXT bytes·Compare(SB),NOSPLIT,$0-28
MOVL AX, ret+24(FP)
RET
TEXT bytes·IndexByte(SB),NOSPLIT,$0
TEXT bytes·IndexByte(SB),NOSPLIT,$0-20
MOVL s+0(FP), SI
MOVL s_len+4(FP), CX
MOVB c+12(FP), AL
@ -1465,7 +1465,7 @@ TEXT bytes·IndexByte(SB),NOSPLIT,$0
MOVL DI, ret+16(FP)
RET
TEXT strings·IndexByte(SB),NOSPLIT,$0
TEXT strings·IndexByte(SB),NOSPLIT,$0-16
MOVL s+0(FP), SI
MOVL s_len+4(FP), CX
MOVB c+8(FP), AL

View File

@ -1509,7 +1509,7 @@ allsame:
LEAQ -1(CX)(AX*2), AX // 1,0,-1 result
RET
TEXT bytes·IndexByte(SB),NOSPLIT,$0
TEXT bytes·IndexByte(SB),NOSPLIT,$0-40
MOVQ s+0(FP), SI
MOVQ s_len+8(FP), BX
MOVB c+24(FP), AL
@ -1517,7 +1517,7 @@ TEXT bytes·IndexByte(SB),NOSPLIT,$0
MOVQ AX, ret+32(FP)
RET
TEXT strings·IndexByte(SB),NOSPLIT,$0
TEXT strings·IndexByte(SB),NOSPLIT,$0-32
MOVQ s+0(FP), SI
MOVQ s_len+8(FP), BX
MOVB c+16(FP), AL

View File

@ -822,7 +822,7 @@ TEXT bytes·Compare(SB),NOSPLIT,$0-28
MOVL s2+12(FP), DI
MOVL s2+16(FP), DX
CALL runtime·cmpbody(SB)
MOVQ AX, res+24(FP)
MOVL AX, res+24(FP)
RET
// input:
@ -943,7 +943,7 @@ allsame:
LEAQ -1(CX)(AX*2), AX // 1,0,-1 result
RET
TEXT bytes·IndexByte(SB),NOSPLIT,$0
TEXT bytes·IndexByte(SB),NOSPLIT,$0-20
MOVL s+0(FP), SI
MOVL s_len+4(FP), BX
MOVB c+12(FP), AL
@ -951,7 +951,7 @@ TEXT bytes·IndexByte(SB),NOSPLIT,$0
MOVL AX, ret+16(FP)
RET
TEXT strings·IndexByte(SB),NOSPLIT,$0
TEXT strings·IndexByte(SB),NOSPLIT,$0-20
MOVL s+0(FP), SI
MOVL s_len+4(FP), BX
MOVB c+8(FP), AL

View File

@ -808,7 +808,7 @@ loop:
RET
// TODO: share code with memeq?
TEXT bytes·Equal(SB),NOSPLIT,$0
TEXT bytes·Equal(SB),NOSPLIT,$0-25
MOVW a_len+4(FP), R1
MOVW b_len+16(FP), R3
@ -837,12 +837,12 @@ equal:
MOVBU R0, ret+24(FP)
RET
TEXT bytes·IndexByte(SB),NOSPLIT,$0
TEXT bytes·IndexByte(SB),NOSPLIT,$0-20
MOVW s+0(FP), R0
MOVW s_len+4(FP), R1
MOVBU c+12(FP), R2 // byte to find
MOVW R0, R4 // store base for later
ADD R0, R1 // end
ADD R0, R1 // end
_loop:
CMP R0, R1
@ -853,7 +853,7 @@ _loop:
SUB $1, R0 // R0 will be one beyond the position we want
SUB R4, R0 // remove base
MOVW R0, ret+16(FP)
MOVW R0, ret+16(FP)
RET
_notfound:
@ -861,12 +861,12 @@ _notfound:
MOVW R0, ret+16(FP)
RET
TEXT strings·IndexByte(SB),NOSPLIT,$0
TEXT strings·IndexByte(SB),NOSPLIT,$0-16
MOVW s+0(FP), R0
MOVW s_len+4(FP), R1
MOVBU c+8(FP), R2 // byte to find
MOVW R0, R4 // store base for later
ADD R0, R1 // end
ADD R0, R1 // end
_sib_loop:
CMP R0, R1
@ -877,7 +877,7 @@ _sib_loop:
SUB $1, R0 // R0 will be one beyond the position we want
SUB R4, R0 // remove base
MOVW R0, ret+12(FP)
MOVW R0, ret+12(FP)
RET
_sib_notfound:

View File

@ -1039,7 +1039,7 @@ notfound:
MOVD R3, ret+32(FP)
RETURN
TEXT strings·IndexByte(SB),NOSPLIT,$0
TEXT strings·IndexByte(SB),NOSPLIT,$0-32
MOVD p+0(FP), R3
MOVD b_len+8(FP), R4
MOVBZ c+16(FP), R5 // byte to find