Browse Source

explicit untraced (unsafe does not imply untraced any more)

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7473 8c9fc860-2736-0410-a75d-ab315db34111
felixf 7 years ago
parent
commit
0295a30a7c

+ 4 - 4
source/FoxArrayBase.Mod

@@ -106,7 +106,7 @@ TYPE
 	
 	Tensor = POINTER TO ArrayDescriptor;
 	
-	UnsafeArray*= POINTER {UNSAFE} TO RECORD(ArrayDescriptor)
+	UnsafeArray*= POINTER {UNSAFE,UNTRACED} TO RECORD(ArrayDescriptor)
 		lens*: ARRAY 8 OF LenInc;
 	END;
 	
@@ -2136,7 +2136,7 @@ Sufficient (but not necessary) conditions:
 	
 (** COMPLEX *)
 	PROCEDURE GenericLoopZ( ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE(x: COMPLEX): COMPLEX );
-	VAR lval,dval: POINTER{UNSAFE} TO RECORD val: COMPLEX END;	
+	VAR lval,dval: POINTER{UNSAFE,UNTRACED} TO RECORD val: COMPLEX END;	
 	BEGIN
 		WHILE (len > 0) DO
 			lval := ladr;
@@ -2149,7 +2149,7 @@ Sufficient (but not necessary) conditions:
 
 (** LONGCOMPLEX *)
 	PROCEDURE GenericLoopLZ( ladr, dadr: ADDRESS; linc, dinc, len: SIZE; op: PROCEDURE(x: LONGCOMPLEX): LONGCOMPLEX );
-	VAR lval,dval: POINTER{UNSAFE} TO RECORD val: LONGCOMPLEX END;	
+	VAR lval,dval: POINTER{UNSAFE,UNTRACED} TO RECORD val: LONGCOMPLEX END;	
 	BEGIN
 		WHILE (len > 0) DO
 			lval := ladr;
@@ -7378,7 +7378,7 @@ Sufficient (but not necessary) conditions:
 	*)
 
 TYPE 
-	LongintPtr = POINTER {UNSAFE} TO RECORD val: LONGINT END;
+	LongintPtr = POINTER {UNSAFE,UNTRACED} TO RECORD val: LONGINT END;
 	
 	PROCEDURE MinALALLoop( ladr, radr, dadr: LongintPtr; linc, rinc, dinc, len: SIZE); 
 	BEGIN

+ 8 - 8
source/FoxInterpreterSymbols.Mod

@@ -210,14 +210,14 @@ TYPE
 		END Next;
 		
 		PROCEDURE PushH(h: HUGEINT);
-		VAR p: POINTER {UNSAFE} TO RECORD h: HUGEINT END;
+		VAR p: POINTER {UNSAFE,UNTRACED} TO RECORD h: HUGEINT END;
 		BEGIN
 			p := Next(SIZEOF(HUGEINT));
 			p.h := h;
 		END PushH;
 
 		PROCEDURE PushL(i: LONGINT);
-		VAR p: POINTER {UNSAFE} TO RECORD i: LONGINT END;
+		VAR p: POINTER {UNSAFE,UNTRACED} TO RECORD i: LONGINT END;
 		BEGIN
 			p := Next(SIZEOF(LONGINT));
 			p.i := i;
@@ -234,7 +234,7 @@ TYPE
 		END PushS;		
 		
 		PROCEDURE PushB(b: BOOLEAN);
-		VAR p: POINTER {UNSAFE} TO RECORD b: BOOLEAN END;
+		VAR p: POINTER {UNSAFE,UNTRACED} TO RECORD b: BOOLEAN END;
 		BEGIN
 			p := Next(SIZEOF(LONGINT));
 			p.b := b;
@@ -246,28 +246,28 @@ TYPE
 		END PushC;
 		
 		PROCEDURE PushSet(set: SET);
-		VAR p: POINTER {UNSAFE} TO RECORD s:SET END;
+		VAR p: POINTER {UNSAFE,UNTRACED} TO RECORD s:SET END;
 		BEGIN
 			p := Next(SIZEOF(SET));
 			p.s := set;
 		END PushSet;
 
 		PROCEDURE PushR(r: REAL);
-		VAR p: POINTER {UNSAFE} TO RECORD r: REAL END;
+		VAR p: POINTER {UNSAFE,UNTRACED} TO RECORD r: REAL END;
 		BEGIN
 			p := Next(SIZEOF(REAL));
 			p.r := r;
 		END PushR;
 		
 		PROCEDURE PushX(x: LONGREAL);
-		VAR p: POINTER {UNSAFE} TO RECORD x: LONGREAL END;
+		VAR p: POINTER {UNSAFE,UNTRACED} TO RECORD x: LONGREAL END;
 		BEGIN
 			p := Next(SIZEOF(LONGREAL));
 			p.x := x;
 		END PushX;
 		
 		PROCEDURE PushA(a: ADDRESS);
-		VAR p: POINTER {UNSAFE} TO RECORD a: ADDRESS END;
+		VAR p: POINTER {UNSAFE,UNTRACED} TO RECORD a: ADDRESS END;
 		BEGIN
 			p := Next(SIZEOF(ADDRESS));
 			p.a := a;
@@ -275,7 +275,7 @@ TYPE
 
 
 		PROCEDURE PushSz(s: SIZE);
-		VAR p: POINTER {UNSAFE} TO RECORD s: SIZE END;
+		VAR p: POINTER {UNSAFE,UNTRACED} TO RECORD s: SIZE END;
 		BEGIN
 			p := Next(SIZEOF(SIZE));
 			p.s := s;

+ 2 - 2
source/Generic.Modules.Mod

@@ -38,7 +38,7 @@ TYPE
 	(* the correponding name array is protected from being GCed via module's internal pointer arrray 
 		compiler generated!
 	*)
-	DynamicName* = POINTER {UNSAFE} TO ARRAY 256 OF CHAR;
+	DynamicName* = POINTER {UNSAFE,UNTRACED} TO ARRAY 256 OF CHAR;
 	
 	Command* = RECORD
 		(* Fields exported for initialization by loader/linker only! Consider read-only! *)
@@ -54,7 +54,7 @@ TYPE
 		exports*: LONGINT; (* number of exports referenced by ExportArray *)
 		dsc* {UNTRACED}: ExportArray; (* pointer to memory containing a raw array with "exports" entries *)
 	END;
-	ExportArray* = POINTER {UNSAFE} TO ARRAY OF ExportDesc;
+	ExportArray* = POINTER {UNSAFE,UNTRACED} TO ARRAY OF ExportDesc;
 
 	Bytes* = POINTER TO ARRAY OF CHAR;
 

+ 3 - 3
source/Generic.Reflection.Mod

@@ -352,8 +352,8 @@ CONST
 		s8: SIGNED8; s16: SIGNED16; s32: SIGNED32; s64: SIGNED64;
 		u8: UNSIGNED8; u16: UNSIGNED16; u32: UNSIGNED32; u64: UNSIGNED64;
 		r: REAL; x: LONGREAL;
-		cplx: POINTER {UNSAFE} TO RECORD re,im: REAL END;
-		lcplx: POINTER {UNSAFE} TO RECORD re,im: LONGREAL END;
+		cplx {UNTRACED}: POINTER {UNSAFE} TO RECORD re,im: REAL END;
+		lcplx {UNTRACED}: POINTER {UNSAFE} TO RECORD re,im: LONGREAL END;
 		set: SET;
 		byte: SYSTEM.BYTE;
 
@@ -510,7 +510,7 @@ CONST
 			lens: ARRAY 8 OF LenInc;
 		END;
 		
-		VAR t: UnsafeArray; i: SIZE;
+		VAR t {UNTRACED}: UnsafeArray; i: SIZE;
 	BEGIN
 		IF adr = NIL THEN w.String(" (NIL)"); 
 		ELSIF  OnHeapOrStack(adr, low, high) THEN

+ 2 - 2
source/Generic.Unix.X11.Mod

@@ -159,7 +159,7 @@ TYPE
 				resourceid*, serial*: LONGINT;
 				errorCode*, requestCode*, minorCode*: CHAR
 			END;
-	ErrorEventPtr* = POINTER {UNSAFE} TO ErrorEvent;
+	ErrorEventPtr* = POINTER {UNSAFE,UNTRACED} TO ErrorEvent;
 	ErrorHandler* = PROCEDURE ( d: DisplayPtr;  err: ErrorEventPtr; p3, p4: LONGINT ): LONGINT;
 	IOErrorHandler = PROCEDURE ( d: DisplayPtr; p2, p3, p4: LONGINT ): LONGINT;
 
@@ -486,7 +486,7 @@ VAR
 		Unix.Dlsym( xlib, "XAllocColor", ADDRESSOF( AllocColor ) );
 	END LinkToX;
 
-	PROCEDURE MyErrorHandler( d: DisplayPtr;  err: ErrorEventPtr ): LONGINT;
+	PROCEDURE MyErrorHandler( d: DisplayPtr;  err {UNTRACED}: ErrorEventPtr ): LONGINT;
 	BEGIN
 		ErrorFlag := TRUE;
 		GetErrorText( d, ORD( err.errorCode ), ErrorText, BufferSize );

+ 4 - 4
source/Generic.Win64.Kernel32.Mod

@@ -210,7 +210,7 @@ TYPE
 		Cr0NpxState*: LONGINT
 	END;
 
-	ContextPtr*= POINTER {UNSAFE} TO Context;
+	ContextPtr*= POINTER {UNSAFE,UNTRACED} TO Context;
 	(* 32 bit
 	Context* = RECORD
 		ContextFlags*: DWORD;
@@ -275,10 +275,10 @@ TYPE
 	END; 
 				
 	
-	ExceptionRecordPtr* = POINTER {UNSAFE} TO ExceptionRecord;
+	ExceptionRecordPtr* = POINTER {UNSAFE,UNTRACED} TO ExceptionRecord;
 	ExceptionRecord* = RECORD
 		ExceptionCode*, ExceptionFlags*: LONGINT;
-		nextExceptionRecord*: ExceptionRecordPtr;
+		nextExceptionRecord* {UNTRACED}: ExceptionRecordPtr;
 		ExceptionAddress*: ADDRESS;
 		NumberParameters*: LONGINT;
 		ExceptionInformation*: ARRAY ExceptionMaximumParameters OF LONGINT
@@ -291,7 +291,7 @@ TYPE
 																														   dispatch: LONGINT ): LONGINT;
 
 	ExceptionPointers* = RECORD
-		exception*: ExceptionRecordPtr;
+		exception* {UNTRACED}: ExceptionRecordPtr;
 		context*: ContextPtr;
 	END; 																														   
 

+ 18 - 18
source/Heaps.Mod

@@ -88,10 +88,10 @@ TYPE
 	END;
 
 	HeapBlock* = POINTER TO HeapBlockDesc;	(* base object of all heap blocks *)
-	HeapBlockU = POINTER {UNSAFE} TO HeapBlockDesc;	(* base object of all heap blocks *)
+	HeapBlockU = POINTER {UNSAFE,UNTRACED} TO HeapBlockDesc;	(* base object of all heap blocks *)
 	HeapBlockDesc* = RECORD
 		heapBlock {FICTIVE =HeapBlockOffset}: ADDRESS; 
-		typeDesc {FICTIVE =TypeDescOffset}: POINTER {UNSAFE} TO StaticTypeDesc; 
+		typeDesc {FICTIVE =TypeDescOffset}: POINTER {UNSAFE,UNTRACED} TO StaticTypeDesc; 
 		(* when this is changed --> change constant in Machine too and provide changes in FoxIntermediateBackend where noted *)
 		mark: LONGINT;
 		dataAdr-: ADDRESS;
@@ -114,7 +114,7 @@ TYPE
 	*)
 
 	FreeBlock* = POINTER TO FreeBlockDesc;
-	FreeBlockU = POINTER {UNSAFE} TO FreeBlockDesc;
+	FreeBlockU = POINTER {UNSAFE,UNTRACED} TO FreeBlockDesc;
 	FreeBlockDesc* = RECORD (HeapBlockDesc)
 		next: FreeBlock;
 	END;
@@ -124,12 +124,12 @@ TYPE
 	END;
 
 	RecordBlock* = POINTER TO RecordBlockDesc;
-	RecordBlockU = POINTER {UNSAFE} TO RecordBlockDesc;
+	RecordBlockU = POINTER {UNSAFE,UNTRACED} TO RecordBlockDesc;
 	RecordBlockDesc = RECORD  (HeapBlockDesc)
 	END;
 
 	ProtRecBlock* = POINTER TO ProtRecBlockDesc;
-	ProtRecBlockU = POINTER {UNSAFE} TO ProtRecBlockDesc;
+	ProtRecBlockU = POINTER {UNSAFE,UNTRACED} TO ProtRecBlockDesc;
 	ProtRecBlockDesc* = RECORD  (RecordBlockDesc)
 		count*: LONGINT;
 		locked*: BOOLEAN;
@@ -140,11 +140,11 @@ TYPE
 	END;
 
 	ArrayBlock* = POINTER TO ArrayBlockDesc;
-	ArrayBlockU = POINTER {UNSAFE} TO ArrayBlockDesc;
+	ArrayBlockU = POINTER {UNSAFE,UNTRACED} TO ArrayBlockDesc;
 	ArrayBlockDesc = RECORD  (HeapBlockDesc)
 	END;
 
-	TypeInfo*= POINTER{UNSAFE} TO TypeInfoDesc;
+	TypeInfo*= POINTER{UNSAFE,UNTRACED} TO TypeInfoDesc;
 	TypeInfoDesc = RECORD
 		descSize: SIZE;
 		sentinel: ADDRESS;	(* = MPO-4 *)
@@ -155,7 +155,7 @@ TYPE
 	END;
 
 	StaticTypeBlock*= POINTER TO StaticTypeDesc;
-	StaticTypeBlockU= POINTER {UNSAFE} TO StaticTypeDesc;
+	StaticTypeBlockU= POINTER {UNSAFE,UNTRACED} TO StaticTypeDesc;
 	StaticTypeDesc = RECORD
 		info {FICTIVE =TypeDescOffset}: TypeInfo;
 		recSize: SIZE;
@@ -164,18 +164,18 @@ TYPE
 
 	PointerOffsets = POINTER TO ARRAY OF SIZE;
 	
-	Block*= POINTER	{UNSAFE} TO RECORD
+	Block*= POINTER	{UNSAFE,UNTRACED} TO RECORD
 		heapBlock {FICTIVE =HeapBlockOffset}: HeapBlock; 
 		typeBlock {FICTIVE =TypeDescOffset}: StaticTypeBlock;
 	END;
 
-	DataBlockU = POINTER {UNSAFE} TO DataBlockDesc;
+	DataBlockU = POINTER {UNSAFE,UNTRACED} TO DataBlockDesc;
 	DataBlockDesc*= RECORD
-		heapBlock {FICTIVE =HeapBlockOffset}: POINTER {UNSAFE} TO HeapBlockDesc; 
-		typeDesc {FICTIVE =TypeDescOffset}: POINTER {UNSAFE} TO StaticTypeDesc;
+		heapBlock {FICTIVE =HeapBlockOffset}: POINTER {UNSAFE,UNTRACED} TO HeapBlockDesc; 
+		typeDesc {FICTIVE =TypeDescOffset}: POINTER {UNSAFE,UNTRACED} TO StaticTypeDesc;
 	END;
 	
-	ArrayDataBlockU = POINTER {UNSAFE} TO ArrayDataBlockDesc;
+	ArrayDataBlockU = POINTER {UNSAFE,UNTRACED} TO ArrayDataBlockDesc;
 	ArrayDataBlockDesc*= RECORD (DataBlockDesc)
 		numElems: SIZE;
 		current: ADDRESS; (* unused *)
@@ -448,8 +448,8 @@ VAR orgBlock: ADDRESS; staticTypeBlock {UNTRACED}: StaticTypeBlock;
 	orgHeapBlock {UNTRACED}: HeapBlock;
 	currentArrayElemAdr, lastArrayElemAdr: ADDRESS; i: LONGINT;
 	protected: ProtRecBlock;
-	b : POINTER {UNSAFE} TO RECORD p: ANY END;
-	meta: POINTER {UNSAFE} TO RECORD staticTypeBlock {FICTIVE=TypeDescOffset}: StaticTypeBlock; last, current, first: ADDRESS END;
+	b {UNTRACED}: POINTER {UNSAFE} TO RECORD p: ANY END;
+	meta {UNTRACED }: POINTER {UNSAFE} TO RECORD staticTypeBlock {FICTIVE=TypeDescOffset}: StaticTypeBlock; last, current, first: ADDRESS END;
 BEGIN{UNCHECKED} (* omit any range checks etc.*)
 	IF Stats THEN INC(Nmark) END;
 	Inspect(p,currentGeneration);
@@ -900,8 +900,8 @@ END CheckCandidates;
 PROCEDURE Candidate*(p: ADDRESS);
 VAR memBlock, memBlockX {UNTRACED}: Machine.MemoryBlock; 
 	tdAdr, heapBlockAdr: ADDRESS;
-	tdPtr: POINTER {UNSAFE} TO RECORD typeAdr: ADDRESS END;
-	hbPtr: POINTER {UNSAFE} TO RECORD heapBlock: HeapBlock END;
+	tdPtr{UNTRACED}: POINTER {UNSAFE} TO RECORD typeAdr: ADDRESS END;
+	hbPtr{UNTRACED}: POINTER {UNSAFE} TO RECORD heapBlock: HeapBlock END;
 	heapBlock {UNTRACED}: HeapBlock;
 BEGIN
 	IF p MOD SIZEOF(ADDRESS) # 0 THEN RETURN END; 
@@ -1542,7 +1542,7 @@ BEGIN
 END NewArr;
 
 TYPE
-UnsafeArray= POINTER {UNSAFE} TO UnsafeArrayDesc;
+UnsafeArray= POINTER {UNSAFE,UNTRACED} TO UnsafeArrayDesc;
 UnsafeArrayDesc = RECORD (ArrayDataBlockDesc)
 	len: ARRAY 8 OF SIZE;
 END;

+ 3 - 3
source/RTL8136.Mod

@@ -405,8 +405,8 @@ TYPE
 		dev: LinkDevice;
 		rdsBuf: ARRAY RxRingSize*SIZEOF(RxTxDescriptor)+255 OF CHAR;
 		tdsBuf: ARRAY TxRingSize*SIZEOF(RxTxDescriptor)+255 OF CHAR;
-		rds: ARRAY RxRingSize OF POINTER{UNSAFE} TO RxTxDescriptor;
-		tds: ARRAY TxRingSize OF POINTER{UNSAFE} TO RxTxDescriptor;
+		rds: ARRAY RxRingSize OF POINTER{UNSAFE, UNTRACED} TO RxTxDescriptor;
+		tds: ARRAY TxRingSize OF POINTER{UNSAFE, UNTRACED} TO RxTxDescriptor;
 		curRD, curTD: LONGINT;
 		firstRD, firstTD: LONGINT;
 		lastRD, lastTD: LONGINT;
@@ -3351,7 +3351,7 @@ VAR
 	PROCEDURE TestAlloc*;
 	VAR
 		addr, physAddr: ADDRESS;
-		dsc: ARRAY TxRingSize OF POINTER{UNSAFE} TO RxTxDescriptor; 
+		dsc: ARRAY TxRingSize OF POINTER{UNSAFE,UNTRACED} TO RxTxDescriptor; 
 		r: LONGINT;
 	BEGIN
 		addr := ADDRESSOF(buf[0]);

+ 1 - 1
source/Unix.Heaps.Mod

@@ -860,7 +860,7 @@ TYPE
 				RETURN size*staticElements;
 			END GetSize;
 			
-			PROCEDURE SetSizes(dest: UnsafeArray);
+			PROCEDURE SetSizes(dest {UNTRACED}: UnsafeArray);
 			VAR i: SIZE;
 			BEGIN
 				FOR i := 0 TO dim-1 DO

+ 1 - 1
source/Unix.StdIO.Mod

@@ -15,7 +15,7 @@ VAR
 PROCEDURE Args(): String;
 VAR size, pos: SIZE; i,j: LONGINT; str: String;
 	argc: LONGINT;
-	argv {UNTRACED}: POINTER {UNSAFE} TO ARRAY OF POINTER {UNSAFE} TO ARRAY OF CHAR;
+	argv {UNTRACED}: POINTER {UNSAFE} TO ARRAY OF POINTER {UNSAFE,UNTRACED} TO ARRAY OF CHAR;
 BEGIN
 	argc := Unix.argc;
 	argv := Unix.argv;