1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-08 17:54:40 +00:00

Removed cast calls to getSymbol()

This commit is contained in:
jespergravgaard 2017-07-21 10:49:28 +02:00
parent 6ef3af4fdf
commit 4c0a9cd241
6 changed files with 11 additions and 8 deletions

View File

@ -186,7 +186,7 @@ public abstract class Scope implements Symbol {
} }
public Label getLabel(LabelRef labelRef) { public Label getLabel(LabelRef labelRef) {
return (Label) symbols.get(labelRef); return (Label) getSymbol(labelRef);
} }
public Procedure addProcedure(String name, SymbolType type) { 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(); abstract RegisterAllocation getAllocation();
@JsonIgnore @JsonIgnore

View File

@ -25,7 +25,7 @@ public class Pass1ProcedureCallParameters extends ControlFlowGraphCopyVisitor {
// Procedure strategy implemented is currently variable-based transfer of parameters/return values // Procedure strategy implemented is currently variable-based transfer of parameters/return values
// Generate parameter passing assignments // Generate parameter passing assignments
ProcedureRef procedureRef = origCall.getProcedure(); ProcedureRef procedureRef = origCall.getProcedure();
Procedure procedure = (Procedure) scope.getSymbol(procedureRef); Procedure procedure = scope.getProcedure(procedureRef);
List<Variable> parameterDecls = procedure.getParameters(); List<Variable> parameterDecls = procedure.getParameters();
List<RValue> parameterValues = origCall.getParameters(); List<RValue> parameterValues = origCall.getParameters();
for (int i = 0; i < parameterDecls.size(); i++) { for (int i = 0; i < parameterDecls.size(); i++) {

View File

@ -23,8 +23,7 @@ public class Pass1ProcedureCallsReturnValue extends ControlFlowGraphCopyVisitor
// Procedure strategy implemented is currently variable-based transfer of parameters/return values // Procedure strategy implemented is currently variable-based transfer of parameters/return values
// Generate return value assignment // Generate return value assignment
ProcedureRef procedureRef = origCall.getProcedure(); ProcedureRef procedureRef = origCall.getProcedure();
Procedure procedure = (Procedure) scope.getSymbol(procedureRef); Procedure procedure = scope.getProcedure(procedureRef);
String procedureName = origCall.getProcedureName(); String procedureName = origCall.getProcedureName();
StatementCall copyCall = new StatementCall(null, procedureName, null); StatementCall copyCall = new StatementCall(null, procedureName, null);
copyCall.setParametersByAssignment(true); copyCall.setParametersByAssignment(true);

View File

@ -27,7 +27,7 @@ public class Pass1TypeInference {
if(statement instanceof StatementProcedureBegin) { if(statement instanceof StatementProcedureBegin) {
StatementProcedureBegin procedureBegin = (StatementProcedureBegin) statement; StatementProcedureBegin procedureBegin = (StatementProcedureBegin) statement;
ProcedureRef procedureRef = procedureBegin.getProcedure(); ProcedureRef procedureRef = procedureBegin.getProcedure();
Procedure procedure = (Procedure) programScope.getSymbol(procedureRef); Procedure procedure = programScope.getProcedure(procedureRef);
scopes.push(procedure); scopes.push(procedure);
} else if(statement instanceof StatementProcedureEnd) { } else if(statement instanceof StatementProcedureEnd) {
scopes.pop(); scopes.pop();

View File

@ -93,7 +93,7 @@ public class Pass2AssertSymbols extends Pass2SsaAssertion {
@Override @Override
public Void visitProcedureBegin(StatementProcedureBegin statement) { public Void visitProcedureBegin(StatementProcedureBegin statement) {
ProcedureRef procedureRef = statement.getProcedure(); ProcedureRef procedureRef = statement.getProcedure();
Procedure procedure = (Procedure) programScope.getSymbol(procedureRef); Procedure procedure = programScope.getProcedure(procedureRef);
symbols.add(procedure); symbols.add(procedure);
return super.visitProcedureBegin(statement); return super.visitProcedureBegin(statement);
} }
@ -101,7 +101,7 @@ public class Pass2AssertSymbols extends Pass2SsaAssertion {
@Override @Override
public Void visitProcedureEnd(StatementProcedureEnd statement) { public Void visitProcedureEnd(StatementProcedureEnd statement) {
ProcedureRef procedureRef = statement.getProcedure(); ProcedureRef procedureRef = statement.getProcedure();
Procedure procedure = (Procedure) programScope.getSymbol(procedureRef); Procedure procedure = programScope.getProcedure(procedureRef);
symbols.add(procedure); symbols.add(procedure);
return super.visitProcedureEnd(statement); return super.visitProcedureEnd(statement);
} }

View File

@ -64,7 +64,7 @@ public class Pass2CullEmptyBlocks extends Pass2SsaOptimization {
phiFixVisitor.visitBlock(successor); phiFixVisitor.visitBlock(successor);
getGraph().getAllBlocks().remove(removeBlock); getGraph().getAllBlocks().remove(removeBlock);
LabelRef removeBlockLabelRef = removeBlock.getLabel(); LabelRef removeBlockLabelRef = removeBlock.getLabel();
Label removeBlockLabel = (Label) getSymbols().getSymbol(removeBlockLabelRef); Label removeBlockLabel = getSymbols().getLabel(removeBlockLabelRef);
removeBlockLabel.getScope().remove(removeBlockLabel); removeBlockLabel.getScope().remove(removeBlockLabel);
log.append("Culled Empty Block " + removeBlockLabel.getTypedName()); log.append("Culled Empty Block " + removeBlockLabel.getTypedName());
} }