Changeset 5938 for trunk/src/kernel32


Ignore:
Timestamp:
Jun 9, 2001, 9:45:42 PM (24 years ago)
Author:
sandervl
Message:

interlock improvements

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/interlock.asm

    r5816 r5938  
    1 ; $Id: interlock.asm,v 1.9 2001-05-28 12:39:33 phaller Exp $
     1; $Id: interlock.asm,v 1.10 2001-06-09 19:45:42 sandervl Exp $
    22
    33;/*
     
    3232
    3333_InterlockedIncrement@4 proc near
    34         mov     eax, dword ptr [esp+4] ; LPLONG lpAddend
    35         lock    inc dword ptr [eax]
    36         mov     eax, 0                 ; Note: must be "MOV eax,0"
    37                                        ; instead of faster "XOR eax,eax"
    38                                        ; because MOV doesn't tough any
    39                                        ; flag register.
    40                                        
    41         je      @end                   ; not incremented?
    42         jl      @decr
    43         inc     eax                    ; ?
    44         jmp     @end
    45 @decr:  dec     eax                    ; ?
    46 @end:   ret     4
     34        ;we are allowed to trash edx
     35        mov     edx, dword ptr [esp+4] ; LPLONG lpAddend
     36        mov     eax, 1
     37        lock    xadd dword ptr [edx], eax
     38        inc     eax
     39        ret     4
    4740_InterlockedIncrement@4 endp
    4841
     
    5952
    6053_InterlockedDecrement@4 proc near
    61         mov     eax, dword ptr [esp+4] ; LPLONG lpAddend
    62         lock    dec dword ptr [eax]
    63         mov     eax, 0                 ; Note: must be "MOV eax,0"
    64                                        ; instead of faster "XOR eax,eax"
    65                                        ; because MOV doesn't tough any
    66                                        ; flag register.
    67         je      @end                   ; not decremented?
    68         jl      @decr
    69         inc     eax                    ; ?
    70         jmp     @end
    71 @decr:  dec     eax                    ; ?
    72 @end:   ret     4
     54        ;we are allowed to trash edx
     55        mov     edx, dword ptr [esp+4] ; LPLONG lpAddend
     56        mov     eax, -1
     57        lock    xadd dword ptr [edx], eax
     58        dec     eax
     59        ret     4
    7360_InterlockedDecrement@4 endp
    7461
Note: See TracChangeset for help on using the changeset viewer.