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:
parent
5779f3169b
commit
435e358c8d
1
.idea/encodings.xml
generated
1
.idea/encodings.xml
generated
@ -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
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()) {
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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<>();
|
||||
|
Loading…
x
Reference in New Issue
Block a user