mirror of
https://github.com/golang/go
synced 2024-11-19 14:54:43 -07:00
runtime: improve memmove
check memory overlap R=rsc, r, ken, edsrzf CC=golang-dev https://golang.org/cl/4602047
This commit is contained in:
parent
17ca32e9db
commit
439694125f
@ -32,7 +32,6 @@ TEXT runtime·memmove(SB), 7, $0
|
||||
|
||||
/*
|
||||
* check and set for backwards
|
||||
* should we look closer for overlap?
|
||||
*/
|
||||
CMPL SI, DI
|
||||
JLS back
|
||||
@ -40,6 +39,7 @@ TEXT runtime·memmove(SB), 7, $0
|
||||
/*
|
||||
* forward copy loop
|
||||
*/
|
||||
forward:
|
||||
MOVL BX, CX
|
||||
SHRL $2, CX
|
||||
ANDL $3, BX
|
||||
@ -50,11 +50,19 @@ TEXT runtime·memmove(SB), 7, $0
|
||||
|
||||
MOVL to+0(FP),AX
|
||||
RET
|
||||
/*
|
||||
* check overlap
|
||||
*/
|
||||
back:
|
||||
MOVL SI, CX
|
||||
ADDL BX, CX
|
||||
CMPL CX, DI
|
||||
JLS forward
|
||||
/*
|
||||
* whole thing backwards has
|
||||
* adjusted addresses
|
||||
*/
|
||||
back:
|
||||
|
||||
ADDL BX, DI
|
||||
ADDL BX, SI
|
||||
STD
|
||||
|
@ -33,7 +33,6 @@ TEXT runtime·memmove(SB), 7, $0
|
||||
|
||||
/*
|
||||
* check and set for backwards
|
||||
* should we look closer for overlap?
|
||||
*/
|
||||
CMPQ SI, DI
|
||||
JLS back
|
||||
@ -41,6 +40,7 @@ TEXT runtime·memmove(SB), 7, $0
|
||||
/*
|
||||
* forward copy loop
|
||||
*/
|
||||
forward:
|
||||
MOVQ BX, CX
|
||||
SHRQ $3, CX
|
||||
ANDQ $7, BX
|
||||
@ -51,11 +51,19 @@ TEXT runtime·memmove(SB), 7, $0
|
||||
|
||||
MOVQ to+0(FP),AX
|
||||
RET
|
||||
back:
|
||||
/*
|
||||
* check overlap
|
||||
*/
|
||||
MOVQ SI, CX
|
||||
ADDQ BX, CX
|
||||
CMPQ CX, DI
|
||||
JLS forward
|
||||
|
||||
/*
|
||||
* whole thing backwards has
|
||||
* adjusted addresses
|
||||
*/
|
||||
back:
|
||||
ADDQ BX, DI
|
||||
ADDQ BX, SI
|
||||
STD
|
||||
|
Loading…
Reference in New Issue
Block a user