|
@@ -1,5 +1,5 @@
|
|
|
MODULE FoxIntermediateBackend;
|
|
|
- IMPORT Basic := FoxBasic, SyntaxTree := FoxSyntaxTree, SemanticChecker := FoxSemanticChecker, Backend := FoxBackend, Global := FoxGlobal, Scanner := FoxScanner, IntermediateCode := FoxIntermediateCode, Sections := FoxSections, BinaryCode := FoxBinaryCode, Printout := FoxPrintout, SYSTEM, Diagnostics, Strings, Options, Streams, Compiler, Formats := FoxFormats, SymbolFileFormat := FoxTextualSymbolFile, D := Debugging, FingerPrinter := FoxFingerPrinter, StringPool, CRC, Kernel;
|
|
|
+ IMPORT Basic := FoxBasic, SyntaxTree := FoxSyntaxTree, SemanticChecker := FoxSemanticChecker, Backend := FoxBackend, Global := FoxGlobal, Scanner := FoxScanner, IntermediateCode := FoxIntermediateCode, Sections := FoxSections, BinaryCode := FoxBinaryCode, Printout := FoxPrintout, SYSTEM, Diagnostics, Strings, Options, Streams, Compiler, Formats := FoxFormats, SymbolFileFormat := FoxTextualSymbolFile, D := Debugging, FingerPrinter := FoxFingerPrinter, StringPool, CRC;
|
|
|
CONST
|
|
|
ModeUndefined = 0;
|
|
|
ModeReference = 1;
|
|
@@ -476,7 +476,7 @@ TYPE
|
|
|
PROCEDURE ^ VisitProcedureCallStatement*(x: SyntaxTree.ProcedureCallStatement);
|
|
|
PROCEDURE ^ AssignMathArray(left, right: SyntaxTree.Expression);
|
|
|
PROCEDURE ^ ModifyAssignments(CONST value: IntermediateCode.Operand);
|
|
|
- PROCEDURE ^ CopySize(left: SyntaxTree.Expression): IntermediateCode.Operand;
|
|
|
+ PROCEDURE ^ CopySize(left: SyntaxTree.Expression; tag: IntermediateCode.Operand): IntermediateCode.Operand;
|
|
|
PROCEDURE ^ Assign(left, right: SyntaxTree.Expression);
|
|
|
PROCEDURE ^ VisitAssignment*(x: SyntaxTree.Assignment);
|
|
|
PROCEDURE ^ EmitCooperativeSwitch;
|
|
@@ -597,7 +597,7 @@ TYPE
|
|
|
preregisterStatic-: BOOLEAN;
|
|
|
dump-: Basic.Writer;
|
|
|
cellsAreObjects: BOOLEAN;
|
|
|
- preciseGC: BOOLEAN;
|
|
|
+ preciseGC, writeBarriers: BOOLEAN;
|
|
|
|
|
|
PROCEDURE ^ & InitIntermediateBackend*;
|
|
|
PROCEDURE ^ GenerateIntermediate*(x: SyntaxTree.Module; supportedInstruction: SupportedInstructionProcedure; supportedImmediate: SupportedImmediateProcedure): Sections.Module;
|