2
0
Эх сурвалжийг харах

Fixed some obviously invalid explicit address conversions

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7841 8c9fc860-2736-0410-a75d-ab315db34111
negelef 7 жил өмнө
parent
commit
8f92661c36

+ 1 - 1
source/I386.Oberon.Bitmaps.Mod

@@ -314,7 +314,7 @@ END ReplPattern;
 
 
 PROCEDURE DisplayBlock*(B: Bitmap; SX, SY, W, H, DX, DY, mode: INTEGER; VAR colortable: ARRAY OF LONGINT (* fof *));
 PROCEDURE DisplayBlock*(B: Bitmap; SX, SY, W, H, DX, DY, mode: INTEGER; VAR colortable: ARRAY OF LONGINT (* fof *));
 BEGIN
 BEGIN
-	Display.DisplayBlock(SYSTEM.VAL(LONGINT, B), SX, SY, W, H, DX, DY, mode,colortable);
+	Display.DisplayBlock(B, SX, SY, W, H, DX, DY, mode,colortable);
 END DisplayBlock;
 END DisplayBlock;
 
 
 PROCEDURE GetPix*(VAR addr: ADDRESS; VAR buf: SYSTEM.BYTE; depth: INTEGER);
 PROCEDURE GetPix*(VAR addr: ADDRESS; VAR buf: SYSTEM.BYTE; depth: INTEGER);

+ 1 - 1
source/Oberon.Kernel.Mod

@@ -359,7 +359,7 @@ BEGIN
 		Traps.Show(p, int, exc, TRUE);
 		Traps.Show(p, int, exc, TRUE);
 		INCL(int.FLAGS, Machine.IFBit);	(* enable interrupts on return *)
 		INCL(int.FLAGS, Machine.IFBit);	(* enable interrupts on return *)
 		int.EBP := 0; int.ESP := p.restartSP;	(* reset stack *)
 		int.EBP := 0; int.ESP := p.restartSP;	(* reset stack *)
-		proc := TerminateInLock; int.PC := SYSTEM.VAL(LONGINT, proc);	(* terminate *)
+		proc := TerminateInLock; int.PC := SYSTEM.VAL(ADDRESS, proc);	(* terminate *)
 		return := TRUE	(* return to TerminateInLock procedure at user level *)
 		return := TRUE	(* return to TerminateInLock procedure at user level *)
 	ELSE
 	ELSE
 		lockedBy := NIL; level := 0	(* Oberon.Loop will re-acquire lock *)
 		lockedBy := NIL; level := 0	(* Oberon.Loop will re-acquire lock *)

+ 1 - 1
source/Oberon.OPT.Mod

@@ -601,7 +601,7 @@ VAR
 	BEGIN
 	BEGIN
 		topScope := universe;  OpenScope( 0, NIL );  nofmod := 1;  SYSimported := FALSE;  impSelf := FALSE;  sfpresent := TRUE;
 		topScope := universe;  OpenScope( 0, NIL );  nofmod := 1;  SYSimported := FALSE;  impSelf := FALSE;  sfpresent := TRUE;
 		newSF := (OPM.newsf IN OPM.parserOptions);  extSF := newSF OR (OPM.extsf IN OPM.parserOptions);
 		newSF := (OPM.newsf IN OPM.parserOptions);  extSF := newSF OR (OPM.extsf IN OPM.parserOptions);
-		modules[0] := NewMod();  SYSTEM.MOVE( SYSTEM.VAL( LONGINT, topScope ), SYSTEM.VAL( LONGINT, modules[0] ), SIZEOF( ObjDesc ) );
+		modules[0] := NewMod();  SYSTEM.MOVE( SYSTEM.VAL( ADDRESS, topScope ), SYSTEM.VAL( ADDRESS, modules[0] ), SIZEOF( ObjDesc ) );
 		modules[0].name := name;  topScope := modules[0];
 		modules[0].name := name;  topScope := modules[0];
 	END Init;
 	END Init;
 
 

+ 7 - 7
source/Oberon.System.Mod

@@ -332,17 +332,17 @@ BEGIN
 END WriteK;
 END WriteK;
 
 
 PROCEDURE ShowModules*;
 PROCEDURE ShowModules*;
-VAR T: Texts.Text; M: Modules.Module; size, n, t, tag: LONGINT;
+VAR T: Texts.Text; M: Modules.Module; n, t: LONGINT; size: SIZE; tag: ADDRESS;
 BEGIN
 BEGIN
 	T := TextFrames.Text("");
 	T := TextFrames.Text("");
 	M := AosModules.root; n := 0; t := 0;
 	M := AosModules.root; n := 0; t := 0;
 	WHILE M # NIL DO
 	WHILE M # NIL DO
-		SYSTEM.GET(SYSTEM.VAL(LONGINT, M.code)-4, tag);	(* indirect tag *)
+		SYSTEM.GET(SYSTEM.VAL(ADDRESS, M.code)- SIZEOF (ADDRESS), tag);	(* indirect tag *)
 		SYSTEM.GET(tag, size);
 		SYSTEM.GET(tag, size);
-		Texts.WriteString(W, M.name); Texts.WriteInt(W, size, 8);
+		Texts.WriteString(W, M.name); Texts.WriteInt(W, LONGINT (size), 8);
 		Texts.WriteInt(W, M.refcnt, 4);
 		Texts.WriteInt(W, M.refcnt, 4);
 		Texts.WriteLn(W); M := M.next;
 		Texts.WriteLn(W); M := M.next;
-		INC(n); INC(t, size)
+		INC(n); INC(t, LONGINT (size))
 	END;
 	END;
 	IF n > 1 THEN
 	IF n > 1 THEN
 		Texts.WriteLn(W); Texts.WriteInt(W, n, 1); Texts.WriteString(W, " modules use ");
 		Texts.WriteLn(W); Texts.WriteInt(W, n, 1); Texts.WriteString(W, " modules use ");
@@ -877,13 +877,13 @@ BEGIN
 END ShowCommands;
 END ShowCommands;
 
 
 PROCEDURE ShowTasks*;
 PROCEDURE ShowTasks*;
-VAR T: Texts.Text;  n: Oberon.Task;  ofs, t: LONGINT;  m: Modules.Module;
+VAR T: Texts.Text;  n: Oberon.Task;  ofs: ADDRESS; t: LONGINT;  m: Modules.Module;
 BEGIN
 BEGIN
 	n := Oberon.NextTask;  t := Input.Time();
 	n := Oberon.NextTask;  t := Input.Time();
 	REPEAT
 	REPEAT
-		ofs := SYSTEM.VAL(LONGINT, n.handle);  m := AosModules.ThisModuleByAdr(ofs);
+		ofs := SYSTEM.VAL(ADDRESS, n.handle);  m := AosModules.ThisModuleByAdr(ofs);
 		Texts.WriteString(W, m.name);  Texts.WriteString(W, "  PC = ");
 		Texts.WriteString(W, m.name);  Texts.WriteString(W, "  PC = ");
-		Texts.WriteInt(W, ofs-LONGINT(ADDRESSOF(m.code[0])), 1);
+		Texts.WriteInt(W, LONGINT(ofs-ADDRESSOF(m.code[0])), 1);
 		IF n.safe THEN Texts.WriteString(W, "  safe  ")
 		IF n.safe THEN Texts.WriteString(W, "  safe  ")
 		ELSE Texts.WriteString(W, "  unsafe  ")
 		ELSE Texts.WriteString(W, "  unsafe  ")
 		END;
 		END;