refactor: rename uCodeGen/uCodeGenQBE to blaise.codegen/blaise.codegen.qbe
Align the QBE backend unit names with the dotted naming convention already used by the native backend (blaise.codegen.native.*). uCodeGen.pas → blaise.codegen.pas uCodeGenQBE.pas → blaise.codegen.qbe.pas Updated all uses clauses (~70 test files, main compiler units), documentation references (README + 5 docs/*.adoc files), and comment references in runtime/stdlib.
This commit is contained in:
parent
8119634b0a
commit
bb2fe2da75
|
|
@ -133,7 +133,7 @@ project.xml Root aggregator (packaging=pom)
|
|||
├── compiler/ The compiler binary (packaging=application)
|
||||
│ ├── project.xml
|
||||
│ └── src/
|
||||
│ ├── main/pascal/ uLexer, uParser, uAST, uCodeGenQBE, blaise.codegen.native.*, ...
|
||||
│ ├── main/pascal/ uLexer, uParser, uAST, blaise.codegen.qbe, blaise.codegen.native.*, ...
|
||||
│ └── test/pascal/ Test suite (blaise.testing, compiled by Blaise)
|
||||
│
|
||||
├── runtime/ Always-linked runtime (packaging=library)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ program Blaise;
|
|||
|
||||
uses
|
||||
SysUtils, Classes, Process, contnrs,
|
||||
uLexer, uParser, uAST, uSemantic, uCodeGen, uCodeGenQBE,
|
||||
uLexer, uParser, uAST, uSemantic, blaise.codegen, blaise.codegen.qbe,
|
||||
blaise.codegen.target, blaise.codegen.native, uToolchain,
|
||||
uUnitLoader, uDebugOPDF, uUnitInterface, uSemanticExport, uSemanticImport,
|
||||
uUnitInterfaceIO, uIfaceObject, uASTDump,
|
||||
|
|
@ -966,7 +966,7 @@ begin
|
|||
explicit `CG := nil` here: the stage-1 release binary mis-compiles an
|
||||
explicit nil-assignment to an interface-typed global (emits a bare
|
||||
single-slot store against an undefined $CG symbol). That codegen gap
|
||||
is fixed in this tree (EmitAssign interface-nil case in uCodeGenQBE),
|
||||
is fixed in this tree (EmitAssign interface-nil case in blaise.codegen.qbe),
|
||||
but stage-1 predates the fix, so the driver must not rely on it. }
|
||||
|
||||
if OPDFEnabled then
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ unit blaise.codegen.native.backend;
|
|||
interface
|
||||
|
||||
uses
|
||||
SysUtils, uAST, uSymbolTable, uCodeGen, strutils, blaise.codegen.target;
|
||||
SysUtils, uAST, uSymbolTable, blaise.codegen, strutils, blaise.codegen.target;
|
||||
|
||||
type
|
||||
ENativeCodeGenError = class(Exception);
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ unit blaise.codegen.native;
|
|||
interface
|
||||
|
||||
uses
|
||||
SysUtils, uAST, uSymbolTable, uCodeGen,
|
||||
SysUtils, uAST, uSymbolTable, blaise.codegen,
|
||||
blaise.codegen.target, blaise.codegen.native.backend;
|
||||
|
||||
type
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@
|
|||
See LICENSE file in the project root for full license terms.
|
||||
}
|
||||
|
||||
unit uCodeGen;
|
||||
unit blaise.codegen;
|
||||
|
||||
{ Backend-neutral code-generator contract.
|
||||
|
||||
Both the QBE backend (uCodeGenQBE.TCodeGenQBE) and the native backend
|
||||
Both the QBE backend (blaise.codegen.qbe.TCodeGenQBE) and the native backend
|
||||
(blaise.codegen.native.TCodeGenNative) implement ICodeGen, so the
|
||||
driver in Blaise.pas runs one codegen sequence against the interface
|
||||
rather than branching per backend.
|
||||
|
|
@ -6,7 +6,7 @@
|
|||
See LICENSE file in the project root for full license terms.
|
||||
}
|
||||
|
||||
unit uCodeGenQBE;
|
||||
unit blaise.codegen.qbe;
|
||||
|
||||
{ QBE IR emitter for Blaise.
|
||||
WriteLn/Write are built-ins emitted as calls to _SysWriteStr/_SysWriteInt/
|
||||
|
|
@ -16,7 +16,7 @@ unit uCodeGenQBE;
|
|||
interface
|
||||
|
||||
uses
|
||||
SysUtils, StrUtils, Classes, uAST, uSymbolTable, uStrCompat, uCodeGen,
|
||||
SysUtils, StrUtils, Classes, uAST, uSymbolTable, uStrCompat, blaise.codegen,
|
||||
blaise.codegen.target;
|
||||
|
||||
// Raw byte copy used by TIRBuffer — maps to libc memcpy.
|
||||
|
|
@ -83,7 +83,7 @@ implementation
|
|||
per-class out-helpers.
|
||||
|
||||
Typeinfo and methods-table layout are documented in
|
||||
uCodeGenQBE.pas:EmitTypeInfoDefs.
|
||||
blaise.codegen.qbe.pas:EmitTypeInfoDefs.
|
||||
----------------------------------------------------------------------- }
|
||||
|
||||
function PublishedMethodCount(ATestClass: TTestCaseClass): Integer;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TARCTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, Process, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
function ProjectRootAttr: string;
|
||||
function RunCmdAttr(const AExe: string; const AArgs: array of string): Integer;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TBooleanOpsTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TCaseEnumTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TChainedFieldTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TClassTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TClassOfTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing,
|
||||
uLexer, uParser, uAST, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TCodeGenTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TCollectionTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TConstTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TControlTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TDynArrayTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ interface
|
|||
|
||||
uses
|
||||
classes, sysutils, process, contnrs, blaise.testing,
|
||||
uLexer, uParser, uAST, uSemantic, uCodeGenQBE, uUnitLoader,
|
||||
uCodeGen, blaise.codegen.target, blaise.codegen.native;
|
||||
uLexer, uParser, uAST, uSemantic, blaise.codegen.qbe, uUnitLoader,
|
||||
blaise.codegen, blaise.codegen.target, blaise.codegen.native;
|
||||
|
||||
type
|
||||
{ Code-generation backends an e2e test can run against. The native backend
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TExceptionTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TExternalTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TFlowJumpsTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TForInTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TForTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TFunctionTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TGenericConstraintTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TGenericDefaultsTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TGenericForInTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TGenericFuncTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TGenericIntfTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TGenericMethodImplTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TGenericRecordTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TGenericsTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing, cp.test.e2e.base,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
THighLowTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TIMapTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TInheritTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TInterfaceTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ unit cp.test.math;
|
|||
|
||||
{ IR-level tests for Math unit functions and math compiler builtins.
|
||||
|
||||
Builtins (handled in uSemantic + uCodeGenQBE, no RTL unit needed):
|
||||
Builtins (handled in uSemantic + blaise.codegen.qbe, no RTL unit needed):
|
||||
Abs, Sqrt, Ceil, Floor, Round, Trunc, Ln, Log2, Log10, Power,
|
||||
Sin, Cos, Tan, ArcTan, ArcTan2, IsNaN, IsInfinite.
|
||||
|
||||
|
|
@ -21,7 +21,7 @@ interface
|
|||
|
||||
uses
|
||||
SysUtils, Classes, contnrs, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE, uUnitLoader;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe, uUnitLoader;
|
||||
|
||||
type
|
||||
TMathTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TMethodTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, Contnrs, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe,
|
||||
uUnitLoader;
|
||||
|
||||
type
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TMultiWriteTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TOpenArrayTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TOverloadTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing, cp.test.e2e.base,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TPackedRecordTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TPCharTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TPointerTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TProcessBuiltinTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TProcFuncTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSemantic, uSymbolTable, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSemantic, uSymbolTable, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TProcTypesTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, Process, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
function ProjectRootOFO: string;
|
||||
function RunCmdOFO(const AExe: string; const AArgs: array of string): Integer;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TPropertyTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, Process, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
function ProjectRootRTTI: string;
|
||||
function RunCmd(const AExe: string; const AArgs: array of string): Integer;
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe,
|
||||
blaise.codegen.target;
|
||||
|
||||
type
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing, strutils,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TRecordTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TRepeatTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing, cp.test.e2e.base,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TSarTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TSelfHostingTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TSetTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing, cp.test.e2e.base,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TSizeOfTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing, cp.test.e2e.base,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TSmallIntWordTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TStaticArrayTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TStreamsTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TStringOpsTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ interface
|
|||
|
||||
uses
|
||||
SysUtils, Classes, contnrs, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE, uUnitLoader;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe, uUnitLoader;
|
||||
|
||||
type
|
||||
TStrUtilsTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TTDictionaryTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing,
|
||||
uLexer, uParser, uAST, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TThreadVarTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TTListTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TTOrderedDictionaryTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TTQueueTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TTSetTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TTStackTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TTypeTestTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ interface
|
|||
|
||||
uses
|
||||
blaise.testing, cp.test.e2e.base,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TUInt64Tests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE, uUnitLoader;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe, uUnitLoader;
|
||||
|
||||
type
|
||||
TUnitTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TVarParamTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TVTableTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ interface
|
|||
|
||||
uses
|
||||
Classes, SysUtils, blaise.testing,
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, uCodeGenQBE;
|
||||
uLexer, uParser, uAST, uSymbolTable, uSemantic, blaise.codegen.qbe;
|
||||
|
||||
type
|
||||
TWeakRefTests = class(TTestCase)
|
||||
|
|
|
|||
|
|
@ -307,7 +307,7 @@ Supported flags:
|
|||
Units: `uParser.pas`, `uAST.pas`.
|
||||
|
||||
. *QBE IR emitter* — traverse AST, emit QBE IR text. Link with `cc`.
|
||||
Unit: `uCodeGenQBE.pas`.
|
||||
Unit: `blaise.codegen.qbe.pas`.
|
||||
+
|
||||
*Phase 1 pre-work (before parser work begins):* Spend 2–3 weeks writing QBE IR
|
||||
snippets by hand targeting libc to build fluency. QBE variadic calls require
|
||||
|
|
@ -567,7 +567,7 @@ build, single combined QBE IR output, no `.ppu` cache.
|
|||
|
||||
*Milestone:* `pasbuild test -m blaise-compiler` passes with the compiler compiling
|
||||
its own multi-unit source (uLexer, uParser, uAST, uSymbolTable, uSemantic,
|
||||
uCodeGenQBE, uUnitLoader) via `uses` resolution, producing an identical binary.
|
||||
blaise.codegen.qbe, uUnitLoader) via `uses` resolution, producing an identical binary.
|
||||
Hand source retired.
|
||||
|
||||
=== Phase 5 — OPDF Integration (previously Phase 4)
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ in three places*.
|
|||
. The semantic pass that consumes it (`uSemantic.pas`).
|
||||
. The `.bif` serialiser and deserialiser (`uUnitInterfaceIO.pas`).
|
||||
|
||||
Codegen (`uCodeGenQBE.pas`) is a fourth
|
||||
Codegen (`blaise.codegen.qbe.pas`) is a fourth
|
||||
place, but only when the node carries runtime semantics. A
|
||||
type-system-only change (e.g. adding a marker attribute) may need no
|
||||
codegen work.
|
||||
|
|
@ -235,7 +235,7 @@ AnalyseWhenStmt(TWhenStmt(AStmt))`.
|
|||
|
||||
=== Step 4: Codegen (QBE Backend)
|
||||
|
||||
In `uCodeGenQBE.pas`, add `EmitWhenStmt`. Each branch becomes a guard /
|
||||
In `blaise.codegen.qbe.pas`, add `EmitWhenStmt`. Each branch becomes a guard /
|
||||
body / next-branch label triple, modelled on `EmitIfStmt`'s expansion.
|
||||
|
||||
[source,pascal]
|
||||
|
|
|
|||
|
|
@ -3033,7 +3033,7 @@ which naturally has a float subexpression and therefore type-checks.
|
|||
`boDiv`. `uSemantic.pas` (`AnalyseBinaryExpr`) gives `boSlash` a
|
||||
float result type unconditionally; `boDiv` retains the existing
|
||||
integer-promotion rules and now rejects float operands explicitly.
|
||||
`uCodeGenQBE.pas` lowers both `boSlash` and `boDiv` to QBE's `div`
|
||||
`blaise.codegen.qbe.pas` lowers both `boSlash` and `boDiv` to QBE's `div`
|
||||
instruction; the difference is whether the operands have already been
|
||||
promoted to a float type (`d`/`s`) on the float arithmetic path.
|
||||
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ Five categories accepted as "unmangled":
|
|||
The runtime is hand-written and has *hardcoded* references to specific
|
||||
symbol names that originate in these units. Concretely:
|
||||
|
||||
`uCodeGenQBE.pas` emits calls and references like:
|
||||
`blaise.codegen.qbe.pas` emits calls and references like:
|
||||
|
||||
* `$_StartUp` (program init, in `System` / `rtl.*`)
|
||||
* `$_SetArgs`
|
||||
|
|
@ -165,7 +165,7 @@ Two paths to fix this:
|
|||
. **Route everything through the symbol table** — every `$_Foo` in
|
||||
codegen becomes `RtlSym('_Foo')`, which consults a registry mapping
|
||||
logical names to mangled names. Cleaner long-term; mechanical refactor
|
||||
of ~113 call sites in `uCodeGenQBE.pas`. Documented as a follow-up
|
||||
of ~113 call sites in `blaise.codegen.qbe.pas`. Documented as a follow-up
|
||||
in `memory/project_unit_prefix_mangling.md`.
|
||||
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ To add `mynew_rtl_unit` to the allowlist:
|
|||
----
|
||||
if SameText(AUnitName, 'mynew_rtl_unit') then Exit; { add this line }
|
||||
----
|
||||
. In `uCodeGenQBE.pas`'s `ClassUnitPrefix`, mirror the same check.
|
||||
. In `blaise.codegen.qbe.pas`'s `ClassUnitPrefix`, mirror the same check.
|
||||
. Bump `COMPILER_ID` in `uCompilerId.pas` — the change affects which
|
||||
units emit prefixed symbols, so previously-built `.bif`s on disk
|
||||
become semantically incompatible.
|
||||
|
|
@ -320,7 +320,7 @@ prebuilt `.o`.
|
|||
=== Property accessors
|
||||
|
||||
Properties don't have their own symbols — they expand at call sites to
|
||||
calls into the read/write method. `uCodeGenQBE`'s property-access
|
||||
calls into the read/write method. `blaise.codegen.qbe`'s property-access
|
||||
emission inserts the prefix via `ClassUnitPrefix(FldAccess.PropOwnerType)`
|
||||
so `MyList.Strings[0]` compiles to a call like
|
||||
`$Classes_TStringList_GetStrings`.
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ dependencies.
|
|||
| blaise.testing
|
||||
| Parser, semantic analysis, and codegen logic. Feed source strings through
|
||||
the compiler pipeline and assert on generated QBE IR substrings.
|
||||
| Tests import compiler internals (`uParser`, `uSemantic`, `uCodeGenQBE`) and
|
||||
| Tests import compiler internals (`uParser`, `uSemantic`, `blaise.codegen.qbe`) and
|
||||
run in-process. Fast (~5 s for 1800+ tests).
|
||||
|
||||
| Compiler E2E tests
|
||||
|
|
@ -93,7 +93,7 @@ module for the following reasons:
|
|||
|
||||
Import dependencies::
|
||||
IR tests import compiler internals (`uLexer`, `uParser`, `uAST`,
|
||||
`uSymbolTable`, `uSemantic`, `uCodeGenQBE`, `uUnitLoader`). Moving them
|
||||
`uSymbolTable`, `uSemantic`, `blaise.codegen.qbe`, `uUnitLoader`). Moving them
|
||||
to `stdlib/` would create a circular build dependency: stdlib tests would
|
||||
depend on the compiler module, while the compiler module already depends on
|
||||
stdlib for its unit search path.
|
||||
|
|
|
|||
|
|
@ -692,7 +692,7 @@ end;
|
|||
{ _ClassCreate: runtime equivalent of the inline EmitConstructorCall
|
||||
lowering the codegen produces for the static 'TFoo.Create' form.
|
||||
Reads totalsize, fieldcleanup pointer, and vtable pointer from the
|
||||
expanded class typeinfo (see typeinfo layout in uCodeGenQBE.pas's
|
||||
expanded class typeinfo (see typeinfo layout in blaise.codegen.qbe.pas's
|
||||
EmitTypeInfoDefs). Allocates an instance, installs the vtable
|
||||
pointer at slot 0, and bumps the refcount once.
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ unit Math;
|
|||
// Provides numeric utilities for integer and floating-point types.
|
||||
//
|
||||
// The following are implemented as compiler builtins (in uSemantic.pas +
|
||||
// uCodeGenQBE.pas) and therefore do NOT appear in this unit's interface:
|
||||
// blaise.codegen.qbe.pas) and therefore do NOT appear in this unit's interface:
|
||||
// Abs, Sqrt, Ceil, Floor, Round, Trunc, Ln, Log2, Log10, Power,
|
||||
// Sin, Cos, Tan, ArcTan, ArcTan2, IsNaN, IsInfinite.
|
||||
//
|
||||
|
|
|
|||
Loading…
Reference in a new issue