Browse Source

* generic fpc_shortstr_assign: cleaned up
* align(): tweaked priority of calculation, yields better constant folding when these functions are inlined (alignment argument is a constant in most cases)

git-svn-id: trunk@20197 -

sergei 13 years ago
parent
commit
f18767f6a8
1 changed files with 4 additions and 6 deletions
  1. 4 6
      rtl/inc/generic.inc

+ 4 - 6
rtl/inc/generic.inc

@@ -874,13 +874,11 @@ begin
   res[0]:=chr(slen);
   res[0]:=chr(slen);
 end;
 end;
 
 
-procedure fpc_shortstr_assign(len:longint;sstr,dstr:pointer);[public,alias:'FPC_SHORTSTR_ASSIGN']; {$ifdef HAS_COMPILER_PROC} compilerproc; {$endif}
+procedure fpc_shortstr_assign(len:longint;sstr,dstr:pointer);[public,alias:'FPC_SHORTSTR_ASSIGN'];
 var
 var
   slen : byte;
   slen : byte;
-type
-  pstring = ^string;
 begin
 begin
-  slen:=length(pstring(sstr)^);
+  slen:=length(pshortstring(sstr)^);
   if slen<len then
   if slen<len then
     len:=slen;
     len:=slen;
   move(sstr^,dstr^,len+1);
   move(sstr^,dstr^,len+1);
@@ -1635,7 +1633,7 @@ function align(addr : PtrUInt;alignment : PtrUInt) : PtrUInt;{$ifdef SYSTEMINLIN
   var
   var
     tmp: PtrUInt;
     tmp: PtrUInt;
   begin
   begin
-    tmp:=addr+alignment-1;
+    tmp:=addr+(alignment-1);
     result:=tmp-(tmp mod alignment)
     result:=tmp-(tmp mod alignment)
   end;
   end;
 
 
@@ -1644,7 +1642,7 @@ function align(addr : Pointer;alignment : PtrUInt) : Pointer;{$ifdef SYSTEMINLIN
   var
   var
     tmp: PtrUInt;
     tmp: PtrUInt;
   begin
   begin
-    tmp:=PtrUInt(addr)+alignment-1;
+    tmp:=PtrUInt(addr)+(alignment-1);
     result:=pointer(tmp-(tmp mod alignment));
     result:=pointer(tmp-(tmp mod alignment));
   end;
   end;