* InterlockedIncrement/Decrement must return the modified value, not the initial one. Fixes a number of interface memory leaks in MIPS test suite. The functions remain not thread-safe yet.

git-svn-id: trunk@23393 -
This commit is contained in:
sergei 2013-01-15 19:17:57 +00:00
parent b35d04ffa8
commit 4c84febfae

View File

@ -543,18 +543,20 @@ end;
function InterLockedDecrement (var Target: longint) : longint; assembler; nostackframe;
asm
{$warning FIXME: This implementation of InterLockedDecrement in not yet ThreadSafe }
// must return value after decrement
lw $v0,($a0)
addi $v1,$v0,-1
sw $v1,($a0)
addi $v0,$v0,-1
sw $v0,($a0)
end;
function InterLockedIncrement (var Target: longint) : longint; assembler; nostackframe;
asm
{$warning FIXME: This implementation of InterLockedIncrement in not yet ThreadSafe }
// must return value after increment
lw $v0,($a0)
addi $v1,$v0,1
sw $v1,($a0)
addi $v0,$v0,1
sw $v0,($a0)
end;