]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: use SETEQ instead of JZ for cas
authorJosh Bleecher Snyder <josharian@gmail.com>
Thu, 1 Jan 2015 01:31:32 +0000 (17:31 -0800)
committerJosh Bleecher Snyder <josharian@gmail.com>
Fri, 2 Jan 2015 19:06:36 +0000 (19:06 +0000)
Change-Id: Ibabbca3988d39bdce584924173a912d45f50f0dd
Reviewed-on: https://go-review.googlesource.com/2243
Reviewed-by: Dave Cheney <dave@cheney.net>
Reviewed-by: Minux Ma <minux@golang.org>
src/runtime/asm_386.s
src/runtime/asm_amd64.s
src/runtime/asm_amd64p32.s

index 40b5c2e0104bb8780b4776e74b58b39d8275279e..43f92b2b8b74791bf2f1d6100e08da308ad86592 100644 (file)
@@ -439,12 +439,7 @@ TEXT runtime·cas(SB), NOSPLIT, $0-13
        MOVL    new+8(FP), CX
        LOCK
        CMPXCHGL        CX, 0(BX)
-       JZ 4(PC)
-       MOVL    $0, AX
-       MOVB    AX, ret+12(FP)
-       RET
-       MOVL    $1, AX
-       MOVB    AX, ret+12(FP)
+       SETEQ   , ret+12(FP)
        RET
 
 TEXT runtime·casuintptr(SB), NOSPLIT, $0-13
@@ -475,13 +470,7 @@ TEXT runtime·cas64(SB), NOSPLIT, $0-21
        MOVL    new_hi+16(FP), CX
        LOCK
        CMPXCHG8B       0(BP)
-       JNZ     fail
-       MOVL    $1, AX
-       MOVB    AX, ret+20(FP)
-       RET
-fail:
-       MOVL    $0, AX
-       MOVB    AX, ret+20(FP)
+       SETEQ   , ret+20(FP)
        RET
 
 // bool casp(void **p, void *old, void *new)
@@ -497,12 +486,7 @@ TEXT runtime·casp1(SB), NOSPLIT, $0-13
        MOVL    new+8(FP), CX
        LOCK
        CMPXCHGL        CX, 0(BX)
-       JZ 4(PC)
-       MOVL    $0, AX
-       MOVB    AX, ret+12(FP)
-       RET
-       MOVL    $1, AX
-       MOVB    AX, ret+12(FP)
+       SETEQ   , ret+12(FP)
        RET
 
 // uint32 xadd(uint32 volatile *val, int32 delta)
index 3d96d0901417d2db995edba3b9834ebc3af1cc2b..4061e99c4ba33d1b03fe396492a5240cab1ceb65 100644 (file)
@@ -427,12 +427,7 @@ TEXT runtime·cas(SB), NOSPLIT, $0-17
        MOVL    new+12(FP), CX
        LOCK
        CMPXCHGL        CX, 0(BX)
-       JZ 4(PC)
-       MOVL    $0, AX
-       MOVB    AX, ret+16(FP)
-       RET
-       MOVL    $1, AX
-       MOVB    AX, ret+16(FP)
+       SETEQ   , ret+16(FP)
        RET
 
 // bool        runtime·cas64(uint64 *val, uint64 old, uint64 new)
@@ -449,13 +444,7 @@ TEXT runtime·cas64(SB), NOSPLIT, $0-25
        MOVQ    new+16(FP), CX
        LOCK
        CMPXCHGQ        CX, 0(BX)
-       JNZ     fail
-       MOVL    $1, AX
-       MOVB    AX, ret+24(FP)
-       RET
-fail:
-       MOVL    $0, AX
-       MOVB    AX, ret+24(FP)
+       SETEQ   , ret+24(FP)
        RET
        
 TEXT runtime·casuintptr(SB), NOSPLIT, $0-25
@@ -483,12 +472,7 @@ TEXT runtime·casp1(SB), NOSPLIT, $0-25
        MOVQ    new+16(FP), CX
        LOCK
        CMPXCHGQ        CX, 0(BX)
-       JZ 4(PC)
-       MOVL    $0, AX
-       MOVB    AX, ret+24(FP)
-       RET
-       MOVL    $1, AX
-       MOVB    AX, ret+24(FP)
+       SETEQ   , ret+24(FP)
        RET
 
 // uint32 xadd(uint32 volatile *val, int32 delta)
index 6a8544ed45399a1b1c8de981d1b2e092bc7fc937..b9197347706c8a88d81af33ca480e4bed1697864 100644 (file)
@@ -400,12 +400,7 @@ TEXT runtime·cas(SB), NOSPLIT, $0-17
        MOVL    new+8(FP), CX
        LOCK
        CMPXCHGL        CX, 0(BX)
-       JZ 4(PC)
-       MOVL    $0, AX
-       MOVB    AX, ret+16(FP)
-       RET
-       MOVL    $1, AX
-       MOVB    AX, ret+16(FP)
+       SETEQ   , ret+16(FP)
        RET
 
 TEXT runtime·casuintptr(SB), NOSPLIT, $0-17
@@ -434,13 +429,7 @@ TEXT runtime·cas64(SB), NOSPLIT, $0-25
        MOVQ    new+16(FP), CX
        LOCK
        CMPXCHGQ        CX, 0(BX)
-       JNZ     fail
-       MOVL    $1, AX
-       MOVB    AX, ret+24(FP)
-       RET
-fail:
-       MOVL    $0, AX
-       MOVB    AX, ret+24(FP)
+       SETEQ   , ret+24(FP)
        RET
 
 // bool casp(void **val, void *old, void *new)
@@ -456,12 +445,7 @@ TEXT runtime·casp1(SB), NOSPLIT, $0-17
        MOVL    new+8(FP), CX
        LOCK
        CMPXCHGL        CX, 0(BX)
-       JZ 4(PC)
-       MOVL    $0, AX
-       MOVB    AX, ret+16(FP)
-       RET
-       MOVL    $1, AX
-       MOVB    AX, ret+16(FP)
+       SETEQ   , ret+16(FP)
        RET
 
 // uint32 xadd(uint32 volatile *val, int32 delta)