From 1fa3d8bbbfb1f1305ba6b1281538271ed27ed1fa Mon Sep 17 00:00:00 2001 From: Jesper Gravgaard Date: Tue, 6 Mar 2018 20:54:49 +0100 Subject: [PATCH] Moved statements, symbols and values into packages --- .../java/dk/camelot64/kickc/Compiler.java | 2 + .../camelot64/kickc/fragment/AsmFormat.java | 8 ++- .../kickc/fragment/AsmFragmentInstance.java | 8 +++ .../fragment/AsmFragmentInstanceSpec.java | 21 +++++-- .../kickc/fragment/AsmFragmentTemplate.java | 7 +++ .../dk/camelot64/kickc/model/CallGraph.java | 3 + .../kickc/model/ConstantValueCalculator.java | 63 ++++++++++--------- .../kickc/model/ControlFlowBlock.java | 8 +++ .../kickc/model/ControlFlowGraph.java | 7 +++ .../model/ControlFlowGraphBaseVisitor.java | 2 + .../model/ControlFlowGraphCopyVisitor.java | 5 ++ .../kickc/model/DominatorsBlock.java | 2 + .../kickc/model/DominatorsGraph.java | 2 + .../dk/camelot64/kickc/model/LiveRange.java | 2 + .../model/LiveRangeEquivalenceClass.java | 2 + .../model/LiveRangeEquivalenceClassSet.java | 3 + .../kickc/model/LiveRangeVariables.java | 3 + .../model/LiveRangeVariablesEffective.java | 7 +++ .../dk/camelot64/kickc/model/NaturalLoop.java | 2 + .../camelot64/kickc/model/NaturalLoopSet.java | 2 + .../camelot64/kickc/model/PhiTransitions.java | 6 ++ .../kickc/model/ProcedureModifiedVars.java | 3 + .../dk/camelot64/kickc/model/Program.java | 2 + .../kickc/model/RegisterCombination.java | 3 + .../kickc/model/RegisterUpliftProgram.java | 2 + .../kickc/model/RegisterUpliftScope.java | 1 + .../dk/camelot64/kickc/model/Registers.java | 3 + .../kickc/model/StatementSequence.java | 5 ++ .../dk/camelot64/kickc/model/SymbolInfos.java | 5 ++ .../kickc/model/VariableReferenceInfos.java | 5 ++ .../kickc/model/VariableRegisterWeights.java | 2 + .../kickc/model/operators/Operators.java | 4 +- .../model/{ => statements}/Statement.java | 4 +- .../model/{ => statements}/StatementAsm.java | 3 +- .../{ => statements}/StatementAssignment.java | 6 +- .../model/{ => statements}/StatementBase.java | 8 ++- .../model/{ => statements}/StatementCall.java | 7 ++- .../StatementConditionalJump.java | 5 +- .../{ => statements}/StatementInfos.java | 7 ++- .../model/{ => statements}/StatementJump.java | 5 +- .../{ => statements}/StatementLValue.java | 4 +- .../{ => statements}/StatementLabel.java | 5 +- .../{ => statements}/StatementPhiBlock.java | 7 ++- .../StatementProcedureBegin.java | 5 +- .../StatementProcedureEnd.java | 5 +- .../{ => statements}/StatementReturn.java | 5 +- .../model/{ => symbols}/ConstantVar.java | 7 ++- .../kickc/model/{ => symbols}/Label.java | 6 +- .../kickc/model/{ => symbols}/Procedure.java | 7 ++- .../model/{ => symbols}/ProgramScope.java | 6 +- .../kickc/model/{ => symbols}/Scope.java | 6 +- .../kickc/model/{ => symbols}/Symbol.java | 6 +- .../model/{ => symbols}/SymbolVariable.java | 6 +- .../kickc/model/{ => symbols}/Variable.java | 6 +- .../{ => symbols}/VariableIntermediate.java | 4 +- .../{ => symbols}/VariableUnversioned.java | 4 +- .../model/{ => symbols}/VariableVersion.java | 4 +- .../kickc/model/{ => types}/SymbolType.java | 2 +- .../model/{ => types}/SymbolTypeArray.java | 2 +- .../model/{ => types}/SymbolTypeBasic.java | 2 +- .../{ => types}/SymbolTypeInference.java | 8 ++- .../model/{ => types}/SymbolTypeInline.java | 2 +- .../model/{ => types}/SymbolTypeInteger.java | 2 +- .../model/{ => types}/SymbolTypePointer.java | 2 +- .../{ => types}/SymbolTypeProcedure.java | 2 +- .../model/{ => types}/SymbolTypeProgram.java | 2 +- .../kickc/model/{ => values}/CastValue.java | 5 +- .../{ => values}/ConstantArrayFilled.java | 7 ++- .../model/{ => values}/ConstantArrayList.java | 7 ++- .../model/{ => values}/ConstantBinary.java | 6 +- .../model/{ => values}/ConstantBool.java | 13 +++- .../model/{ => values}/ConstantChar.java | 9 ++- .../model/{ => values}/ConstantDouble.java | 11 +++- .../model/{ => values}/ConstantInteger.java | 15 +++-- .../kickc/model/values/ConstantLiteral.java | 8 +++ .../kickc/model/{ => values}/ConstantRef.java | 6 +- .../model/{ => values}/ConstantString.java | 9 ++- .../model/{ => values}/ConstantUnary.java | 6 +- .../model/{ => values}/ConstantValue.java | 5 +- .../{ => values}/ConstantVarPointer.java | 8 ++- .../kickc/model/{ => values}/LValue.java | 4 +- .../kickc/model/{ => values}/LabelRef.java | 4 +- .../{ => values}/LvalueIntermediate.java | 4 +- .../{ => values}/PointerDereference.java | 2 +- .../PointerDereferenceIndexed.java | 4 +- .../PointerDereferenceSimple.java | 4 +- .../model/{ => values}/ProcedureRef.java | 2 +- .../kickc/model/{ => values}/RValue.java | 2 +- .../kickc/model/{ => values}/ScopeRef.java | 4 +- .../kickc/model/{ => values}/SymbolRef.java | 4 +- .../kickc/model/{ => values}/Value.java | 4 +- .../kickc/model/{ => values}/ValueList.java | 4 +- .../kickc/model/{ => values}/VariableRef.java | 4 +- .../camelot64/kickc/passes/AliasReplacer.java | 2 + .../passes/ParseTreeConstantEvaluator.java | 16 ++--- .../Pass0GenerateStatementSequence.java | 18 ++++-- .../kickc/passes/Pass1AddTypePromotions.java | 6 ++ .../kickc/passes/Pass1AssertArrayLengths.java | 5 ++ .../Pass1AssertNoLValueIntermediate.java | 6 ++ .../kickc/passes/Pass1AssertReturn.java | 8 +++ .../kickc/passes/Pass1AssertUsedVars.java | 7 +++ .../dk/camelot64/kickc/passes/Pass1Base.java | 2 +- .../passes/Pass1EliminateEmptyBlocks.java | 4 ++ .../Pass1EliminateUncalledProcedures.java | 4 ++ .../passes/Pass1ExtractInlineStrings.java | 7 +++ .../kickc/passes/Pass1FixLValuesLoHi.java | 10 +++ .../passes/Pass1GenerateControlFlowGraph.java | 6 ++ ...ss1GenerateSingleStaticAssignmentForm.java | 9 +++ .../passes/Pass1ModifiedVarsAnalysis.java | 8 +++ .../passes/Pass1ProcedureCallParameters.java | 9 +++ .../Pass1ProcedureCallsReturnValue.java | 5 ++ .../kickc/passes/Pass1TypeInference.java | 6 ++ .../kickc/passes/Pass2AliasElimination.java | 6 ++ .../kickc/passes/Pass2AssertBlocks.java | 7 +++ .../passes/Pass2AssertNoCallLvalues.java | 2 +- .../passes/Pass2AssertNoCallParameters.java | 4 +- .../kickc/passes/Pass2AssertNoLabels.java | 2 +- .../kickc/passes/Pass2AssertNoProcs.java | 4 +- .../passes/Pass2AssertNoReturnValues.java | 2 +- .../passes/Pass2AssertSingleAssignment.java | 5 ++ .../kickc/passes/Pass2AssertSymbols.java | 3 + .../kickc/passes/Pass2AssertTypeMatch.java | 5 ++ .../dk/camelot64/kickc/passes/Pass2Base.java | 2 +- .../Pass2ConditionalJumpSimplification.java | 6 ++ .../Pass2ConstantAdditionElimination.java | 4 ++ .../passes/Pass2ConstantIdentification.java | 10 +++ .../kickc/passes/Pass2ConstantInlining.java | 6 ++ .../kickc/passes/Pass2CullEmptyBlocks.java | 4 ++ .../passes/Pass2FixInlineConstructors.java | 10 +++ .../kickc/passes/Pass2NopCastElimination.java | 9 +++ .../passes/Pass2RedundantPhiElimination.java | 4 ++ .../kickc/passes/Pass2SelfPhiElimination.java | 2 +- .../kickc/passes/Pass2SsaAssertion.java | 2 +- .../kickc/passes/Pass2SsaOptimization.java | 3 + .../passes/Pass2UnaryNotSimplification.java | 3 + .../passes/Pass3AddNopBeforeCallOns.java | 3 + .../kickc/passes/Pass3AssertNoValueLists.java | 4 +- .../passes/Pass3BlockSequencePlanner.java | 4 +- .../kickc/passes/Pass3CallGraphAnalysis.java | 7 +++ .../kickc/passes/Pass3DominatorsAnalysis.java | 1 + .../kickc/passes/Pass3LiveRangesAnalysis.java | 7 +++ .../Pass3LiveRangesEffectiveAnalysis.java | 8 +++ .../kickc/passes/Pass3LoopAnalysis.java | 1 + .../kickc/passes/Pass3LoopDepthAnalysis.java | 1 + .../kickc/passes/Pass3PhiLifting.java | 7 +++ .../kickc/passes/Pass3PhiMemCoalesce.java | 4 ++ .../kickc/passes/Pass3StatementInfos.java | 3 + .../kickc/passes/Pass3SymbolInfos.java | 4 ++ .../Pass3VariableRegisterWeightAnalysis.java | 6 ++ .../kickc/passes/Pass4AssertNoCpuClobber.java | 4 ++ .../kickc/passes/Pass4CodeGeneration.java | 9 +++ ...s4LiveRangeEquivalenceClassesFinalize.java | 3 + .../Pass4RegisterUpliftCombinations.java | 6 +- ...ss4RegisterUpliftPotentialAluAnalysis.java | 3 + ...ass4RegisterUpliftPotentialInitialize.java | 4 ++ ...gisterUpliftPotentialRegisterAnalysis.java | 5 ++ .../passes/Pass4RegisterUpliftRemains.java | 2 + .../Pass4RegisterUpliftScopeAnalysis.java | 3 + .../passes/Pass4RegisterUpliftStatic.java | 3 +- .../kickc/passes/Pass4RegistersFinalize.java | 6 ++ .../kickc/passes/Pass4ZeroPageCoalesce.java | 1 + .../Pass4ZeroPageCoalesceAssignment.java | 2 + .../passes/Pass5UnusedLabelElimination.java | 4 +- .../passes/PassNEliminateUnusedVars.java | 7 +++ .../kickc/passes/PassNStatementIndices.java | 2 +- .../passes/PassNVariableReferenceInfos.java | 3 + .../camelot64/kickc/passes/ValueReplacer.java | 2 + 167 files changed, 754 insertions(+), 141 deletions(-) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/Statement.java (83%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementAsm.java (89%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementAssignment.java (93%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementBase.java (90%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementCall.java (94%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementConditionalJump.java (94%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementInfos.java (88%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementJump.java (84%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementLValue.java (71%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementLabel.java (78%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementPhiBlock.java (97%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementProcedureBegin.java (84%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementProcedureEnd.java (79%) rename src/main/java/dk/camelot64/kickc/model/{ => statements}/StatementReturn.java (89%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/ConstantVar.java (85%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/Label.java (91%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/Procedure.java (93%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/ProgramScope.java (87%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/Scope.java (98%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/Symbol.java (58%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/SymbolVariable.java (96%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/Variable.java (86%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/VariableIntermediate.java (75%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/VariableUnversioned.java (89%) rename src/main/java/dk/camelot64/kickc/model/{ => symbols}/VariableVersion.java (94%) rename src/main/java/dk/camelot64/kickc/model/{ => types}/SymbolType.java (99%) rename src/main/java/dk/camelot64/kickc/model/{ => types}/SymbolTypeArray.java (97%) rename src/main/java/dk/camelot64/kickc/model/{ => types}/SymbolTypeBasic.java (95%) rename src/main/java/dk/camelot64/kickc/model/{ => types}/SymbolTypeInference.java (98%) rename src/main/java/dk/camelot64/kickc/model/{ => types}/SymbolTypeInline.java (98%) rename src/main/java/dk/camelot64/kickc/model/{ => types}/SymbolTypeInteger.java (94%) rename src/main/java/dk/camelot64/kickc/model/{ => types}/SymbolTypePointer.java (96%) rename src/main/java/dk/camelot64/kickc/model/{ => types}/SymbolTypeProcedure.java (92%) rename src/main/java/dk/camelot64/kickc/model/{ => types}/SymbolTypeProgram.java (91%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/CastValue.java (87%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantArrayFilled.java (79%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantArrayList.java (83%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantBinary.java (82%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantBool.java (64%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantChar.java (70%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantDouble.java (67%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantInteger.java (76%) create mode 100644 src/main/java/dk/camelot64/kickc/model/values/ConstantLiteral.java rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantRef.java (66%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantString.java (69%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantUnary.java (85%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantValue.java (55%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ConstantVarPointer.java (71%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/LValue.java (85%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/LabelRef.java (70%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/LvalueIntermediate.java (88%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/PointerDereference.java (78%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/PointerDereferenceIndexed.java (90%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/PointerDereferenceSimple.java (87%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ProcedureRef.java (93%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/RValue.java (75%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ScopeRef.java (78%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/SymbolRef.java (96%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/Value.java (56%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/ValueList.java (91%) rename src/main/java/dk/camelot64/kickc/model/{ => values}/VariableRef.java (75%) diff --git a/src/main/java/dk/camelot64/kickc/Compiler.java b/src/main/java/dk/camelot64/kickc/Compiler.java index a8f38b16c..198108b40 100644 --- a/src/main/java/dk/camelot64/kickc/Compiler.java +++ b/src/main/java/dk/camelot64/kickc/Compiler.java @@ -1,6 +1,8 @@ package dk.camelot64.kickc; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.symbols.Variable; import dk.camelot64.kickc.parser.KickCLexer; import dk.camelot64.kickc.parser.KickCParser; import dk.camelot64.kickc.passes.*; diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFormat.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFormat.java index 1e0aa7a07..a42d039fe 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFormat.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFormat.java @@ -3,6 +3,12 @@ package dk.camelot64.kickc.fragment; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeInference; +import dk.camelot64.kickc.model.types.SymbolTypePointer; /** Formatting of numbers, constants, names and more for KickAssembler */ public class AsmFormat { @@ -21,7 +27,7 @@ public class AsmFormat { String asmName = constantVar.getAsmName() == null ? constantVar.getLocalName() : constantVar.getAsmName(); return getAsmParamName(constantVar.getScope().getRef(), asmName, codeScope); } else if(value instanceof ConstantInteger) { - return getAsmNumber(((ConstantInteger) value).getNumber()); + return getAsmNumber(((ConstantInteger) value).getValue()); } else if(value instanceof ConstantChar) { return "'" + ((ConstantChar) value).getValue() + "'"; } else if(value instanceof ConstantString) { diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java index a77e677cd..9a34ffe2a 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstance.java @@ -3,6 +3,14 @@ package dk.camelot64.kickc.fragment; import dk.camelot64.kickc.NumberParser; import dk.camelot64.kickc.asm.*; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.ConstantInteger; +import dk.camelot64.kickc.model.values.ConstantValue; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.Label; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.values.ScopeRef; +import dk.camelot64.kickc.model.values.Value; import dk.camelot64.kickc.parser.KickCBaseVisitor; import dk.camelot64.kickc.parser.KickCParser; diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpec.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpec.java index c01807b20..b64f55355 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpec.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentInstanceSpec.java @@ -2,6 +2,17 @@ package dk.camelot64.kickc.fragment; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementConditionalJump; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.Label; +import dk.camelot64.kickc.model.symbols.Symbol; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeInference; +import dk.camelot64.kickc.model.types.SymbolTypePointer; import java.util.LinkedHashMap; import java.util.Map; @@ -125,19 +136,19 @@ public class AsmFragmentInstanceSpec { } if( rValue2 instanceof ConstantInteger && - ((ConstantInteger) rValue2).getNumber() == 1 && + ((ConstantInteger) rValue2).getValue() == 1 && operator != null && (operator.getOperator().equals("-") || operator.getOperator().equals("+"))) { signature.append("1"); } else if( rValue2 instanceof ConstantInteger && - ((ConstantInteger) rValue2).getNumber() <= 7 && + ((ConstantInteger) rValue2).getValue() <= 7 && operator != null && (operator.getOperator().equals(">>") || operator.getOperator().equals("<<"))) { - signature.append(((ConstantInteger) rValue2).getNumber()); + signature.append(((ConstantInteger) rValue2).getValue()); } else if( rValue2 instanceof ConstantInteger && - ((ConstantInteger) rValue2).getNumber() == 0 && + ((ConstantInteger) rValue2).getValue() == 0 && operator != null && (operator.getOperator().equals("-") || operator.getOperator().equals("+"))) { signature.append("0"); @@ -158,7 +169,7 @@ public class AsmFragmentInstanceSpec { if(conditionalJump.getOperator() != null) { signature.append(getOperatorFragmentName(conditionalJump.getOperator())); } - if(conditionalJump.getrValue2() instanceof ConstantInteger && ((ConstantInteger) conditionalJump.getrValue2()).getNumber() == 0) { + if(conditionalJump.getrValue2() instanceof ConstantInteger && ((ConstantInteger) conditionalJump.getrValue2()).getValue() == 0) { signature.append("0"); } else if(conditionalJump.getrValue2() instanceof ConstantBool) { ConstantBool boolValue = (ConstantBool) conditionalJump.getrValue2(); diff --git a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplate.java b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplate.java index 9ab6f6b96..e9232d181 100644 --- a/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplate.java +++ b/src/main/java/dk/camelot64/kickc/fragment/AsmFragmentTemplate.java @@ -3,6 +3,13 @@ package dk.camelot64.kickc.fragment; import dk.camelot64.kickc.asm.AsmClobber; import dk.camelot64.kickc.asm.AsmProgram; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.ConstantInteger; +import dk.camelot64.kickc.model.symbols.Label; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.symbols.VariableVersion; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.values.ScopeRef; +import dk.camelot64.kickc.model.values.Value; import dk.camelot64.kickc.parser.KickCLexer; import dk.camelot64.kickc.parser.KickCParser; import org.antlr.v4.runtime.*; diff --git a/src/main/java/dk/camelot64/kickc/model/CallGraph.java b/src/main/java/dk/camelot64/kickc/model/CallGraph.java index ee4bec160..cb2ded560 100644 --- a/src/main/java/dk/camelot64/kickc/model/CallGraph.java +++ b/src/main/java/dk/camelot64/kickc/model/CallGraph.java @@ -1,5 +1,8 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.values.LabelRef; + import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashSet; diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantValueCalculator.java b/src/main/java/dk/camelot64/kickc/model/ConstantValueCalculator.java index e9960ef29..511a401b4 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantValueCalculator.java +++ b/src/main/java/dk/camelot64/kickc/model/ConstantValueCalculator.java @@ -2,18 +2,20 @@ package dk.camelot64.kickc.model; import dk.camelot64.kickc.model.operators.Operator; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.ProgramScope; /** Can calculate the exact value for constants (used for type inference). */ public class ConstantValueCalculator { - - public static ConstantValue calcValue(ProgramScope programScope, ConstantValue value) { + public static ConstantLiteral calcValue(ProgramScope programScope, ConstantValue value) { if(value instanceof ConstantInteger) { - return value; + return (ConstantLiteral) value; } else if(value instanceof ConstantString) { - return value; + return (ConstantLiteral) value; } else if(value instanceof ConstantChar) { - return value; + return (ConstantLiteral) value; } else if(value instanceof ConstantRef) { ConstantVar constantVar = programScope.getConstant((ConstantRef) value); ConstantValue constantVarValue = constantVar.getValue(); @@ -36,7 +38,7 @@ public class ConstantValueCalculator { } - public static ConstantValue calcValue(ProgramScope programScope, Operator operator, ConstantValue value) { + public static ConstantLiteral calcValue(ProgramScope programScope, Operator operator, ConstantValue value) { if(operator.equals(Operators.NEG)) { return neg(calcValue(programScope, value)); } else if(operator.equals(Operators.POS)) { @@ -53,40 +55,39 @@ public class ConstantValueCalculator { return null; } - private static ConstantValue castWord(ConstantValue value) { + private static ConstantLiteral castWord(ConstantValue value) { if(value instanceof ConstantInteger) { - return new ConstantInteger(0xffff & ((ConstantInteger) value).getNumber()); + return new ConstantInteger(0xffff & ((ConstantInteger) value).getValue()); } return null; } - private static ConstantValue castSWord(ConstantValue value) { + private static ConstantLiteral castSWord(ConstantValue value) { if(value instanceof ConstantInteger) { - return new ConstantInteger(0xffff & ((ConstantInteger) value).getNumber()); + return new ConstantInteger(0xffff & ((ConstantInteger) value).getValue()); } return null; } - private static ConstantValue castByte(ConstantValue value) { + private static ConstantLiteral castByte(ConstantValue value) { if(value instanceof ConstantInteger) { - return new ConstantInteger(0xff & ((ConstantInteger) value).getNumber()); + return new ConstantInteger(0xff & ((ConstantInteger) value).getValue()); } return null; } - private static ConstantValue castSByte(ConstantValue value) { + private static ConstantLiteral castSByte(ConstantValue value) { if(value instanceof ConstantInteger) { - return new ConstantInteger(0xff & ((ConstantInteger) value).getNumber()); + return new ConstantInteger(0xff & ((ConstantInteger) value).getValue()); } return null; } - private static ConstantValue castPtrByte(ConstantValue value) { + private static ConstantLiteral castPtrByte(ConstantLiteral value) { return value; } - - public static ConstantValue calcValue(ProgramScope programScope, ConstantValue value1, Operator operator, ConstantValue value2) { + public static ConstantLiteral calcValue(ProgramScope programScope, ConstantValue value1, Operator operator, ConstantValue value2) { if(operator.equals(Operators.MULTIPLY)) { return multiply(calcValue(programScope, value1), calcValue(programScope, value2)); } else if(operator.equals(Operators.PLUS)) { @@ -99,36 +100,36 @@ public class ConstantValueCalculator { return null; } - private static ConstantValue neg(ConstantValue value) { + private static ConstantLiteral neg(ConstantLiteral value) { if(value instanceof ConstantInteger) { - return new ConstantInteger(-((ConstantInteger) value).getNumber()); + return new ConstantInteger(-((ConstantInteger) value).getValue()); } return null; } - private static ConstantValue pos(ConstantValue value) { + private static ConstantLiteral pos(ConstantLiteral value) { if(value instanceof ConstantInteger) { - return new ConstantInteger(+((ConstantInteger) value).getNumber()); + return new ConstantInteger(+((ConstantInteger) value).getValue()); } return null; } - private static ConstantValue multiply(ConstantValue value1, ConstantValue value2) { + private static ConstantLiteral multiply(ConstantLiteral value1, ConstantLiteral value2) { if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) { - return new ConstantInteger(((ConstantInteger) value1).getNumber() * ((ConstantInteger) value2).getNumber()); + return new ConstantInteger(((ConstantInteger) value1).getValue() * ((ConstantInteger) value2).getValue()); } return null; } - private static ConstantValue plus(ConstantValue value1, ConstantValue value2) { + private static ConstantLiteral plus(ConstantLiteral value1, ConstantLiteral value2) { if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) { - return new ConstantInteger(((ConstantInteger) value1).getNumber() + ((ConstantInteger) value2).getNumber()); + return new ConstantInteger(((ConstantInteger) value1).getValue() + ((ConstantInteger) value2).getValue()); } if(value1 instanceof ConstantInteger && value2 instanceof ConstantChar) { - return new ConstantInteger(((ConstantInteger) value1).getNumber() + ((ConstantChar) value2).getValue()); + return new ConstantInteger(((ConstantInteger) value1).getValue() + ((ConstantChar) value2).getValue()); } if(value1 instanceof ConstantChar && value2 instanceof ConstantInteger) { - return new ConstantInteger(((ConstantChar) value1).getValue() + ((ConstantInteger) value2).getNumber()); + return new ConstantInteger(((ConstantChar) value1).getValue() + ((ConstantInteger) value2).getValue()); } if(value1 instanceof ConstantString && value2 instanceof ConstantString) { return new ConstantString(((ConstantString) value1).getValue() + ((ConstantString) value2).getValue()); @@ -139,16 +140,16 @@ public class ConstantValueCalculator { return null; } - private static ConstantValue minus(ConstantValue value1, ConstantValue value2) { + private static ConstantLiteral minus(ConstantLiteral value1, ConstantLiteral value2) { if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) { - return new ConstantInteger(((ConstantInteger) value1).getNumber() - ((ConstantInteger) value2).getNumber()); + return new ConstantInteger(((ConstantInteger) value1).getValue() - ((ConstantInteger) value2).getValue()); } return null; } - private static ConstantValue div(ConstantValue value1, ConstantValue value2) { + private static ConstantLiteral div(ConstantLiteral value1, ConstantLiteral value2) { if(value1 instanceof ConstantInteger && value2 instanceof ConstantInteger) { - return new ConstantInteger(((ConstantInteger) value1).getNumber() / ((ConstantInteger) value2).getNumber()); + return new ConstantInteger(((ConstantInteger) value1).getValue() / ((ConstantInteger) value2).getValue()); } return null; } diff --git a/src/main/java/dk/camelot64/kickc/model/ControlFlowBlock.java b/src/main/java/dk/camelot64/kickc/model/ControlFlowBlock.java index f6289b7a3..bae1404d1 100644 --- a/src/main/java/dk/camelot64/kickc/model/ControlFlowBlock.java +++ b/src/main/java/dk/camelot64/kickc/model/ControlFlowBlock.java @@ -1,5 +1,13 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.symbols.Symbol; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.ScopeRef; + import java.util.ArrayList; import java.util.Collection; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/ControlFlowGraph.java b/src/main/java/dk/camelot64/kickc/model/ControlFlowGraph.java index a49601daf..b46279ca5 100644 --- a/src/main/java/dk/camelot64/kickc/model/ControlFlowGraph.java +++ b/src/main/java/dk/camelot64/kickc/model/ControlFlowGraph.java @@ -1,5 +1,12 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.ScopeRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; + import java.util.*; /** diff --git a/src/main/java/dk/camelot64/kickc/model/ControlFlowGraphBaseVisitor.java b/src/main/java/dk/camelot64/kickc/model/ControlFlowGraphBaseVisitor.java index 66935f3eb..e51aad4c7 100644 --- a/src/main/java/dk/camelot64/kickc/model/ControlFlowGraphBaseVisitor.java +++ b/src/main/java/dk/camelot64/kickc/model/ControlFlowGraphBaseVisitor.java @@ -1,5 +1,7 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.statements.*; + import java.util.Collection; /** Base visitor for iterating through a control flow graph */ diff --git a/src/main/java/dk/camelot64/kickc/model/ControlFlowGraphCopyVisitor.java b/src/main/java/dk/camelot64/kickc/model/ControlFlowGraphCopyVisitor.java index 5487a146c..96adcee5b 100644 --- a/src/main/java/dk/camelot64/kickc/model/ControlFlowGraphCopyVisitor.java +++ b/src/main/java/dk/camelot64/kickc/model/ControlFlowGraphCopyVisitor.java @@ -1,6 +1,11 @@ package dk.camelot64.kickc.model; import dk.camelot64.kickc.model.operators.Operator; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.*; import java.util.LinkedHashMap; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/DominatorsBlock.java b/src/main/java/dk/camelot64/kickc/model/DominatorsBlock.java index e25a54b36..3d69345c2 100644 --- a/src/main/java/dk/camelot64/kickc/model/DominatorsBlock.java +++ b/src/main/java/dk/camelot64/kickc/model/DominatorsBlock.java @@ -1,5 +1,7 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.LabelRef; + import java.util.Collection; import java.util.HashSet; import java.util.Iterator; diff --git a/src/main/java/dk/camelot64/kickc/model/DominatorsGraph.java b/src/main/java/dk/camelot64/kickc/model/DominatorsGraph.java index 2130fb9c9..a089c0e64 100644 --- a/src/main/java/dk/camelot64/kickc/model/DominatorsGraph.java +++ b/src/main/java/dk/camelot64/kickc/model/DominatorsGraph.java @@ -1,5 +1,7 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.LabelRef; + import java.util.LinkedHashMap; import java.util.Map; diff --git a/src/main/java/dk/camelot64/kickc/model/LiveRange.java b/src/main/java/dk/camelot64/kickc/model/LiveRange.java index cb69cfe17..f124b12e9 100644 --- a/src/main/java/dk/camelot64/kickc/model/LiveRange.java +++ b/src/main/java/dk/camelot64/kickc/model/LiveRange.java @@ -1,5 +1,7 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.statements.Statement; + import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClass.java b/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClass.java index 0efb9f633..3c878882a 100644 --- a/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClass.java +++ b/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClass.java @@ -1,5 +1,7 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.VariableRef; + import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClassSet.java b/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClassSet.java index bc681f999..e549d5294 100644 --- a/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClassSet.java +++ b/src/main/java/dk/camelot64/kickc/model/LiveRangeEquivalenceClassSet.java @@ -1,5 +1,8 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.symbols.Variable; + import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariables.java b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariables.java index 8d3329566..6f1beb7f2 100644 --- a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariables.java +++ b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariables.java @@ -1,5 +1,8 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; + import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffective.java b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffective.java index a64fb3b86..e1e7c5c30 100644 --- a/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffective.java +++ b/src/main/java/dk/camelot64/kickc/model/LiveRangeVariablesEffective.java @@ -1,5 +1,12 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.values.ScopeRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.symbols.Scope; import dk.camelot64.kickc.passes.Pass2AliasElimination; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/model/NaturalLoop.java b/src/main/java/dk/camelot64/kickc/model/NaturalLoop.java index 7a9a1e27f..6ce206519 100644 --- a/src/main/java/dk/camelot64/kickc/model/NaturalLoop.java +++ b/src/main/java/dk/camelot64/kickc/model/NaturalLoop.java @@ -1,5 +1,7 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.LabelRef; + import java.util.LinkedHashSet; import java.util.Set; diff --git a/src/main/java/dk/camelot64/kickc/model/NaturalLoopSet.java b/src/main/java/dk/camelot64/kickc/model/NaturalLoopSet.java index 191d9115c..4387e2a72 100644 --- a/src/main/java/dk/camelot64/kickc/model/NaturalLoopSet.java +++ b/src/main/java/dk/camelot64/kickc/model/NaturalLoopSet.java @@ -1,5 +1,7 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.LabelRef; + import java.util.*; /** diff --git a/src/main/java/dk/camelot64/kickc/model/PhiTransitions.java b/src/main/java/dk/camelot64/kickc/model/PhiTransitions.java index 8d28d84d6..ae1632c5a 100644 --- a/src/main/java/dk/camelot64/kickc/model/PhiTransitions.java +++ b/src/main/java/dk/camelot64/kickc/model/PhiTransitions.java @@ -1,5 +1,11 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.symbols.Variable; + import java.util.*; /** diff --git a/src/main/java/dk/camelot64/kickc/model/ProcedureModifiedVars.java b/src/main/java/dk/camelot64/kickc/model/ProcedureModifiedVars.java index 1370d0820..7cd39fa1f 100644 --- a/src/main/java/dk/camelot64/kickc/model/ProcedureModifiedVars.java +++ b/src/main/java/dk/camelot64/kickc/model/ProcedureModifiedVars.java @@ -1,5 +1,8 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.values.VariableRef; + import java.util.Map; import java.util.Set; diff --git a/src/main/java/dk/camelot64/kickc/model/Program.java b/src/main/java/dk/camelot64/kickc/model/Program.java index 91b054fa4..2dccdc49c 100644 --- a/src/main/java/dk/camelot64/kickc/model/Program.java +++ b/src/main/java/dk/camelot64/kickc/model/Program.java @@ -2,6 +2,8 @@ package dk.camelot64.kickc.model; import dk.camelot64.kickc.CompileLog; import dk.camelot64.kickc.asm.AsmProgram; +import dk.camelot64.kickc.model.statements.StatementInfos; +import dk.camelot64.kickc.model.symbols.ProgramScope; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/RegisterCombination.java b/src/main/java/dk/camelot64/kickc/model/RegisterCombination.java index dfb63713c..a877be472 100644 --- a/src/main/java/dk/camelot64/kickc/model/RegisterCombination.java +++ b/src/main/java/dk/camelot64/kickc/model/RegisterCombination.java @@ -1,5 +1,8 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.symbols.Variable; + import java.util.LinkedHashMap; import java.util.Map; diff --git a/src/main/java/dk/camelot64/kickc/model/RegisterUpliftProgram.java b/src/main/java/dk/camelot64/kickc/model/RegisterUpliftProgram.java index cfe3ceaf5..52ce48b31 100644 --- a/src/main/java/dk/camelot64/kickc/model/RegisterUpliftProgram.java +++ b/src/main/java/dk/camelot64/kickc/model/RegisterUpliftProgram.java @@ -1,5 +1,7 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.ScopeRef; + import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/RegisterUpliftScope.java b/src/main/java/dk/camelot64/kickc/model/RegisterUpliftScope.java index fcbe6c638..59b2a8a04 100644 --- a/src/main/java/dk/camelot64/kickc/model/RegisterUpliftScope.java +++ b/src/main/java/dk/camelot64/kickc/model/RegisterUpliftScope.java @@ -1,6 +1,7 @@ package dk.camelot64.kickc.model; import com.ibm.icu.text.NumberFormat; +import dk.camelot64.kickc.model.values.ScopeRef; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/dk/camelot64/kickc/model/Registers.java b/src/main/java/dk/camelot64/kickc/model/Registers.java index d2c5ebc4a..b889d62bd 100644 --- a/src/main/java/dk/camelot64/kickc/model/Registers.java +++ b/src/main/java/dk/camelot64/kickc/model/Registers.java @@ -1,5 +1,8 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.ConstantValue; +import dk.camelot64.kickc.model.values.Value; + /** The different registers available for a program */ public class Registers { diff --git a/src/main/java/dk/camelot64/kickc/model/StatementSequence.java b/src/main/java/dk/camelot64/kickc/model/StatementSequence.java index a93cded01..0955457ee 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementSequence.java +++ b/src/main/java/dk/camelot64/kickc/model/StatementSequence.java @@ -1,5 +1,10 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementLabel; +import dk.camelot64.kickc.model.statements.StatementProcedureBegin; +import dk.camelot64.kickc.model.statements.StatementProcedureEnd; + import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolInfos.java b/src/main/java/dk/camelot64/kickc/model/SymbolInfos.java index bf64919fe..3b07db9eb 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolInfos.java +++ b/src/main/java/dk/camelot64/kickc/model/SymbolInfos.java @@ -1,5 +1,10 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.SymbolRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.symbols.Symbol; +import dk.camelot64.kickc.model.symbols.Variable; + import java.util.Map; /** Cached information about symbols. Contains a symbol table cache for fast access. */ diff --git a/src/main/java/dk/camelot64/kickc/model/VariableReferenceInfos.java b/src/main/java/dk/camelot64/kickc/model/VariableReferenceInfos.java index a7b8a95b6..8f7568515 100644 --- a/src/main/java/dk/camelot64/kickc/model/VariableReferenceInfos.java +++ b/src/main/java/dk/camelot64/kickc/model/VariableReferenceInfos.java @@ -1,5 +1,10 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.ConstantRef; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; import dk.camelot64.kickc.passes.PassNVariableReferenceInfos; import java.util.Collection; diff --git a/src/main/java/dk/camelot64/kickc/model/VariableRegisterWeights.java b/src/main/java/dk/camelot64/kickc/model/VariableRegisterWeights.java index 6217875eb..13a3e6d28 100644 --- a/src/main/java/dk/camelot64/kickc/model/VariableRegisterWeights.java +++ b/src/main/java/dk/camelot64/kickc/model/VariableRegisterWeights.java @@ -1,5 +1,7 @@ package dk.camelot64.kickc.model; +import dk.camelot64.kickc.model.values.VariableRef; + import java.util.LinkedHashMap; import java.util.List; import java.util.Map; diff --git a/src/main/java/dk/camelot64/kickc/model/operators/Operators.java b/src/main/java/dk/camelot64/kickc/model/operators/Operators.java index ac6cf4278..0f781d3b3 100644 --- a/src/main/java/dk/camelot64/kickc/model/operators/Operators.java +++ b/src/main/java/dk/camelot64/kickc/model/operators/Operators.java @@ -1,7 +1,7 @@ package dk.camelot64.kickc.model.operators; -import dk.camelot64.kickc.model.SymbolType; -import dk.camelot64.kickc.model.SymbolTypePointer; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypePointer; /** Constainer for all the expression operators */ public class Operators { diff --git a/src/main/java/dk/camelot64/kickc/model/Statement.java b/src/main/java/dk/camelot64/kickc/model/statements/Statement.java similarity index 83% rename from src/main/java/dk/camelot64/kickc/model/Statement.java rename to src/main/java/dk/camelot64/kickc/model/statements/Statement.java index 17441c360..4e690061d 100644 --- a/src/main/java/dk/camelot64/kickc/model/Statement.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/Statement.java @@ -1,6 +1,8 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; +import dk.camelot64.kickc.model.Program; + /** * Single Static Assignment Form Statement. * Intermediate form used for compiler optimization. diff --git a/src/main/java/dk/camelot64/kickc/model/StatementAsm.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementAsm.java similarity index 89% rename from src/main/java/dk/camelot64/kickc/model/StatementAsm.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementAsm.java index a74fd17bc..887fb2678 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementAsm.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementAsm.java @@ -1,5 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; +import dk.camelot64.kickc.model.Program; import dk.camelot64.kickc.parser.KickCParser; /** Inline ASM code */ diff --git a/src/main/java/dk/camelot64/kickc/model/StatementAssignment.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementAssignment.java similarity index 93% rename from src/main/java/dk/camelot64/kickc/model/StatementAssignment.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementAssignment.java index 6c9a8dc70..6b0f1ced4 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementAssignment.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementAssignment.java @@ -1,6 +1,10 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; +import dk.camelot64.kickc.model.Program; import dk.camelot64.kickc.model.operators.Operator; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.symbols.Variable; /** * Single Static Assignment Form Statement. diff --git a/src/main/java/dk/camelot64/kickc/model/StatementBase.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementBase.java similarity index 90% rename from src/main/java/dk/camelot64/kickc/model/StatementBase.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementBase.java index dbcbb641e..333e75255 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementBase.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementBase.java @@ -1,4 +1,10 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.CallGraph; +import dk.camelot64.kickc.model.LiveRangeVariables; +import dk.camelot64.kickc.model.LiveRangeVariablesEffective; +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.values.VariableRef; import java.util.Collection; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/StatementCall.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementCall.java similarity index 94% rename from src/main/java/dk/camelot64/kickc/model/StatementCall.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementCall.java index 8c66922e6..73570056e 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementCall.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementCall.java @@ -1,4 +1,9 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.RValue; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/StatementConditionalJump.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementConditionalJump.java similarity index 94% rename from src/main/java/dk/camelot64/kickc/model/StatementConditionalJump.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementConditionalJump.java index 40a22d971..f92f00214 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementConditionalJump.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementConditionalJump.java @@ -1,6 +1,9 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.Program; import dk.camelot64.kickc.model.operators.Operator; +import dk.camelot64.kickc.model.values.RValue; /** * Intermediate Compiler Form Statement with a conditional jump. diff --git a/src/main/java/dk/camelot64/kickc/model/StatementInfos.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementInfos.java similarity index 88% rename from src/main/java/dk/camelot64/kickc/model/StatementInfos.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementInfos.java index 5ca6c38b0..8afbf3d06 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementInfos.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementInfos.java @@ -1,4 +1,9 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.ControlFlowBlock; +import dk.camelot64.kickc.model.ControlFlowGraph; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.Program; import java.util.Map; diff --git a/src/main/java/dk/camelot64/kickc/model/StatementJump.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementJump.java similarity index 84% rename from src/main/java/dk/camelot64/kickc/model/StatementJump.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementJump.java index f64ee7dd0..264e3c3ba 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementJump.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementJump.java @@ -1,4 +1,7 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.Program; /** * Single Static Assignment Form Statement unconditional jump. diff --git a/src/main/java/dk/camelot64/kickc/model/StatementLValue.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementLValue.java similarity index 71% rename from src/main/java/dk/camelot64/kickc/model/StatementLValue.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementLValue.java index 5c514e207..c991dcefe 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementLValue.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementLValue.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.values.LValue; /** * Single Static Assignment Form Statement with an LValuie - that is a statement assigning a value to a variable. diff --git a/src/main/java/dk/camelot64/kickc/model/StatementLabel.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementLabel.java similarity index 78% rename from src/main/java/dk/camelot64/kickc/model/StatementLabel.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementLabel.java index e4f73bbc0..b7d15172c 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementLabel.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementLabel.java @@ -1,4 +1,7 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.Program; /** * Single Static Assignment Form Statement Jump target. diff --git a/src/main/java/dk/camelot64/kickc/model/StatementPhiBlock.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementPhiBlock.java similarity index 97% rename from src/main/java/dk/camelot64/kickc/model/StatementPhiBlock.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementPhiBlock.java index 0833ac857..ced6b81e6 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementPhiBlock.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementPhiBlock.java @@ -1,4 +1,9 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.VariableRef; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/dk/camelot64/kickc/model/StatementProcedureBegin.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementProcedureBegin.java similarity index 84% rename from src/main/java/dk/camelot64/kickc/model/StatementProcedureBegin.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementProcedureBegin.java index a172922c8..13d8da6ca 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementProcedureBegin.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementProcedureBegin.java @@ -1,4 +1,7 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.Program; /** Procedure declaration in SSA */ public class StatementProcedureBegin extends StatementBase { diff --git a/src/main/java/dk/camelot64/kickc/model/StatementProcedureEnd.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementProcedureEnd.java similarity index 79% rename from src/main/java/dk/camelot64/kickc/model/StatementProcedureEnd.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementProcedureEnd.java index f61520dbb..7b1ecbe7f 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementProcedureEnd.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementProcedureEnd.java @@ -1,4 +1,7 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.Program; /** * Procedure declaration in SSA diff --git a/src/main/java/dk/camelot64/kickc/model/StatementReturn.java b/src/main/java/dk/camelot64/kickc/model/statements/StatementReturn.java similarity index 89% rename from src/main/java/dk/camelot64/kickc/model/StatementReturn.java rename to src/main/java/dk/camelot64/kickc/model/statements/StatementReturn.java index 9732309a3..b76addc16 100644 --- a/src/main/java/dk/camelot64/kickc/model/StatementReturn.java +++ b/src/main/java/dk/camelot64/kickc/model/statements/StatementReturn.java @@ -1,4 +1,7 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.statements; + +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.values.RValue; /** * Return Statement inside procedure in Single Static Assignment Form. diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantVar.java b/src/main/java/dk/camelot64/kickc/model/symbols/ConstantVar.java similarity index 85% rename from src/main/java/dk/camelot64/kickc/model/ConstantVar.java rename to src/main/java/dk/camelot64/kickc/model/symbols/ConstantVar.java index a467a6d91..7fb699288 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantVar.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/ConstantVar.java @@ -1,4 +1,9 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.values.ConstantRef; +import dk.camelot64.kickc.model.values.ConstantValue; /** A named constant or a variable that has been inferred to be constant in the symbol table */ public class ConstantVar extends SymbolVariable { diff --git a/src/main/java/dk/camelot64/kickc/model/Label.java b/src/main/java/dk/camelot64/kickc/model/symbols/Label.java similarity index 91% rename from src/main/java/dk/camelot64/kickc/model/Label.java rename to src/main/java/dk/camelot64/kickc/model/symbols/Label.java index 2e89833cc..888c4df72 100644 --- a/src/main/java/dk/camelot64/kickc/model/Label.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/Label.java @@ -1,4 +1,8 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.types.SymbolType; /** A jump label */ public class Label implements Symbol { diff --git a/src/main/java/dk/camelot64/kickc/model/Procedure.java b/src/main/java/dk/camelot64/kickc/model/symbols/Procedure.java similarity index 93% rename from src/main/java/dk/camelot64/kickc/model/Procedure.java rename to src/main/java/dk/camelot64/kickc/model/symbols/Procedure.java index 684befa66..c859a089d 100644 --- a/src/main/java/dk/camelot64/kickc/model/Procedure.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/Procedure.java @@ -1,4 +1,9 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeProcedure; +import dk.camelot64.kickc.model.values.ProcedureRef; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/dk/camelot64/kickc/model/ProgramScope.java b/src/main/java/dk/camelot64/kickc/model/symbols/ProgramScope.java similarity index 87% rename from src/main/java/dk/camelot64/kickc/model/ProgramScope.java rename to src/main/java/dk/camelot64/kickc/model/symbols/ProgramScope.java index e44f93430..a176ad1fc 100644 --- a/src/main/java/dk/camelot64/kickc/model/ProgramScope.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/ProgramScope.java @@ -1,4 +1,8 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeProgram; import java.util.HashMap; diff --git a/src/main/java/dk/camelot64/kickc/model/Scope.java b/src/main/java/dk/camelot64/kickc/model/symbols/Scope.java similarity index 98% rename from src/main/java/dk/camelot64/kickc/model/Scope.java rename to src/main/java/dk/camelot64/kickc/model/symbols/Scope.java index 82ecde020..c20f187be 100644 --- a/src/main/java/dk/camelot64/kickc/model/Scope.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/Scope.java @@ -1,4 +1,8 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.types.SymbolType; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/model/Symbol.java b/src/main/java/dk/camelot64/kickc/model/symbols/Symbol.java similarity index 58% rename from src/main/java/dk/camelot64/kickc/model/Symbol.java rename to src/main/java/dk/camelot64/kickc/model/symbols/Symbol.java index 94bd40eb1..59929814d 100644 --- a/src/main/java/dk/camelot64/kickc/model/Symbol.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/Symbol.java @@ -1,4 +1,8 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.values.SymbolRef; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.values.Value; /** A Symbol (variable, jump label, etc.) */ public interface Symbol extends Value { diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolVariable.java b/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java similarity index 96% rename from src/main/java/dk/camelot64/kickc/model/SymbolVariable.java rename to src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java index 5a2ce6dcf..1e9a54e8c 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolVariable.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/SymbolVariable.java @@ -1,4 +1,8 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.Registers; +import dk.camelot64.kickc.model.types.SymbolType; /** Abstract Variable or a Constant Variable */ public abstract class SymbolVariable implements Symbol { diff --git a/src/main/java/dk/camelot64/kickc/model/Variable.java b/src/main/java/dk/camelot64/kickc/model/symbols/Variable.java similarity index 86% rename from src/main/java/dk/camelot64/kickc/model/Variable.java rename to src/main/java/dk/camelot64/kickc/model/symbols/Variable.java index 2571fc0f6..9b1eb351c 100644 --- a/src/main/java/dk/camelot64/kickc/model/Variable.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/Variable.java @@ -1,4 +1,8 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.Registers; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.values.VariableRef; /** A Variable (or a Constant) */ public abstract class Variable extends SymbolVariable { diff --git a/src/main/java/dk/camelot64/kickc/model/VariableIntermediate.java b/src/main/java/dk/camelot64/kickc/model/symbols/VariableIntermediate.java similarity index 75% rename from src/main/java/dk/camelot64/kickc/model/VariableIntermediate.java rename to src/main/java/dk/camelot64/kickc/model/symbols/VariableIntermediate.java index 43cd7f47a..51c438631 100644 --- a/src/main/java/dk/camelot64/kickc/model/VariableIntermediate.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/VariableIntermediate.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.types.SymbolType; /** * A Symbol (variable, jump label, etc.) diff --git a/src/main/java/dk/camelot64/kickc/model/VariableUnversioned.java b/src/main/java/dk/camelot64/kickc/model/symbols/VariableUnversioned.java similarity index 89% rename from src/main/java/dk/camelot64/kickc/model/VariableUnversioned.java rename to src/main/java/dk/camelot64/kickc/model/symbols/VariableUnversioned.java index b100cfd00..9b2a7e3a5 100644 --- a/src/main/java/dk/camelot64/kickc/model/VariableUnversioned.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/VariableUnversioned.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.types.SymbolType; /** * A Symbol (variable, jump label, etc.) diff --git a/src/main/java/dk/camelot64/kickc/model/VariableVersion.java b/src/main/java/dk/camelot64/kickc/model/symbols/VariableVersion.java similarity index 94% rename from src/main/java/dk/camelot64/kickc/model/VariableVersion.java rename to src/main/java/dk/camelot64/kickc/model/symbols/VariableVersion.java index 5afba2476..5089eaa3f 100644 --- a/src/main/java/dk/camelot64/kickc/model/VariableVersion.java +++ b/src/main/java/dk/camelot64/kickc/model/symbols/VariableVersion.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.symbols; + +import dk.camelot64.kickc.model.types.SymbolType; /** A Symbol (variable, jump label, etc.) */ public class VariableVersion extends Variable { diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolType.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolType.java similarity index 99% rename from src/main/java/dk/camelot64/kickc/model/SymbolType.java rename to src/main/java/dk/camelot64/kickc/model/types/SymbolType.java index de998b5ac..0ab234c82 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolType.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolType.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.types; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeArray.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java similarity index 97% rename from src/main/java/dk/camelot64/kickc/model/SymbolTypeArray.java rename to src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java index fb8866a91..4c9277da6 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeArray.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeArray.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.types; /** * A fixed size array of another type diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeBasic.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeBasic.java similarity index 95% rename from src/main/java/dk/camelot64/kickc/model/SymbolTypeBasic.java rename to src/main/java/dk/camelot64/kickc/model/types/SymbolTypeBasic.java index fcd9a6f60..3b85c0873 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeBasic.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeBasic.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.types; /** Basic Symbol Types */ public class SymbolTypeBasic implements SymbolType { diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInference.java similarity index 98% rename from src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java rename to src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInference.java index 93796fb84..c346944e7 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInference.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInference.java @@ -1,7 +1,13 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.types; +import dk.camelot64.kickc.model.ConstantValueCalculator; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementLValue; import dk.camelot64.kickc.model.operators.Operator; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.symbols.*; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInline.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInline.java similarity index 98% rename from src/main/java/dk/camelot64/kickc/model/SymbolTypeInline.java rename to src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInline.java index f00b70b3c..10267b9c9 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInline.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInline.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.types; import java.util.Arrays; import java.util.Collection; diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInteger.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInteger.java similarity index 94% rename from src/main/java/dk/camelot64/kickc/model/SymbolTypeInteger.java rename to src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInteger.java index 4bb53b0ea..ba92160b2 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeInteger.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeInteger.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.types; /** Integer symbol types (byte, signed byte, word, ...). */ public class SymbolTypeInteger implements SymbolType { diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypePointer.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypePointer.java similarity index 96% rename from src/main/java/dk/camelot64/kickc/model/SymbolTypePointer.java rename to src/main/java/dk/camelot64/kickc/model/types/SymbolTypePointer.java index 5d7a27281..1eb6163fa 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypePointer.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypePointer.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.types; /** A pointer */ public class SymbolTypePointer implements SymbolType { diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeProcedure.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeProcedure.java similarity index 92% rename from src/main/java/dk/camelot64/kickc/model/SymbolTypeProcedure.java rename to src/main/java/dk/camelot64/kickc/model/types/SymbolTypeProcedure.java index 6794c8579..19feb4bee 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeProcedure.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeProcedure.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.types; /** A function returning another type */ public class SymbolTypeProcedure implements SymbolType { diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolTypeProgram.java b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeProgram.java similarity index 91% rename from src/main/java/dk/camelot64/kickc/model/SymbolTypeProgram.java rename to src/main/java/dk/camelot64/kickc/model/types/SymbolTypeProgram.java index 7c140a34c..20bef8ded 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolTypeProgram.java +++ b/src/main/java/dk/camelot64/kickc/model/types/SymbolTypeProgram.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.types; /** A program */ public class SymbolTypeProgram implements SymbolType { diff --git a/src/main/java/dk/camelot64/kickc/model/CastValue.java b/src/main/java/dk/camelot64/kickc/model/values/CastValue.java similarity index 87% rename from src/main/java/dk/camelot64/kickc/model/CastValue.java rename to src/main/java/dk/camelot64/kickc/model/values/CastValue.java index cae2bc50d..0586b0ea8 100644 --- a/src/main/java/dk/camelot64/kickc/model/CastValue.java +++ b/src/main/java/dk/camelot64/kickc/model/values/CastValue.java @@ -1,4 +1,7 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.types.SymbolType; /** A Cast that requires no actual operation. * The types have the same size and the code will execute as if the value already had the type cast to. diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantArrayFilled.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantArrayFilled.java similarity index 79% rename from src/main/java/dk/camelot64/kickc/model/ConstantArrayFilled.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantArrayFilled.java index a52597f4a..0b4babebf 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantArrayFilled.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantArrayFilled.java @@ -1,4 +1,9 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeArray; /** * An zero-filled constant array. The array is allocated in the code memory (as a .fill() ). diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantArrayList.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantArrayList.java similarity index 83% rename from src/main/java/dk/camelot64/kickc/model/ConstantArrayList.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantArrayList.java index a1a657c06..79eb9dbaa 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantArrayList.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantArrayList.java @@ -1,4 +1,9 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeArray; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantBinary.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantBinary.java similarity index 82% rename from src/main/java/dk/camelot64/kickc/model/ConstantBinary.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantBinary.java index 4464e593c..5d9f9376e 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantBinary.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantBinary.java @@ -1,6 +1,10 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; +import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeInference; /** A constant defined by a binary operator applied to two constants */ public class ConstantBinary implements ConstantValue { diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantBool.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantBool.java similarity index 64% rename from src/main/java/dk/camelot64/kickc/model/ConstantBool.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantBool.java index 619f66aca..7d8baa49c 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantBool.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantBool.java @@ -1,9 +1,13 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; /** * SSA form constant integer value */ -public class ConstantBool implements ConstantValue { +public class ConstantBool implements ConstantLiteral { private Boolean value; @@ -16,6 +20,11 @@ public class ConstantBool implements ConstantValue { return SymbolType.BOOLEAN; } + @Override + public Boolean getValue() { + return value; + } + @Override public String toString() { return toString(null); diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantChar.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantChar.java similarity index 70% rename from src/main/java/dk/camelot64/kickc/model/ConstantChar.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantChar.java index 168f98d5b..2ccb7d0eb 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantChar.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantChar.java @@ -1,9 +1,13 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; /** * SSA form constant char value (a byte) */ -public class ConstantChar implements ConstantValue { +public class ConstantChar implements ConstantLiteral { private Character value; @@ -16,6 +20,7 @@ public class ConstantChar implements ConstantValue { return SymbolType.BYTE; } + @Override public Character getValue() { return value; } diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantDouble.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantDouble.java similarity index 67% rename from src/main/java/dk/camelot64/kickc/model/ConstantDouble.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantDouble.java index e3e8a6b51..b4631c136 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantDouble.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantDouble.java @@ -1,9 +1,13 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; /** * SSA form constant integer value */ -public class ConstantDouble implements ConstantValue { +public class ConstantDouble implements ConstantLiteral { private Double number; @@ -16,7 +20,8 @@ public class ConstantDouble implements ConstantValue { return SymbolType.DOUBLE; } - public Double getNumber() { + @Override + public Double getValue() { return number; } diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantInteger.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantInteger.java similarity index 76% rename from src/main/java/dk/camelot64/kickc/model/ConstantInteger.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantInteger.java index c57a193ee..58263c8a6 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantInteger.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantInteger.java @@ -1,9 +1,15 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeInline; +import dk.camelot64.kickc.model.types.SymbolTypeInteger; import java.util.ArrayList; /** SSA form constant integer value */ -public class ConstantInteger implements ConstantValue { +public class ConstantInteger implements ConstantLiteral { private Long number; @@ -11,7 +17,8 @@ public class ConstantInteger implements ConstantValue { this.number = number; } - public Long getNumber() { + @Override + public Long getValue() { return number; } @@ -21,7 +28,7 @@ public class ConstantInteger implements ConstantValue { public SymbolType getType() { ArrayList potentialTypes = new ArrayList<>(); - Long number = getNumber(); + Long number = getValue(); for(SymbolTypeInteger typeInteger : SymbolType.getIntegerTypes()) { if(number >= typeInteger.getMinValue() && number <= typeInteger.getMaxValue()) { potentialTypes.add(typeInteger); diff --git a/src/main/java/dk/camelot64/kickc/model/values/ConstantLiteral.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantLiteral.java new file mode 100644 index 000000000..0c6d4bbdb --- /dev/null +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantLiteral.java @@ -0,0 +1,8 @@ +package dk.camelot64.kickc.model.values; + +/** A literal constant value */ +public interface ConstantLiteral extends ConstantValue { + + T getValue(); + +} diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantRef.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantRef.java similarity index 66% rename from src/main/java/dk/camelot64/kickc/model/ConstantRef.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantRef.java index 49df3f33f..75b26cfa6 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantRef.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantRef.java @@ -1,4 +1,8 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; /** A reference to a named Constant (in the symbol table) */ public class ConstantRef extends SymbolRef implements ConstantValue { diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantString.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantString.java similarity index 69% rename from src/main/java/dk/camelot64/kickc/model/ConstantString.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantString.java index a8c0485f6..68d744903 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantString.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantString.java @@ -1,9 +1,13 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; /** * SSA form constant integer value */ -public class ConstantString implements ConstantValue { +public class ConstantString implements ConstantLiteral { private String value; @@ -16,6 +20,7 @@ public class ConstantString implements ConstantValue { return SymbolType.STRING; } + @Override public String getValue() { return value; } diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantUnary.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantUnary.java similarity index 85% rename from src/main/java/dk/camelot64/kickc/model/ConstantUnary.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantUnary.java index 00471075d..b3bc8d5d6 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantUnary.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantUnary.java @@ -1,6 +1,10 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; +import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeInference; /** A constant defined by a unary operator appied to another constant */ public class ConstantUnary implements ConstantValue { diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantValue.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantValue.java similarity index 55% rename from src/main/java/dk/camelot64/kickc/model/ConstantValue.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantValue.java index 4bffc5f6a..0cd963493 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantValue.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantValue.java @@ -1,4 +1,7 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.types.SymbolType; /** A constant value. The value might be calculated through a constant expression. */ public interface ConstantValue extends RValue { diff --git a/src/main/java/dk/camelot64/kickc/model/ConstantVarPointer.java b/src/main/java/dk/camelot64/kickc/model/values/ConstantVarPointer.java similarity index 71% rename from src/main/java/dk/camelot64/kickc/model/ConstantVarPointer.java rename to src/main/java/dk/camelot64/kickc/model/values/ConstantVarPointer.java index 5251333c0..3f9ea03d0 100644 --- a/src/main/java/dk/camelot64/kickc/model/ConstantVarPointer.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ConstantVarPointer.java @@ -1,4 +1,10 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypePointer; /** A pointer to a variable */ public class ConstantVarPointer implements ConstantValue { diff --git a/src/main/java/dk/camelot64/kickc/model/LValue.java b/src/main/java/dk/camelot64/kickc/model/values/LValue.java similarity index 85% rename from src/main/java/dk/camelot64/kickc/model/LValue.java rename to src/main/java/dk/camelot64/kickc/model/values/LValue.java index 0978b1d8e..a52959936 100644 --- a/src/main/java/dk/camelot64/kickc/model/LValue.java +++ b/src/main/java/dk/camelot64/kickc/model/values/LValue.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; /** Assignable value (capable of being on the left part of an assignment) */ public interface LValue extends RValue { diff --git a/src/main/java/dk/camelot64/kickc/model/LabelRef.java b/src/main/java/dk/camelot64/kickc/model/values/LabelRef.java similarity index 70% rename from src/main/java/dk/camelot64/kickc/model/LabelRef.java rename to src/main/java/dk/camelot64/kickc/model/values/LabelRef.java index 973de630d..d31d6052c 100644 --- a/src/main/java/dk/camelot64/kickc/model/LabelRef.java +++ b/src/main/java/dk/camelot64/kickc/model/values/LabelRef.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.symbols.Label; /** A reference to a label */ public class LabelRef extends SymbolRef { diff --git a/src/main/java/dk/camelot64/kickc/model/LvalueIntermediate.java b/src/main/java/dk/camelot64/kickc/model/values/LvalueIntermediate.java similarity index 88% rename from src/main/java/dk/camelot64/kickc/model/LvalueIntermediate.java rename to src/main/java/dk/camelot64/kickc/model/values/LvalueIntermediate.java index a7c4932df..672644b22 100644 --- a/src/main/java/dk/camelot64/kickc/model/LvalueIntermediate.java +++ b/src/main/java/dk/camelot64/kickc/model/values/LvalueIntermediate.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; /** * LValue containing an intermediate variable during parsing. Must be resolved to a proper LValue (pointer, array, lo/hi, ...) in Pass 1 - or result in failure diff --git a/src/main/java/dk/camelot64/kickc/model/PointerDereference.java b/src/main/java/dk/camelot64/kickc/model/values/PointerDereference.java similarity index 78% rename from src/main/java/dk/camelot64/kickc/model/PointerDereference.java rename to src/main/java/dk/camelot64/kickc/model/values/PointerDereference.java index 259cffbd4..4e686e954 100644 --- a/src/main/java/dk/camelot64/kickc/model/PointerDereference.java +++ b/src/main/java/dk/camelot64/kickc/model/values/PointerDereference.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; /** A dereferenced pointer */ public interface PointerDereference extends LValue { diff --git a/src/main/java/dk/camelot64/kickc/model/PointerDereferenceIndexed.java b/src/main/java/dk/camelot64/kickc/model/values/PointerDereferenceIndexed.java similarity index 90% rename from src/main/java/dk/camelot64/kickc/model/PointerDereferenceIndexed.java rename to src/main/java/dk/camelot64/kickc/model/values/PointerDereferenceIndexed.java index 967782625..8393e4710 100644 --- a/src/main/java/dk/camelot64/kickc/model/PointerDereferenceIndexed.java +++ b/src/main/java/dk/camelot64/kickc/model/values/PointerDereferenceIndexed.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; /** A dereferenced variable pointer plus an index (used for array writes) */ public class PointerDereferenceIndexed implements PointerDereference { diff --git a/src/main/java/dk/camelot64/kickc/model/PointerDereferenceSimple.java b/src/main/java/dk/camelot64/kickc/model/values/PointerDereferenceSimple.java similarity index 87% rename from src/main/java/dk/camelot64/kickc/model/PointerDereferenceSimple.java rename to src/main/java/dk/camelot64/kickc/model/values/PointerDereferenceSimple.java index 9f22bb9f8..c0deefec4 100644 --- a/src/main/java/dk/camelot64/kickc/model/PointerDereferenceSimple.java +++ b/src/main/java/dk/camelot64/kickc/model/values/PointerDereferenceSimple.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; /** A dereferenced pointer (based on a variable or a constant pointer) */ public class PointerDereferenceSimple implements PointerDereference { diff --git a/src/main/java/dk/camelot64/kickc/model/ProcedureRef.java b/src/main/java/dk/camelot64/kickc/model/values/ProcedureRef.java similarity index 93% rename from src/main/java/dk/camelot64/kickc/model/ProcedureRef.java rename to src/main/java/dk/camelot64/kickc/model/values/ProcedureRef.java index ee34b3e84..46be35b1d 100644 --- a/src/main/java/dk/camelot64/kickc/model/ProcedureRef.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ProcedureRef.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; /** A reference to a procedure */ public class ProcedureRef extends ScopeRef { diff --git a/src/main/java/dk/camelot64/kickc/model/RValue.java b/src/main/java/dk/camelot64/kickc/model/values/RValue.java similarity index 75% rename from src/main/java/dk/camelot64/kickc/model/RValue.java rename to src/main/java/dk/camelot64/kickc/model/values/RValue.java index 81f9d8481..b68afc46d 100644 --- a/src/main/java/dk/camelot64/kickc/model/RValue.java +++ b/src/main/java/dk/camelot64/kickc/model/values/RValue.java @@ -1,4 +1,4 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; /** A value usable as part of a calculation (ib the right side of an assignment) */ public interface RValue extends Value { diff --git a/src/main/java/dk/camelot64/kickc/model/ScopeRef.java b/src/main/java/dk/camelot64/kickc/model/values/ScopeRef.java similarity index 78% rename from src/main/java/dk/camelot64/kickc/model/ScopeRef.java rename to src/main/java/dk/camelot64/kickc/model/values/ScopeRef.java index 60f5c5cd4..1fb79d159 100644 --- a/src/main/java/dk/camelot64/kickc/model/ScopeRef.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ScopeRef.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.symbols.Scope; /** A reference to a scope */ public class ScopeRef extends SymbolRef { diff --git a/src/main/java/dk/camelot64/kickc/model/SymbolRef.java b/src/main/java/dk/camelot64/kickc/model/values/SymbolRef.java similarity index 96% rename from src/main/java/dk/camelot64/kickc/model/SymbolRef.java rename to src/main/java/dk/camelot64/kickc/model/values/SymbolRef.java index e0fb01d59..f63e72e50 100644 --- a/src/main/java/dk/camelot64/kickc/model/SymbolRef.java +++ b/src/main/java/dk/camelot64/kickc/model/values/SymbolRef.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; /** A reference to a symbol (variable, procedure or label) */ public class SymbolRef implements Value { diff --git a/src/main/java/dk/camelot64/kickc/model/Value.java b/src/main/java/dk/camelot64/kickc/model/values/Value.java similarity index 56% rename from src/main/java/dk/camelot64/kickc/model/Value.java rename to src/main/java/dk/camelot64/kickc/model/values/Value.java index 4cb3c737a..5893364f7 100644 --- a/src/main/java/dk/camelot64/kickc/model/Value.java +++ b/src/main/java/dk/camelot64/kickc/model/values/Value.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; /** Any value (variable, constant, label) */ public interface Value { diff --git a/src/main/java/dk/camelot64/kickc/model/ValueList.java b/src/main/java/dk/camelot64/kickc/model/values/ValueList.java similarity index 91% rename from src/main/java/dk/camelot64/kickc/model/ValueList.java rename to src/main/java/dk/camelot64/kickc/model/values/ValueList.java index c286a1931..fd704486a 100644 --- a/src/main/java/dk/camelot64/kickc/model/ValueList.java +++ b/src/main/java/dk/camelot64/kickc/model/values/ValueList.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.Program; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/model/VariableRef.java b/src/main/java/dk/camelot64/kickc/model/values/VariableRef.java similarity index 75% rename from src/main/java/dk/camelot64/kickc/model/VariableRef.java rename to src/main/java/dk/camelot64/kickc/model/values/VariableRef.java index 1852cb444..8dbcd7160 100644 --- a/src/main/java/dk/camelot64/kickc/model/VariableRef.java +++ b/src/main/java/dk/camelot64/kickc/model/values/VariableRef.java @@ -1,4 +1,6 @@ -package dk.camelot64.kickc.model; +package dk.camelot64.kickc.model.values; + +import dk.camelot64.kickc.model.symbols.Variable; /** A reference to a variable from the symbol table */ public class VariableRef extends SymbolRef implements RValue, LValue { diff --git a/src/main/java/dk/camelot64/kickc/passes/AliasReplacer.java b/src/main/java/dk/camelot64/kickc/passes/AliasReplacer.java index 767d818e0..35286a37c 100644 --- a/src/main/java/dk/camelot64/kickc/passes/AliasReplacer.java +++ b/src/main/java/dk/camelot64/kickc/passes/AliasReplacer.java @@ -1,6 +1,8 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.Statement; import java.util.ArrayList; import java.util.ListIterator; diff --git a/src/main/java/dk/camelot64/kickc/passes/ParseTreeConstantEvaluator.java b/src/main/java/dk/camelot64/kickc/passes/ParseTreeConstantEvaluator.java index cf9f853d8..b6cc427ae 100644 --- a/src/main/java/dk/camelot64/kickc/passes/ParseTreeConstantEvaluator.java +++ b/src/main/java/dk/camelot64/kickc/passes/ParseTreeConstantEvaluator.java @@ -1,9 +1,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.NumberParser; -import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.*; import dk.camelot64.kickc.parser.KickCBaseVisitor; import dk.camelot64.kickc.parser.KickCParser; import org.antlr.v4.runtime.tree.TerminalNode; @@ -62,7 +62,7 @@ public class ParseTreeConstantEvaluator extends KickCBaseVisitor private static Long getInteger(ConstantValue constant) { if(constant instanceof ConstantInteger) { - return ((ConstantInteger) constant).getNumber(); + return ((ConstantInteger) constant).getValue(); } else { throw new RuntimeException("Type Mismatch. Constant is not an integer number " + constant); } @@ -70,9 +70,9 @@ public class ParseTreeConstantEvaluator extends KickCBaseVisitor private static Double getDouble(ConstantValue constant) { if(constant instanceof ConstantDouble) { - return ((ConstantDouble) constant).getNumber(); + return ((ConstantDouble) constant).getValue(); } else if(constant instanceof ConstantInteger) { - return ((ConstantInteger) constant).getNumber().doubleValue(); + return ((ConstantInteger) constant).getValue().doubleValue(); } else { throw new RuntimeException("Type Mismatch. Constant is not a number " + constant); } @@ -83,10 +83,10 @@ public class ParseTreeConstantEvaluator extends KickCBaseVisitor case "-": { if(c instanceof ConstantInteger) { ConstantInteger cInt = (ConstantInteger) c; - return new ConstantInteger(-cInt.getNumber()); + return new ConstantInteger(-cInt.getValue()); } else if(c instanceof ConstantDouble) { ConstantDouble cDoub = (ConstantDouble) c; - return new ConstantDouble(-cDoub.getNumber()); + return new ConstantDouble(-cDoub.getValue()); } else { throw new RuntimeException("Type mismatch. Unary Minus cannot handle value " + c); } @@ -96,11 +96,11 @@ public class ParseTreeConstantEvaluator extends KickCBaseVisitor } case "++": { ConstantInteger cInt = (ConstantInteger) c; - return new ConstantInteger(cInt.getNumber() + 1); + return new ConstantInteger(cInt.getValue() + 1); } case "--": { ConstantInteger cInt = (ConstantInteger) c; - return new ConstantInteger(cInt.getNumber() - 1); + return new ConstantInteger(cInt.getValue() - 1); } case "*": { // pointer dereference return null; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java index d15a265f9..d4fd411fb 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass0GenerateStatementSequence.java @@ -5,6 +5,12 @@ import dk.camelot64.kickc.NumberParser; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.*; +import dk.camelot64.kickc.model.symbols.*; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeArray; +import dk.camelot64.kickc.model.types.SymbolTypePointer; import dk.camelot64.kickc.parser.KickCBaseVisitor; import dk.camelot64.kickc.parser.KickCParser; import org.antlr.v4.runtime.ParserRuleContext; @@ -405,21 +411,21 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { } // Add increment ConstantInteger beyondLastVal; - if(rangeFirst.getNumber() > rangeLast.getNumber()) { + if(rangeFirst.getValue() > rangeLast.getValue()) { Statement stmtInc = new StatementAssignment(lValue.getRef(), Operators.DECREMENT, lValue.getRef()); sequence.addStatement(stmtInc); - if(rangeLast.getNumber() == 0) { + if(rangeLast.getValue() == 0) { beyondLastVal = new ConstantInteger(255L); } else { - beyondLastVal = new ConstantInteger(rangeLast.getNumber() - 1); + beyondLastVal = new ConstantInteger(rangeLast.getValue() - 1); } } else { Statement stmtInc = new StatementAssignment(lValue.getRef(), Operators.INCREMENT, lValue.getRef()); sequence.addStatement(stmtInc); - if(rangeLast.getNumber() == 255) { + if(rangeLast.getValue() == 255) { beyondLastVal = new ConstantInteger(0L); } else { - beyondLastVal = new ConstantInteger(rangeLast.getNumber() + 1); + beyondLastVal = new ConstantInteger(rangeLast.getValue() + 1); } } @@ -503,7 +509,7 @@ public class Pass0GenerateStatementSequence extends KickCBaseVisitor { if(ctx.expr() != null) { ConstantValue size = ParseTreeConstantEvaluator.evaluate(ctx.expr()); if(size instanceof ConstantInteger) { - return new SymbolTypeArray(elementType, ((ConstantInteger) size).getNumber().intValue()); + return new SymbolTypeArray(elementType, ((ConstantInteger) size).getValue().intValue()); } else { throw new RuntimeException("Array size not a constant integer " + ctx.getText()); } diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AddTypePromotions.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AddTypePromotions.java index 83a0ee17d..18e3807dd 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1AddTypePromotions.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1AddTypePromotions.java @@ -2,6 +2,12 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeInference; +import dk.camelot64.kickc.model.types.SymbolTypePointer; import java.util.List; import java.util.ListIterator; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertArrayLengths.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertArrayLengths.java index 16ec8efb0..384881307 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertArrayLengths.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertArrayLengths.java @@ -1,6 +1,11 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.types.SymbolTypeArray; /** * Asserts that all arrays with lengths and initializers have matching lengths. diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertNoLValueIntermediate.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertNoLValueIntermediate.java index ae9ba26df..7a01b3edc 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertNoLValueIntermediate.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertNoLValueIntermediate.java @@ -1,6 +1,12 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.LvalueIntermediate; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementLValue; /** * Asserts that all intermediate lvalues have been replaced by something else diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertReturn.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertReturn.java index 789226bb6..c8f2ea7e5 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertReturn.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertReturn.java @@ -1,6 +1,14 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.SymbolRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementConditionalJump; +import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.types.SymbolType; import java.util.Collection; import java.util.LinkedHashSet; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertUsedVars.java b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertUsedVars.java index d34117125..6ad2ca988 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1AssertUsedVars.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1AssertUsedVars.java @@ -1,6 +1,13 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.SymbolRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementConditionalJump; +import dk.camelot64.kickc.model.symbols.Procedure; import java.util.Collection; import java.util.LinkedHashSet; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1Base.java b/src/main/java/dk/camelot64/kickc/passes/Pass1Base.java index 4c4869ac8..d3c0abeb2 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1Base.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1Base.java @@ -3,7 +3,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.CompileLog; import dk.camelot64.kickc.model.ControlFlowGraph; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.ProgramScope; +import dk.camelot64.kickc.model.symbols.ProgramScope; /** * Pass 1 (before SSA optimizations) base class diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1EliminateEmptyBlocks.java b/src/main/java/dk/camelot64/kickc/passes/Pass1EliminateEmptyBlocks.java index 41c64ec39..b690797c2 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1EliminateEmptyBlocks.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1EliminateEmptyBlocks.java @@ -2,6 +2,10 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.CompileLog; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.symbols.Label; +import dk.camelot64.kickc.model.symbols.Symbol; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.SymbolRef; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1EliminateUncalledProcedures.java b/src/main/java/dk/camelot64/kickc/passes/Pass1EliminateUncalledProcedures.java index f6c05a28a..580c21b21 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1EliminateUncalledProcedures.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1EliminateUncalledProcedures.java @@ -1,6 +1,10 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.values.ProcedureRef; import java.util.Collection; import java.util.LinkedHashSet; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1ExtractInlineStrings.java b/src/main/java/dk/camelot64/kickc/passes/Pass1ExtractInlineStrings.java index 4bae23a20..8d2d20888 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1ExtractInlineStrings.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1ExtractInlineStrings.java @@ -1,6 +1,13 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.ConstantString; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.types.SymbolType; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java b/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java index 152a1d78d..028fbcf81 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1FixLValuesLoHi.java @@ -3,6 +3,16 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.LvalueIntermediate; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementLValue; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.symbols.VariableIntermediate; +import dk.camelot64.kickc.model.types.SymbolTypeInference; import java.util.List; import java.util.ListIterator; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateControlFlowGraph.java b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateControlFlowGraph.java index fcfa326cd..9c5052a29 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateControlFlowGraph.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateControlFlowGraph.java @@ -1,6 +1,12 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.statements.*; +import dk.camelot64.kickc.model.symbols.*; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.values.ScopeRef; +import dk.camelot64.kickc.model.values.SymbolRef; import java.util.LinkedHashMap; import java.util.Map; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java index ac0ce09da..a421669e3 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1GenerateSingleStaticAssignmentForm.java @@ -1,6 +1,15 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.*; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.symbols.VariableUnversioned; +import dk.camelot64.kickc.model.symbols.VariableVersion; import java.util.Collection; import java.util.LinkedHashMap; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1ModifiedVarsAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass1ModifiedVarsAnalysis.java index 724dd7d90..626059f01 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1ModifiedVarsAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1ModifiedVarsAnalysis.java @@ -1,6 +1,14 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.values.ScopeRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementLValue; +import dk.camelot64.kickc.model.symbols.Procedure; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java index 542ae3589..555a68b0a 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java @@ -1,6 +1,15 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementReturn; +import dk.camelot64.kickc.model.symbols.*; +import dk.camelot64.kickc.model.types.SymbolType; import java.util.List; import java.util.Set; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java index 258b945c3..ffc5a3ab0 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java @@ -1,6 +1,11 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.*; +import dk.camelot64.kickc.model.symbols.Label; +import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.types.SymbolType; import java.util.Set; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java b/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java index 06d477e12..e82abb5be 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass1TypeInference.java @@ -1,6 +1,12 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.statements.*; +import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.types.SymbolTypeInference; +import dk.camelot64.kickc.model.values.ProcedureRef; import java.util.Stack; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java index 8ba6fa68a..931a024be 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AliasElimination.java @@ -1,6 +1,12 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.symbols.Variable; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertBlocks.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertBlocks.java index cfc4a8df0..ade7acaec 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertBlocks.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertBlocks.java @@ -1,6 +1,13 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementConditionalJump; +import dk.camelot64.kickc.model.statements.StatementJump; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.values.SymbolRef; import java.util.Collection; import java.util.HashSet; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoCallLvalues.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoCallLvalues.java index e5889e83f..320caa11b 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoCallLvalues.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoCallLvalues.java @@ -2,7 +2,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.ControlFlowGraphBaseVisitor; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.StatementCall; +import dk.camelot64.kickc.model.statements.StatementCall; /** Asserts that the program does not contain calls with lValues */ public class Pass2AssertNoCallLvalues extends Pass2SsaAssertion { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoCallParameters.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoCallParameters.java index a23d77cf5..e6867d315 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoCallParameters.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoCallParameters.java @@ -2,8 +2,8 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.ControlFlowGraphBaseVisitor; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.RValue; -import dk.camelot64.kickc.model.StatementCall; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.statements.StatementCall; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoLabels.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoLabels.java index 9b8effab0..be3e1979c 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoLabels.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoLabels.java @@ -2,7 +2,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.ControlFlowGraphBaseVisitor; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.StatementLabel; +import dk.camelot64.kickc.model.statements.StatementLabel; /** Asserts that the graph contains no label statements */ public class Pass2AssertNoLabels extends Pass2SsaAssertion { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoProcs.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoProcs.java index 10dff7749..836b4c25d 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoProcs.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoProcs.java @@ -2,8 +2,8 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.ControlFlowGraphBaseVisitor; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.StatementProcedureBegin; -import dk.camelot64.kickc.model.StatementProcedureEnd; +import dk.camelot64.kickc.model.statements.StatementProcedureBegin; +import dk.camelot64.kickc.model.statements.StatementProcedureEnd; /** Asserts that the graph contains no proc/endproc statements */ public class Pass2AssertNoProcs extends Pass2SsaAssertion { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoReturnValues.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoReturnValues.java index c126c6f4c..9efd3dc8b 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoReturnValues.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertNoReturnValues.java @@ -2,7 +2,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.ControlFlowGraphBaseVisitor; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.StatementReturn; +import dk.camelot64.kickc.model.statements.StatementReturn; /** Asserts that the program does not contain returns with values (as they have been replaced with assignments) */ public class Pass2AssertNoReturnValues extends Pass2SsaAssertion { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSingleAssignment.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSingleAssignment.java index f673f6a5e..eb2400235 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSingleAssignment.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSingleAssignment.java @@ -1,6 +1,11 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementLValue; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; import java.util.LinkedHashMap; import java.util.Map; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSymbols.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSymbols.java index b816c6e3c..8e755ac8d 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSymbols.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertSymbols.java @@ -1,6 +1,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.*; +import dk.camelot64.kickc.model.symbols.*; import java.util.HashSet; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java index 28712674f..2e606e744 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2AssertTypeMatch.java @@ -1,6 +1,11 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeInference; /** * Asserts that types match in all assignments and calculations diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2Base.java b/src/main/java/dk/camelot64/kickc/passes/Pass2Base.java index 7a5d27304..bc02a94fe 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2Base.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2Base.java @@ -3,7 +3,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.CompileLog; import dk.camelot64.kickc.model.ControlFlowGraph; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.ProgramScope; +import dk.camelot64.kickc.model.symbols.ProgramScope; /** Base class for a compiler pass */ public class Pass2Base { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalJumpSimplification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalJumpSimplification.java index 050819573..b6a08dc6e 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalJumpSimplification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConditionalJumpSimplification.java @@ -1,6 +1,12 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementConditionalJump; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantAdditionElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantAdditionElimination.java index c98e01630..474763943 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantAdditionElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantAdditionElimination.java @@ -3,6 +3,10 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementConditionalJump; import java.util.Map; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java index 325c358df..71366b60f 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantIdentification.java @@ -3,6 +3,16 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeArray; +import dk.camelot64.kickc.model.types.SymbolTypeInference; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java index 958b10cd1..589979d4d 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2ConstantInlining.java @@ -1,6 +1,12 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.symbols.Symbol; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.types.SymbolType; import java.util.Collection; import java.util.HashMap; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2CullEmptyBlocks.java b/src/main/java/dk/camelot64/kickc/passes/Pass2CullEmptyBlocks.java index 5ac739f48..548c258b8 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2CullEmptyBlocks.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2CullEmptyBlocks.java @@ -1,6 +1,10 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.symbols.Label; import java.util.ArrayList; import java.util.LinkedHashMap; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2FixInlineConstructors.java b/src/main/java/dk/camelot64/kickc/passes/Pass2FixInlineConstructors.java index 1cf1ebca9..2bf996354 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2FixInlineConstructors.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2FixInlineConstructors.java @@ -3,6 +3,16 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operator; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.ValueList; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.symbols.VariableIntermediate; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeArray; +import dk.camelot64.kickc.model.types.SymbolTypeInference; +import dk.camelot64.kickc.model.types.SymbolTypeInteger; import java.util.ListIterator; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastElimination.java index ca4d23d6b..43dc029f1 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2NopCastElimination.java @@ -2,6 +2,15 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.CastValue; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.SymbolRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeInference; +import dk.camelot64.kickc.model.types.SymbolTypePointer; import java.util.LinkedHashMap; import java.util.ListIterator; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2RedundantPhiElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2RedundantPhiElimination.java index 06acc62a1..383aa1a04 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2RedundantPhiElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2RedundantPhiElimination.java @@ -1,6 +1,10 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; import java.util.LinkedHashMap; import java.util.Map; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2SelfPhiElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass2SelfPhiElimination.java index 7f7b85cf6..f2f48a927 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2SelfPhiElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2SelfPhiElimination.java @@ -2,7 +2,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.ControlFlowGraphBaseVisitor; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.StatementPhiBlock; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; import java.util.Iterator; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java index 49ea24720..6b2d949cd 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaAssertion.java @@ -3,7 +3,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.CompileLog; import dk.camelot64.kickc.model.ControlFlowGraph; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.ProgramScope; +import dk.camelot64.kickc.model.symbols.ProgramScope; /** Assertion checking that a pass 2 representation of the program is consistent */ public abstract class Pass2SsaAssertion { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaOptimization.java b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaOptimization.java index 14c1bb676..e44b1ef93 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2SsaOptimization.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2SsaOptimization.java @@ -1,6 +1,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.*; +import dk.camelot64.kickc.model.symbols.Symbol; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass2UnaryNotSimplification.java b/src/main/java/dk/camelot64/kickc/passes/Pass2UnaryNotSimplification.java index 4aa287651..e89b72336 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass2UnaryNotSimplification.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass2UnaryNotSimplification.java @@ -2,6 +2,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.StatementAssignment; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3AddNopBeforeCallOns.java b/src/main/java/dk/camelot64/kickc/passes/Pass3AddNopBeforeCallOns.java index f7805b4f9..7556ad064 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3AddNopBeforeCallOns.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3AddNopBeforeCallOns.java @@ -6,6 +6,9 @@ package dk.camelot64.kickc.passes; */ import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3AssertNoValueLists.java b/src/main/java/dk/camelot64/kickc/passes/Pass3AssertNoValueLists.java index 71c09eedd..e6cd3552e 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3AssertNoValueLists.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3AssertNoValueLists.java @@ -2,8 +2,8 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.CompileError; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.RValue; -import dk.camelot64.kickc.model.ValueList; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.ValueList; /** * Assert that no value lists still exist inside the code. diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3BlockSequencePlanner.java b/src/main/java/dk/camelot64/kickc/passes/Pass3BlockSequencePlanner.java index f0835d7de..5cb76107f 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3BlockSequencePlanner.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3BlockSequencePlanner.java @@ -1,9 +1,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.ControlFlowBlock; -import dk.camelot64.kickc.model.LabelRef; +import dk.camelot64.kickc.model.values.LabelRef; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.Scope; +import dk.camelot64.kickc.model.symbols.Scope; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3CallGraphAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass3CallGraphAnalysis.java index 49b0bbe33..b411d681f 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3CallGraphAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3CallGraphAnalysis.java @@ -1,6 +1,13 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.symbols.Symbol; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.ProcedureRef; /** Finds the call graph for the control flow graph - identifies all calls in all scopes and creates a graph from these. */ public class Pass3CallGraphAnalysis extends Pass2Base { diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3DominatorsAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass3DominatorsAnalysis.java index 2e5a8aadc..e3ace8d6d 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3DominatorsAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3DominatorsAnalysis.java @@ -1,6 +1,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LabelRef; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesAnalysis.java index 128748693..d7655613a 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesAnalysis.java @@ -5,6 +5,13 @@ package dk.camelot64.kickc.passes; */ import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LabelRef; +import dk.camelot64.kickc.model.values.ProcedureRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.symbols.Procedure; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesEffectiveAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesEffectiveAnalysis.java index dc2a7042a..0b4b2bba8 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesEffectiveAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3LiveRangesEffectiveAnalysis.java @@ -1,6 +1,14 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.symbols.Procedure; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.symbols.Variable; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3LoopAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass3LoopAnalysis.java index 7c29912b8..1cdda8265 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3LoopAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3LoopAnalysis.java @@ -1,6 +1,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LabelRef; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3LoopDepthAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass3LoopDepthAnalysis.java index bbffb6975..3105234d3 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3LoopDepthAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3LoopDepthAnalysis.java @@ -1,6 +1,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LabelRef; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3PhiLifting.java b/src/main/java/dk/camelot64/kickc/passes/Pass3PhiLifting.java index d67dfbfcb..92d66d546 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3PhiLifting.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3PhiLifting.java @@ -1,6 +1,13 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.ConstantValue; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementConditionalJump; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.symbols.*; +import dk.camelot64.kickc.model.values.LabelRef; import java.util.Collection; import java.util.HashMap; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3PhiMemCoalesce.java b/src/main/java/dk/camelot64/kickc/passes/Pass3PhiMemCoalesce.java index 415becf14..4ff7e5c8c 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3PhiMemCoalesce.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3PhiMemCoalesce.java @@ -1,6 +1,10 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.ConstantValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3StatementInfos.java b/src/main/java/dk/camelot64/kickc/passes/Pass3StatementInfos.java index 69ac1a3b2..a73715b9d 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3StatementInfos.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3StatementInfos.java @@ -2,6 +2,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementInfos; +import dk.camelot64.kickc.model.values.LabelRef; import java.util.LinkedHashMap; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3SymbolInfos.java b/src/main/java/dk/camelot64/kickc/passes/Pass3SymbolInfos.java index 97c261d6d..ec75c8b80 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3SymbolInfos.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3SymbolInfos.java @@ -2,6 +2,10 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.symbols.Symbol; +import dk.camelot64.kickc.model.values.SymbolRef; import java.util.LinkedHashMap; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass3VariableRegisterWeightAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass3VariableRegisterWeightAnalysis.java index a0d5bb5c8..66e60f650 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass3VariableRegisterWeightAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass3VariableRegisterWeightAnalysis.java @@ -1,6 +1,12 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementConditionalJump; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; +import dk.camelot64.kickc.model.symbols.Variable; /** * Finds register weights for all variables. diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4AssertNoCpuClobber.java b/src/main/java/dk/camelot64/kickc/passes/Pass4AssertNoCpuClobber.java index d1f943de4..d05125679 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4AssertNoCpuClobber.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4AssertNoCpuClobber.java @@ -4,6 +4,10 @@ import dk.camelot64.kickc.asm.AsmClobber; import dk.camelot64.kickc.asm.AsmProgram; import dk.camelot64.kickc.asm.AsmSegment; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.RValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.symbols.Variable; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java index 045bb2eae..68891cf54 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4CodeGeneration.java @@ -3,6 +3,15 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.asm.*; import dk.camelot64.kickc.fragment.*; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.*; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypeArray; +import dk.camelot64.kickc.model.types.SymbolTypePointer; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4LiveRangeEquivalenceClassesFinalize.java b/src/main/java/dk/camelot64/kickc/passes/Pass4LiveRangeEquivalenceClassesFinalize.java index e16394813..280acb81e 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4LiveRangeEquivalenceClassesFinalize.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4LiveRangeEquivalenceClassesFinalize.java @@ -1,6 +1,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.symbols.Variable; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftCombinations.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftCombinations.java index f7e798e33..7cbf9379a 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftCombinations.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftCombinations.java @@ -3,9 +3,13 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.asm.AsmProgram; import dk.camelot64.kickc.asm.AsmSegment; import dk.camelot64.kickc.fragment.AsmFragmentInstance; -import dk.camelot64.kickc.fragment.AsmFragmentInstanceSpec; import dk.camelot64.kickc.fragment.AsmFragmentTemplateSynthesizer; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.ScopeRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.symbols.ProgramScope; +import dk.camelot64.kickc.model.symbols.Variable; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialAluAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialAluAnalysis.java index c9c358387..55bf5b79e 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialAluAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialAluAnalysis.java @@ -2,6 +2,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; import dk.camelot64.kickc.model.operators.Operators; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; /*** * Find equivalence classes that could be assigned to the special ALU register. diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialInitialize.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialInitialize.java index a6d5247a7..f56a500e3 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialInitialize.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialInitialize.java @@ -1,6 +1,10 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.ConstantVarPointer; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.Variable; import java.util.ArrayList; import java.util.Arrays; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialRegisterAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialRegisterAnalysis.java index 9bbc68e75..c84e5bd33 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialRegisterAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftPotentialRegisterAnalysis.java @@ -5,6 +5,11 @@ import dk.camelot64.kickc.asm.AsmProgram; import dk.camelot64.kickc.fragment.AsmFragmentInstance; import dk.camelot64.kickc.fragment.AsmFragmentTemplateSynthesizer; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementPhiBlock; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftRemains.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftRemains.java index e5cafb65c..6e023bbb0 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftRemains.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftRemains.java @@ -1,6 +1,8 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.symbols.Scope; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftScopeAnalysis.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftScopeAnalysis.java index 503f9cd76..c26778b42 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftScopeAnalysis.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftScopeAnalysis.java @@ -1,6 +1,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.ScopeRef; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.symbols.Scope; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftStatic.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftStatic.java index 3efebac74..5921d6c45 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftStatic.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegisterUpliftStatic.java @@ -1,7 +1,8 @@ package dk.camelot64.kickc.passes; -import dk.camelot64.kickc.fragment.AsmFragmentInstanceSpec; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.symbols.ProgramScope; import java.util.HashSet; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java b/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java index 15cca151a..d25e79971 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4RegistersFinalize.java @@ -1,6 +1,12 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.Scope; +import dk.camelot64.kickc.model.symbols.Variable; +import dk.camelot64.kickc.model.types.SymbolType; +import dk.camelot64.kickc.model.types.SymbolTypePointer; import java.util.Collection; import java.util.LinkedHashMap; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesce.java b/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesce.java index a2fda931b..13c192197 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesce.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesce.java @@ -1,6 +1,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.ScopeRef; import java.util.LinkedHashSet; import java.util.Set; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesceAssignment.java b/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesceAssignment.java index 91fa57131..16c848097 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesceAssignment.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass4ZeroPageCoalesceAssignment.java @@ -1,6 +1,8 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/Pass5UnusedLabelElimination.java b/src/main/java/dk/camelot64/kickc/passes/Pass5UnusedLabelElimination.java index a24da778b..ba29078a2 100644 --- a/src/main/java/dk/camelot64/kickc/passes/Pass5UnusedLabelElimination.java +++ b/src/main/java/dk/camelot64/kickc/passes/Pass5UnusedLabelElimination.java @@ -2,8 +2,8 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.asm.*; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.Statement; -import dk.camelot64.kickc.model.StatementAsm; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAsm; import java.util.ArrayList; import java.util.LinkedHashSet; diff --git a/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java b/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java index 80e9fa6a5..e2e6b5969 100644 --- a/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java +++ b/src/main/java/dk/camelot64/kickc/passes/PassNEliminateUnusedVars.java @@ -1,6 +1,13 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.LValue; +import dk.camelot64.kickc.model.values.VariableRef; +import dk.camelot64.kickc.model.statements.Statement; +import dk.camelot64.kickc.model.statements.StatementAssignment; +import dk.camelot64.kickc.model.statements.StatementCall; +import dk.camelot64.kickc.model.symbols.ConstantVar; +import dk.camelot64.kickc.model.symbols.Variable; import java.util.Collection; import java.util.ListIterator; diff --git a/src/main/java/dk/camelot64/kickc/passes/PassNStatementIndices.java b/src/main/java/dk/camelot64/kickc/passes/PassNStatementIndices.java index 4fe653fd9..19d890854 100644 --- a/src/main/java/dk/camelot64/kickc/passes/PassNStatementIndices.java +++ b/src/main/java/dk/camelot64/kickc/passes/PassNStatementIndices.java @@ -6,7 +6,7 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.ControlFlowBlock; import dk.camelot64.kickc.model.Program; -import dk.camelot64.kickc.model.Statement; +import dk.camelot64.kickc.model.statements.Statement; public class PassNStatementIndices extends Pass2Base { diff --git a/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java b/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java index 3e41d959e..80ad7f966 100644 --- a/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java +++ b/src/main/java/dk/camelot64/kickc/passes/PassNVariableReferenceInfos.java @@ -1,6 +1,9 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.*; +import dk.camelot64.kickc.model.symbols.ConstantVar; import java.util.*; diff --git a/src/main/java/dk/camelot64/kickc/passes/ValueReplacer.java b/src/main/java/dk/camelot64/kickc/passes/ValueReplacer.java index bbd5efdc1..fd1ab79e6 100644 --- a/src/main/java/dk/camelot64/kickc/passes/ValueReplacer.java +++ b/src/main/java/dk/camelot64/kickc/passes/ValueReplacer.java @@ -1,6 +1,8 @@ package dk.camelot64.kickc.passes; import dk.camelot64.kickc.model.*; +import dk.camelot64.kickc.model.values.*; +import dk.camelot64.kickc.model.statements.*; import java.util.ArrayList; import java.util.Collection;