diff --git a/rtl/i386/i386.inc b/rtl/i386/i386.inc index fb42b5f99f..fc8ed4c368 100644 --- a/rtl/i386/i386.inc +++ b/rtl/i386/i386.inc @@ -1076,47 +1076,49 @@ end; { do a thread save inc/dec } -procedure declocked(var l : longint);assembler; +function declocked(var l : longint) : boolean;assembler; asm + movl l,%edi {$ifdef MTRTL} { this check should be done because a lock takes a lot } { of time! } cmpb $0,IsMultithreaded jz .Ldeclockednolock - movl l,%edi lock decl (%edi) jmp .Ldeclockedend .Ldeclockednolock: {$endif MTRTL} - movl l,%edi decl (%edi); .Ldeclockedend: - end ['EDI']; + setzb %al + end ['EDI','EAX']; procedure inclocked(var l : longint);assembler; asm + movl l,%edi {$ifdef MTRTL} { this check should be done because a lock takes a lot } { of time! } cmpb $0,IsMultithreaded jz .Linclockednolock - movl l,%edi lock incl (%edi) jmp .Linclockedend .Linclockednolock: {$endif MTRTL} - movl l,%edi - incl (%edi); + incl (%edi) .Linclockedend: end ['EDI']; { $Log$ - Revision 1.11 2001-04-21 12:18:09 peter + Revision 1.12 2001-05-31 22:42:56 florian + * some fixes for widestrings and variants + + Revision 1.11 2001/04/21 12:18:09 peter * add nop after popa (merged) Revision 1.9 2001/04/08 13:19:28 jonas @@ -1143,5 +1145,4 @@ procedure inclocked(var l : longint);assembler; Revision 1.2 2000/07/13 11:33:41 michael + removed logs - -} \ No newline at end of file +} diff --git a/rtl/i386/rttip.inc b/rtl/i386/rttip.inc index f527ccc695..e83ae0ae2c 100644 --- a/rtl/i386/rttip.inc +++ b/rtl/i386/rttip.inc @@ -289,11 +289,8 @@ asm jmp .LExitAddRef // Dynamic Arrays .LDoDynArrayAddRef: - movl Data,%eax - orl %eax,%eax - jz .LExitAddRef - lock - incl -8(%eax) + pushl Data + call FPC_DYNARRAY_INCR_REF jmp .LExitAddRef .LDoClassAddRef: .LDoObjectAddRef: @@ -406,7 +403,7 @@ asm .LDoDynArrayDecRef: pushl TypeInfo pushl Data - call DYNARRAY_DECR_REF + call FPC_DYNARRAY_DECR_REF jmp .LExitDecRef .LDoClassDecRef: .LDoObjectDecRef: @@ -476,7 +473,10 @@ end; { $Log$ - Revision 1.8 2001-04-23 18:25:44 peter + Revision 1.9 2001-05-31 22:42:56 florian + * some fixes for widestrings and variants + + Revision 1.8 2001/04/23 18:25:44 peter * m68k updates Revision 1.7 2000/11/09 17:49:34 florian @@ -501,3 +501,4 @@ end; Revision 1.2 2000/07/13 11:33:41 michael + removed logs } +