Sfoglia il codice sorgente

* make SYSTEM_HAS_FEATURE_MONITOR a compiler based feature so programs can depend on it
* fix test

florian 3 giorni fa
parent
commit
c1493ac46c

+ 2 - 2
compiler/globtype.pas

@@ -351,7 +351,7 @@ interface
          f_ansistrings,f_widestrings,f_textio,f_consoleio,f_fileio,
          f_random,f_variants,f_objects,f_dynarrays,f_threading,f_commandargs,
          f_processes,f_stackcheck,f_dynlibs,f_softfpu,f_objectivec1,f_resources,
-         f_unicodestring
+         f_unicodestring,f_monitor
        );
        tfeatures = set of tfeature;
 
@@ -500,7 +500,7 @@ interface
          'ANSISTRINGS','WIDESTRINGS','TEXTIO','CONSOLEIO','FILEIO',
          'RANDOM','VARIANTS','OBJECTS','DYNARRAYS','THREADING','COMMANDARGS',
          'PROCESSES','STACKCHECK','DYNLIBS','SOFTFPU','OBJECTIVEC1','RESOURCES',
-         'UNICODESTRINGS'
+         'UNICODESTRINGS','MONITOR'
        );
 
     type

+ 6 - 0
compiler/options.pas

@@ -2216,6 +2216,12 @@ begin
     else
       target_unsup_features:=[];
   end;
+
+  { monitor support? }
+  if not(target_info.system in systems_aix+systems_bsd+systems_linux+
+    systems_nativent+systems_solaris+systems_wasm+systems_all_windows) then
+    Include(target_unsup_features,f_monitor);
+
   if def then
     features:=features-target_unsup_features
   else

+ 0 - 4
rtl/aix/system.pp

@@ -18,10 +18,6 @@ interface
 
 {$define FPC_IS_SYSTEM}
 
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
-
 {$linklib m}
 
 { include system-independent routine headers }

+ 0 - 3
rtl/bsd/system.pp

@@ -24,9 +24,6 @@ Unit System;
 
 Interface
 
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
 {$define FPC_USE_SIGPROCMASK}
 {$define FPC_USE_SIGALTSTACK}
 

+ 6 - 6
rtl/inc/objpas.inc

@@ -498,7 +498,7 @@ end;
            fillchar(instance^, InstanceSize, 0);
            { insert VMT pointer into the new created memory area }
            { (in class methods self contains the VMT!)           }
-           {$IFNDEF SYSTEM_HAS_FEATURE_MONITOR}
+           {$IFNDEF FPC_HAS_FEATURE_MONITOR}
              ppointer(instance)^:=pointer(self);
            {$ELSE}
              {$IFDEF VER3_2}
@@ -926,7 +926,7 @@ end;
 {$endif def FPC_HAS_FEATURE_RTTI}
                vmt:= vmt^.vParent;
              end;
-           {$IFDEF SYSTEM_HAS_FEATURE_MONITOR}
+           {$IFDEF FPC_HAS_FEATURE_MONITOR}
            if Assigned(_MonitorData) then
              TMonitor.FreeMonitorData(_MonitorData);
            {$ENDIF}
@@ -1240,7 +1240,7 @@ end;
         // Do nothing since we have no reference count.
       end;
 
-      {$IFDEF SYSTEM_HAS_FEATURE_MONITOR}
+      {$IFDEF FPC_HAS_FEATURE_MONITOR}
 
        function TObject.SetMonitorData(aData,aCheckOld : Pointer) : Pointer;
        begin
@@ -1251,7 +1251,7 @@ end;
        begin
          Result:=_MonitorData;
        end;
-      {$ENDIF}
+      {$ENDIF FPC_HAS_FEATURE_MONITOR}
 
 
 {****************************************************************************
@@ -2016,6 +2016,6 @@ end;
 
 {$ENDIF}
 
-{$IFDEF SYSTEM_HAS_FEATURE_MONITOR}
+{$IFDEF FPC_HAS_FEATURE_MONITOR}
 {$i monitor.inc}
-{$ENDIF}
+{$ENDIF FPC_HAS_FEATURE_MONITOR}

+ 3 - 3
rtl/inc/objpash.inc

@@ -242,7 +242,7 @@
        end;
 
        TObject = class
-       {$IFDEF SYSTEM_HAS_FEATURE_MONITOR}
+       {$IFDEF FPC_HAS_FEATURE_MONITOR}
        strict private
           _MonitorData : Pointer;
        private
@@ -610,7 +610,7 @@
   {*****************************************************************************
                                 TMonitor support
    *****************************************************************************}
-  {$IFDEF SYSTEM_HAS_FEATURE_MONITOR}
+  {$IFDEF FPC_HAS_FEATURE_MONITOR}
   Type
 
   PPMonitor = ^PMonitor;
@@ -675,7 +675,7 @@
   // Will set Do(S|G)etMonitorObjectData fields on aNew, and returns the old manager
   function SetMonitorManager (var aNew : TMonitorManager) : TMonitorManager;
   function GetMonitorManager : TMonitorManager;
-  {$ENDIF}
+  {$ENDIF FPC_HAS_FEATURE_MONITOR}
 
 {$endif FPC_HAS_FEATURE_CLASSES}
 

+ 0 - 4
rtl/linux/system.pp

@@ -25,10 +25,6 @@ Unit System;
                                     interface
 {*****************************************************************************}
 
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
-
 {$define FPC_IS_SYSTEM}
 {$define HAS_CMDLINE}
 {$define USE_NOTHREADMANAGER}

+ 0 - 4
rtl/nativent/system.pp

@@ -15,10 +15,6 @@
 unit System;
 interface
 
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
-
 {$define FPC_IS_SYSTEM}
 {$ifdef SYSTEMDEBUG}
   {$define SYSTEMEXCEPTIONDEBUG}

+ 0 - 4
rtl/solaris/system.pp

@@ -16,10 +16,6 @@ unit System;
 
 interface
 
-
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
 {$define FPC_IS_SYSTEM}
 
 {$linklib m}

+ 0 - 5
rtl/wasicommon/system.pp

@@ -17,11 +17,6 @@ unit system;
 
 interface
 
-
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
-
 {$define FPC_IS_SYSTEM}
 
 {$if defined(WASIp1threads) and not defined(FPC_WASM_THREADS)}

+ 0 - 5
rtl/wasip2/system.pp

@@ -17,11 +17,6 @@ unit system;
 
 interface
 
-
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
-
 {$define FPC_IS_SYSTEM}
 
 {$ifdef FPC_WASM_THREADS}

+ 0 - 5
rtl/win32/system.pp

@@ -16,11 +16,6 @@
 unit System;
 interface
 
-
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
-
 {$define FPC_IS_SYSTEM}
 {$ifdef SYSTEMDEBUG}
   {$define SYSTEMEXCEPTIONDEBUG}

+ 0 - 4
rtl/win64/system.pp

@@ -17,10 +17,6 @@ unit System;
 
 interface
 
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
-
 {$define FPC_IS_SYSTEM}
 { $define SYSTEMEXCEPTIONDEBUG}
 

+ 0 - 4
rtl/wince/system.pp

@@ -17,10 +17,6 @@ unit System;
 
 interface
 
-{$IFNDEF FPC_DISABLE_MONITOR}
-{$DEFINE SYSTEM_HAS_FEATURE_MONITOR}
-{$ENDIF}
-
 {$define FPC_IS_SYSTEM}
 {$ifdef SYSTEMDEBUG}
   {$define SYSTEMEXCEPTIONDEBUG}

+ 1 - 2
tests/webtbs/tw15415.pp

@@ -6,7 +6,6 @@ type
  end;
 
 begin
- if ptruint(@TMyClass(pointer(5)).i2)<>(5+sizeof(pointer)+4) then
+ if ptruint(@TMyClass(pointer(5)).i2)<>(5+sizeof(pointer){$IFDEF FPC_HAS_FEATURE_MONITOR}*2{$ENDIF FPC_HAS_FEATURE_MONITOR}+4) then
    halt(1);
 end.
-