mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 19:12:25 +00:00
Remove GC blocking IF test, add abstract comment to each compiler mod.
This commit is contained in:
parent
63008f6d30
commit
c9b56ea10e
6 changed files with 37 additions and 28 deletions
|
|
@ -1,5 +1,5 @@
|
|||
(* Oberon Portable build parse tree (front end) *)
|
||||
MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
||||
(* build parse tree *)
|
||||
|
||||
IMPORT OPT, OPS, OPM, SYSTEM;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
(* OPP - Oberon Portable Parser (front end) *)
|
||||
MODULE OPP; (* NW, RC 6.3.89 / 10.2.94 *) (* object model 4.12.93 *)
|
||||
|
||||
IMPORT
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
(* Oberon Portable Scanner (front end) *)
|
||||
MODULE OPS; (* NW, RC 6.3.89 / 18.10.92 *) (* object model 3.6.92 *)
|
||||
|
||||
IMPORT OPM, SYSTEM;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
(* OPT - Oberon Portable Symbol Table (front end) *)
|
||||
MODULE OPT; (* NW, RC 6.3.89 / 23.1.92 *) (* object model 24.2.94 *)
|
||||
|
||||
(*
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
(* OPV - parse tree traverser (back end) *)
|
||||
MODULE OPV; (* J. Templ 16.2.95 / 3.7.96
|
||||
|
||||
26.7.2002 jt bug fix OPS.in Len: wrong result if called for fixed OPT.Array
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ MODULE Heap;
|
|||
(* finalization candidates *)
|
||||
fin: FinNode;
|
||||
|
||||
(* garbage collector locking *)
|
||||
(* garbage collector busy flag *)
|
||||
lockdepth: INTEGER;
|
||||
interrupted: BOOLEAN;
|
||||
|
||||
|
|
@ -549,6 +549,8 @@ MODULE Heap;
|
|||
END
|
||||
END MarkStack;
|
||||
|
||||
|
||||
|
||||
PROCEDURE GC*(markStack: BOOLEAN);
|
||||
VAR
|
||||
m: Module;
|
||||
|
|
@ -556,7 +558,6 @@ MODULE Heap;
|
|||
i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23: S.ADDRESS;
|
||||
cand: ARRAY 10000 OF S.ADDRESS;
|
||||
BEGIN
|
||||
IF (lockdepth = 0) OR (lockdepth = 1) & ~markStack THEN
|
||||
Lock();
|
||||
m := S.VAL(Module, modules);
|
||||
WHILE m # NIL DO
|
||||
|
|
@ -570,20 +571,24 @@ MODULE Heap;
|
|||
i0 := -100; i1 := -101; i2 := -102; i3 := -103; i4 := -104; i5 := -105; i6 := -106; i7 := -107;
|
||||
i8 := 1; i9 := 2; i10 := 3; i11 := 4; i12 := 5; i13 := 6; i14 := 7; i15 := 8;
|
||||
i16 := 9; i17 := 10; i18 := 11; i19 := 12; i20 := 13; i21 := 14; i22 := 15; i23 := 16;
|
||||
LOOP INC(i0, 1); INC(i1, 2); INC(i2, 3); INC(i3, 4); INC(i4, 5); INC(i5, 6); INC(i6, 7); INC(i7, 8);
|
||||
LOOP
|
||||
INC(i0, 1); INC(i1, 2); INC(i2, 3); INC(i3, 4); INC(i4, 5); INC(i5, 6); INC(i6, 7); INC(i7, 8);
|
||||
INC(i8, 9); INC(i9, 10); INC(i10, 11); INC(i11, 12); INC(i12, 13); INC(i13, 14); INC(i14, 15); INC(i15, 16);
|
||||
INC(i16, 17); INC(i17, 18); INC(i18, 19); INC(i19, 20); INC(i20, 21); INC(i21, 22); INC(i22, 23); INC(i23, 24);
|
||||
IF (i0 = -99) & (i15 = 24) THEN MarkStack(32, cand); EXIT END
|
||||
IF (i0 = -99) & (i15 = 24) THEN (* True at first iteration *)
|
||||
MarkStack(32, cand); EXIT
|
||||
END
|
||||
END;
|
||||
IF i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7 + i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15
|
||||
+ i16 + i17 + i18 + i19 + i20 + i21 + i22 + i23 > 10000 THEN RETURN (* use all variables *)
|
||||
IF i0 + i1 + i2 + i3 + i4 + i5 + i6 + i7 (* use all variables *)
|
||||
+ i8 + i9 + i10 + i11 + i12 + i13 + i14 + i15
|
||||
+ i16 + i17 + i18 + i19 + i20 + i21 + i22 + i23 > 10000 THEN (* Always false *)
|
||||
RETURN
|
||||
END;
|
||||
END;
|
||||
CheckFin;
|
||||
Scan;
|
||||
Finalize;
|
||||
Unlock()
|
||||
END
|
||||
END GC;
|
||||
|
||||
PROCEDURE RegisterFinalizer*(obj: S.PTR; finalize: Finalizer);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue