From 4c0a9cd2410e6398b8aa6b9565a9d4d52a013fa4 Mon Sep 17 00:00:00 2001 From: jespergravgaard Date: Fri, 21 Jul 2017 10:49:28 +0200 Subject: [PATCH] Removed cast calls to getSymbol() --- src/dk/camelot64/kickc/icl/Scope.java | 6 +++++- .../kickc/passes/Pass1ProcedureCallParameters.java | 2 +- .../kickc/passes/Pass1ProcedureCallsReturnValue.java | 3 +-- src/dk/camelot64/kickc/passes/Pass1TypeInference.java | 2 +- src/dk/camelot64/kickc/passes/Pass2AssertSymbols.java | 4 ++-- src/dk/camelot64/kickc/passes/Pass2CullEmptyBlocks.java | 2 +- 6 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/dk/camelot64/kickc/icl/Scope.java b/src/dk/camelot64/kickc/icl/Scope.java index eff2218be..917bf3dce 100644 --- a/src/dk/camelot64/kickc/icl/Scope.java +++ b/src/dk/camelot64/kickc/icl/Scope.java @@ -186,7 +186,7 @@ public abstract class Scope implements Symbol { } public Label getLabel(LabelRef labelRef) { - return (Label) symbols.get(labelRef); + return (Label) getSymbol(labelRef); } public Procedure addProcedure(String name, SymbolType type) { @@ -208,6 +208,10 @@ public abstract class Scope implements Symbol { } } + public Procedure getProcedure(ProcedureRef ref) { + return (Procedure) getSymbol(ref); + } + abstract RegisterAllocation getAllocation(); @JsonIgnore diff --git a/src/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java b/src/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java index 030241e30..830846641 100644 --- a/src/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java +++ b/src/dk/camelot64/kickc/passes/Pass1ProcedureCallParameters.java @@ -25,7 +25,7 @@ public class Pass1ProcedureCallParameters extends ControlFlowGraphCopyVisitor { // Procedure strategy implemented is currently variable-based transfer of parameters/return values // Generate parameter passing assignments ProcedureRef procedureRef = origCall.getProcedure(); - Procedure procedure = (Procedure) scope.getSymbol(procedureRef); + Procedure procedure = scope.getProcedure(procedureRef); List parameterDecls = procedure.getParameters(); List parameterValues = origCall.getParameters(); for (int i = 0; i < parameterDecls.size(); i++) { diff --git a/src/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java b/src/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java index 9a9acb78c..5bec00a26 100644 --- a/src/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java +++ b/src/dk/camelot64/kickc/passes/Pass1ProcedureCallsReturnValue.java @@ -23,8 +23,7 @@ public class Pass1ProcedureCallsReturnValue extends ControlFlowGraphCopyVisitor // Procedure strategy implemented is currently variable-based transfer of parameters/return values // Generate return value assignment ProcedureRef procedureRef = origCall.getProcedure(); - Procedure procedure = (Procedure) scope.getSymbol(procedureRef); - + Procedure procedure = scope.getProcedure(procedureRef); String procedureName = origCall.getProcedureName(); StatementCall copyCall = new StatementCall(null, procedureName, null); copyCall.setParametersByAssignment(true); diff --git a/src/dk/camelot64/kickc/passes/Pass1TypeInference.java b/src/dk/camelot64/kickc/passes/Pass1TypeInference.java index 5a8a2b7a3..70788af57 100644 --- a/src/dk/camelot64/kickc/passes/Pass1TypeInference.java +++ b/src/dk/camelot64/kickc/passes/Pass1TypeInference.java @@ -27,7 +27,7 @@ public class Pass1TypeInference { if(statement instanceof StatementProcedureBegin) { StatementProcedureBegin procedureBegin = (StatementProcedureBegin) statement; ProcedureRef procedureRef = procedureBegin.getProcedure(); - Procedure procedure = (Procedure) programScope.getSymbol(procedureRef); + Procedure procedure = programScope.getProcedure(procedureRef); scopes.push(procedure); } else if(statement instanceof StatementProcedureEnd) { scopes.pop(); diff --git a/src/dk/camelot64/kickc/passes/Pass2AssertSymbols.java b/src/dk/camelot64/kickc/passes/Pass2AssertSymbols.java index dd9fe5fb6..6cb4cdfce 100644 --- a/src/dk/camelot64/kickc/passes/Pass2AssertSymbols.java +++ b/src/dk/camelot64/kickc/passes/Pass2AssertSymbols.java @@ -93,7 +93,7 @@ public class Pass2AssertSymbols extends Pass2SsaAssertion { @Override public Void visitProcedureBegin(StatementProcedureBegin statement) { ProcedureRef procedureRef = statement.getProcedure(); - Procedure procedure = (Procedure) programScope.getSymbol(procedureRef); + Procedure procedure = programScope.getProcedure(procedureRef); symbols.add(procedure); return super.visitProcedureBegin(statement); } @@ -101,7 +101,7 @@ public class Pass2AssertSymbols extends Pass2SsaAssertion { @Override public Void visitProcedureEnd(StatementProcedureEnd statement) { ProcedureRef procedureRef = statement.getProcedure(); - Procedure procedure = (Procedure) programScope.getSymbol(procedureRef); + Procedure procedure = programScope.getProcedure(procedureRef); symbols.add(procedure); return super.visitProcedureEnd(statement); } diff --git a/src/dk/camelot64/kickc/passes/Pass2CullEmptyBlocks.java b/src/dk/camelot64/kickc/passes/Pass2CullEmptyBlocks.java index 761a5ef0f..33de3f60f 100644 --- a/src/dk/camelot64/kickc/passes/Pass2CullEmptyBlocks.java +++ b/src/dk/camelot64/kickc/passes/Pass2CullEmptyBlocks.java @@ -64,7 +64,7 @@ public class Pass2CullEmptyBlocks extends Pass2SsaOptimization { phiFixVisitor.visitBlock(successor); getGraph().getAllBlocks().remove(removeBlock); LabelRef removeBlockLabelRef = removeBlock.getLabel(); - Label removeBlockLabel = (Label) getSymbols().getSymbol(removeBlockLabelRef); + Label removeBlockLabel = getSymbols().getLabel(removeBlockLabelRef); removeBlockLabel.getScope().remove(removeBlockLabel); log.append("Culled Empty Block " + removeBlockLabel.getTypedName()); }