|
|
@@ -251,28 +251,28 @@ END CheckAndStore;
|
|
|
PROCEDURE PushExprDesc(dst: HeadPtr; src: DescPtr);
|
|
|
VAR aligned: CARDINAL; (* local word-2 *)
|
|
|
BEGIN
|
|
|
- (*{004a}*) (* aligned := (src^.extra + 1) DIV 2 * 2 *)
|
|
|
+ (*{02a2}*) (* aligned := (src^.extra + 1) DIV 2 * 2 *)
|
|
|
aligned := (src^.extra + 1) DIV 2 * 2;
|
|
|
- (*{0054}*) (* if temp mark held, reserve space, check against SymTab pool *)
|
|
|
+ (*{02ac}*) (* if temp mark held, give back space, floor-check 81 *)
|
|
|
IF spillFlag <> 0 THEN
|
|
|
- DEC(spillTop, aligned);
|
|
|
+ spillTop := spillTop - aligned;
|
|
|
IF spillTop < SymTab.stringPoolPtr THEN
|
|
|
- Errors.ReportError(81);
|
|
|
+ CentralError(spillTop >= 384, 81);
|
|
|
+ SymTab.stringPoolPtr := spillTop;
|
|
|
END;
|
|
|
- spillTop := SymTab.stringPoolPtr; (* sync mark: 006a..006b *)
|
|
|
END;
|
|
|
- (*{006d}*) (* init new descriptor *)
|
|
|
+ (*{02c5}*) (* init new descriptor *)
|
|
|
dst^.mode := 1;
|
|
|
- IF spillFlag = 0 THEN dst^.kind := 0 ELSE dst^.kind := dst^.kind END;
|
|
|
+ dst^.kind := ORD(spillFlag = 0);
|
|
|
dst^.extra := spillTop;
|
|
|
- dst^.typ := src^.typ;
|
|
|
- (*{007e}*) (* if fresh mark, claim space, overflow check 83 *)
|
|
|
+ dst^.typ := NodePtr(src);
|
|
|
+ (*{02d2}*) (* if fresh mark, claim space, ceiling-check 83 *)
|
|
|
IF spillFlag = 0 THEN
|
|
|
- INC(spillTop, aligned);
|
|
|
+ spillTop := spillTop + aligned;
|
|
|
IF spillTop > SymTab.stringPoolPtr THEN
|
|
|
- Errors.ReportError(83);
|
|
|
+ CentralError(spillTop <= 510, 83);
|
|
|
+ SymTab.stringPoolPtr := spillTop;
|
|
|
END;
|
|
|
- spillTop := SymTab.stringPoolPtr;
|
|
|
END;
|
|
|
END PushExprDesc;
|
|
|
|