mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-02-09 03:30:40 +00:00
Working on static initialization rewrite _init(). #257
This commit is contained in:
parent
5779f3169b
commit
435e358c8d
1
.idea/encodings.xml
generated
1
.idea/encodings.xml
generated
@ -2,6 +2,7 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="Encoding">
|
<component name="Encoding">
|
||||||
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
|
<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" />
|
<file url="PROJECT" charset="UTF-8" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
25
.idea/jarRepositories.xml
generated
Normal file
25
.idea/jarRepositories.xml
generated
Normal 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>
|
@ -213,7 +213,7 @@ public class Compiler {
|
|||||||
if(getLog().isVerboseStatementSequence()) {
|
if(getLog().isVerboseStatementSequence()) {
|
||||||
getLog().append("\nSTATEMENTS");
|
getLog().append("\nSTATEMENTS");
|
||||||
for(Procedure procedure : program.getScope().getAllProcedures(true)) {
|
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));
|
getLog().append(procedureCompilation.getStatementSequence().toString(program));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
return predecessors;
|
||||||
}
|
}
|
||||||
|
@ -33,12 +33,19 @@ public abstract class Pass4MemoryCoalesce extends Pass2Base {
|
|||||||
ArrayList<ScopeRef> threadHeads = new ArrayList<>();
|
ArrayList<ScopeRef> threadHeads = new ArrayList<>();
|
||||||
Collection<Procedure> procedures = program.getScope().getAllProcedures(true);
|
Collection<Procedure> procedures = program.getScope().getAllProcedures(true);
|
||||||
for(Procedure procedure : procedures) {
|
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());
|
threadHeads.add(procedure.getRef());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(Pass2ConstantIdentification.isAddressOfUsed(procedure.getRef(), program)) {
|
if(Pass2ConstantIdentification.isAddressOfUsed(procedure.getRef(), program)) {
|
||||||
threadHeads.add(procedure.getRef());
|
threadHeads.add(procedure.getRef());
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(procedure.getInterruptType()!=null) {
|
||||||
|
// TODO: Handles Interrupts correctly?
|
||||||
|
threadHeads.add(procedure.getRef());
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return threadHeads;
|
return threadHeads;
|
||||||
|
@ -70,7 +70,7 @@ public class PassNCalcLiveRangesEffectiveCallPaths extends PassNCalcBase<LiveRan
|
|||||||
if(callPaths == null) {
|
if(callPaths == null) {
|
||||||
callPaths = new LiveRangeVariablesEffectiveCallPaths.CallPaths(procedureRef);
|
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.
|
// Interrupt is called outside procedure scope - create initial call-path.
|
||||||
ArrayList<CallGraph.CallBlock.Call> rootPath = new ArrayList<>();
|
ArrayList<CallGraph.CallBlock.Call> rootPath = new ArrayList<>();
|
||||||
ArrayList<VariableRef> rootAlive = new ArrayList<>();
|
ArrayList<VariableRef> rootAlive = new ArrayList<>();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user