|
@@ -98,8 +98,27 @@ PROCEDURE CheckAssignmentCompat(dst: ADDRESS); FORWARD;
|
|
|
|
|
|
|
|
(* FIXME-NYC stubs (signatures per call sites; bodies TBD by MCD audit;
|
|
(* FIXME-NYC stubs (signatures per call sites; bodies TBD by MCD audit;
|
|
|
these 6 may merge with PushExprDesc/PopExprDesc/etc. once mapping lands). *)
|
|
these 6 may merge with PushExprDesc/PopExprDesc/etc. once mapping lands). *)
|
|
|
|
|
+(* proc2 @0172 — ~PushOperand: emit descriptor as code operand. *)
|
|
|
PROCEDURE PushOperand(d: HeadPtr);
|
|
PROCEDURE PushOperand(d: HeadPtr);
|
|
|
-BEGIN HALT; END PushOperand;
|
|
|
|
|
|
|
+BEGIN
|
|
|
|
|
+ IF d^.mode = 0 THEN
|
|
|
|
|
+ IF d^.typ^.w4 >= 7 THEN
|
|
|
|
|
+ IF RecordPtr(d^.typ) = Compiler.charArrayDesc THEN
|
|
|
|
|
+ CodeGen.QueueLongConst(0, d^.lv);
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ CodeGen.QueueLongConst(ORD(RecordPtr(d^.typ) = Compiler.LongrealType) + 2, d^.lv);
|
|
|
|
|
+ END;
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ CodeGen.QueueConst(CARDINAL(d^.value));
|
|
|
|
|
+ END;
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ IF d^.typ^.w4 > 9 THEN NormalizeOperand(d);
|
|
|
|
|
+ ELSE
|
|
|
|
|
+ CodeGen.SetPendingOp((CARDINAL(d^.typ^.w3) DIV 2) - ORD(RecordPtr(d^.typ) = Compiler.LongrealType),
|
|
|
|
|
+ d^.kind, CARDINAL(d^.value), d^.extra);
|
|
|
|
|
+ END;
|
|
|
|
|
+ END;
|
|
|
|
|
+END PushOperand;
|
|
|
PROCEDURE PopOperand(d: HeadPtr);
|
|
PROCEDURE PopOperand(d: HeadPtr);
|
|
|
BEGIN HALT; END PopOperand;
|
|
BEGIN HALT; END PopOperand;
|
|
|
(* proc25 @000c — option-12 guard. *)
|
|
(* proc25 @000c — option-12 guard. *)
|