|
@@ -801,46 +801,6 @@ begin
|
|
|
end ['EBX','ECX','EAX','ESI','EDI'];
|
|
|
end;
|
|
|
|
|
|
-{$ifdef newoptimizations}
|
|
|
-procedure int_strconcatlen(s1,s2:pointer;maxlen: longint);
|
|
|
- [public,alias:'FPC_SHORTSTR_CONCAT_LEN'];
|
|
|
-begin
|
|
|
- asm
|
|
|
- movl s2,%edi
|
|
|
- movl s1,%esi
|
|
|
- movl %edi,%ebx
|
|
|
- movzbl (%edi),%ecx
|
|
|
- xor %eax,%eax
|
|
|
- lea 1(%edi,%ecx),%edi
|
|
|
- negl %ecx
|
|
|
- addl maxlen,%ecx
|
|
|
- lodsb
|
|
|
- cmpl %ecx,%eax
|
|
|
- jbe .LStrConcat1
|
|
|
- movl %ecx,%eax
|
|
|
-.LStrConcat1:
|
|
|
- addb %al,(%ebx)
|
|
|
- cmpl $7,%eax
|
|
|
- jl .LStrConcat2
|
|
|
- movl %edi,%ecx { Align on 32bits }
|
|
|
- negl %ecx
|
|
|
- andl $3,%ecx
|
|
|
- subl %ecx,%eax
|
|
|
- rep
|
|
|
- movsb
|
|
|
- movl %eax,%ecx
|
|
|
- andl $3,%eax
|
|
|
- shrl $2,%ecx
|
|
|
- rep
|
|
|
- movsl
|
|
|
-.LStrConcat2:
|
|
|
- movl %eax,%ecx
|
|
|
- rep
|
|
|
- movsb
|
|
|
- end ['EBX','ECX','EAX','ESI','EDI'];
|
|
|
-end;
|
|
|
-{$endif newoptimizations}
|
|
|
-
|
|
|
|
|
|
{$define FPC_SYSTEM_HAS_FPC_SHORTSTR_COMPARE}
|
|
|
procedure int_strcmp(dstr,sstr:pointer);[public,alias:'FPC_SHORTSTR_COMPARE'];
|
|
@@ -1196,7 +1156,12 @@ end;
|
|
|
|
|
|
{
|
|
|
$Log$
|
|
|
- Revision 1.74 2000-07-07 18:23:41 marco
|
|
|
+ Revision 1.75 2000-07-08 09:09:35 jonas
|
|
|
+ - removed fpc_strconcat_len for -dnewoptimizations since it's not
|
|
|
+ used anymore (because the strconcat optimizations have been
|
|
|
+ disabled quite a while ago)
|
|
|
+
|
|
|
+ Revision 1.74 2000/07/07 18:23:41 marco
|
|
|
* Changed move (var source;var dest) to move (const source;var dest)
|
|
|
|
|
|
Revision 1.73 2000/05/09 06:21:58 pierre
|