1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2025-02-03 09:31:40 +00:00

Working on static initialization rewrite _init(). #257

This commit is contained in:
jespergravgaard 2020-06-19 23:28:14 +02:00
parent 5779f3169b
commit 435e358c8d
6 changed files with 40 additions and 3 deletions

1
.idea/encodings.xml generated
View File

@ -2,6 +2,7 @@
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

25
.idea/jarRepositories.xml generated Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="project.local" />
<option name="name" value="project" />
<option name="url" value="file:$PROJECT_DIR$/repo" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

View File

@ -213,7 +213,7 @@ public class Compiler {
if(getLog().isVerboseStatementSequence()) {
getLog().append("\nSTATEMENTS");
for(Procedure procedure : program.getScope().getAllProcedures(true)) {
final ProcedureCompilation procedureCompilation = program.createProcedureCompilation(procedure.getRef());
final ProcedureCompilation procedureCompilation = program.getProcedureCompilation(procedure.getRef());
getLog().append(procedureCompilation.getStatementSequence().toString(program));
}
}

View File

@ -267,6 +267,10 @@ public class Pass1GenerateSingleStaticAssignmentForm extends Pass1Base {
}
}
}
if(procedure.getRef().equals(program.getStartProcedure())) {
// TODO: Does this handle main() / _start() correctly?
program.getLog().append("Does this handle main() / _start() correctly?");
}
}
return predecessors;
}

View File

@ -33,12 +33,19 @@ public abstract class Pass4MemoryCoalesce extends Pass2Base {
ArrayList<ScopeRef> threadHeads = new ArrayList<>();
Collection<Procedure> procedures = program.getScope().getAllProcedures(true);
for(Procedure procedure : procedures) {
if(procedure.getFullName().equals(SymbolRef.MAIN_PROC_NAME)) {
if(procedure.getRef().equals(program.getStartProcedure())) {
// TODO: Handles main() correctly?
threadHeads.add(procedure.getRef());
continue;
}
if(Pass2ConstantIdentification.isAddressOfUsed(procedure.getRef(), program)) {
threadHeads.add(procedure.getRef());
continue;
}
if(procedure.getInterruptType()!=null) {
// TODO: Handles Interrupts correctly?
threadHeads.add(procedure.getRef());
continue;
}
}
return threadHeads;

View File

@ -70,7 +70,7 @@ public class PassNCalcLiveRangesEffectiveCallPaths extends PassNCalcBase<LiveRan
if(callPaths == null) {
callPaths = new LiveRangeVariablesEffectiveCallPaths.CallPaths(procedureRef);
if(procedure.getInterruptType()!=null || Pass2ConstantIdentification.isAddressOfUsed(procedureRef, getProgram())) {
if(procedure.getInterruptType()!=null || Pass2ConstantIdentification.isAddressOfUsed(procedureRef, getProgram()) || procedureRef.equals(getProgram().getStartProcedure())) {
// Interrupt is called outside procedure scope - create initial call-path.
ArrayList<CallGraph.CallBlock.Call> rootPath = new ArrayList<>();
ArrayList<VariableRef> rootAlive = new ArrayList<>();