فهرست منبع

* Rewrote those insane {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION} into somewhat more readable form.

git-svn-id: trunk@17163 -
sergei 14 سال پیش
والد
کامیت
f7dcad6f92
2فایلهای تغییر یافته به همراه30 افزوده شده و 19 حذف شده
  1. 10 6
      rtl/inc/system.inc
  2. 20 13
      rtl/inc/threadvr.inc

+ 10 - 6
rtl/inc/system.inc

@@ -779,9 +779,11 @@ var
 begin
   { call cpu/fpu initialisation routine }
   fpc_cpuinit;
-  with {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PInitFinalTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
-    InitFinalTable
-    {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION} do
+{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  with PInitFinalTable(EntryInformation.InitFinalTable)^ do
+{$else FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  with InitFinalTable do
+{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
    begin
      for i:=1 to TableCount do
       begin
@@ -808,9 +810,11 @@ end;
 
 procedure FinalizeUnits;[public,alias:'FPC_FINALIZEUNITS'];
 begin
-  with {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PInitFinalTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
-    InitFinalTable
-    {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION} do
+{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  with PInitFinalTable(EntryInformation.InitFinalTable)^ do
+{$else FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  with InitFinalTable do
+{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
    begin
      while (InitCount>0) do
       begin

+ 20 - 13
rtl/inc/threadvr.inc

@@ -52,15 +52,18 @@ procedure init_all_unit_threadvars;
 var
   i : integer;
 begin
+{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  with PltvInitTablesTable(EntryInformation.ThreadvarTablesTable)^ do
+{$else FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  with ThreadvarTablesTable do
+{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  begin
 {$ifdef DEBUG_MT}
-  WriteLn ('init_all_unit_threadvars (',
-    {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
-      ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.count,') units');
+    WriteLn ('init_all_unit_threadvars (',count,') units');
 {$endif}
-  for i := 1 to {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
-    ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.count do
-    init_unit_threadvars ({$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
-      ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.tables[i]);
+    for i := 1 to count do
+      init_unit_threadvars (tables[i]);
+  end;
 end;
 
 
@@ -83,14 +86,18 @@ procedure copy_all_unit_threadvars;
 var
   i : integer;
 begin
+{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  with PltvInitTablesTable(EntryInformation.ThreadvarTablesTable)^ do
+{$else FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  with ThreadvarTablesTable do
+{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
+  begin
 {$ifdef DEBUG_MT}
-  WriteLn ('copy_all_unit_threadvars (',{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
-    ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.count,') units');
+    WriteLn ('copy_all_unit_threadvars (',count,') units');
 {$endif}
-  for i := 1 to {$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
-    ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.count do
-    copy_unit_threadvars ({$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION}PltvInitTablesTable(EntryInformation.{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}
-      ThreadvarTablesTable{$ifdef FPC_HAS_INDIRECT_MAIN_INFORMATION})^{$endif FPC_HAS_INDIRECT_MAIN_INFORMATION}.tables[i]);
+    for i := 1 to count do
+      copy_unit_threadvars (tables[i]);
+  end;
 end;
 
 procedure InitThreadVars(RelocProc : Pointer);