mirror of
https://gitlab.com/camelot/kickc.git
synced 2025-02-11 01:30:53 +00:00
Now replacing in both control flow graph and symbol table per default.
This commit is contained in:
parent
f17422a564
commit
81e214cee3
@ -35,7 +35,7 @@ public class CompileLog {
|
|||||||
/**
|
/**
|
||||||
* Should the log be output to System.out while being built
|
* Should the log be output to System.out while being built
|
||||||
*/
|
*/
|
||||||
private boolean sysOut = false;
|
private boolean sysOut = true;
|
||||||
|
|
||||||
public CompileLog() {
|
public CompileLog() {
|
||||||
this.log = new StringBuilder();
|
this.log = new StringBuilder();
|
||||||
|
@ -48,12 +48,10 @@ public class Pass2ConstantInlining extends Pass2SsaOptimization {
|
|||||||
|
|
||||||
// Perform alias replacement within the constant values inside the aliases
|
// Perform alias replacement within the constant values inside the aliases
|
||||||
replaceInValues(inline);
|
replaceInValues(inline);
|
||||||
// Replace all usages of the constants in the control flow graph
|
// Replace all usages of the constants in the control flow graph or symbol table
|
||||||
replaceVariables(inline);
|
replaceVariables(inline);
|
||||||
// Remove from symbol table
|
// Remove from symbol table
|
||||||
deleteSymbols(inline.keySet());
|
deleteSymbols(inline.keySet());
|
||||||
// Replace all usages of the constants in constant definitions inside the symbol table
|
|
||||||
replaceInSymbolTable(inline);
|
|
||||||
|
|
||||||
for(ConstantRef constantRef : inline.keySet()) {
|
for(ConstantRef constantRef : inline.keySet()) {
|
||||||
getLog().append("Constant inlined " + constantRef.toString() + " = " + inline.get(constantRef).toString(getProgram()));
|
getLog().append("Constant inlined " + constantRef.toString() + " = " + inline.get(constantRef).toString(getProgram()));
|
||||||
@ -84,15 +82,6 @@ public class Pass2ConstantInlining extends Pass2SsaOptimization {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Replace any alias within the constant defintions inside the symbol table
|
|
||||||
*
|
|
||||||
* @param inline The replacements to make
|
|
||||||
*/
|
|
||||||
private void replaceInSymbolTable(Map<ConstantRef, ConstantValue> inline) {
|
|
||||||
ProgramValueIterator.execute(getScope(), new AliasReplacer(inline));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find all unnamed constants $1 = VIC+$20
|
* Find all unnamed constants $1 = VIC+$20
|
||||||
*
|
*
|
||||||
|
@ -41,12 +41,12 @@ public abstract class Pass2SsaOptimization extends Pass1Base {
|
|||||||
public abstract boolean step();
|
public abstract boolean step();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replace all usages of variables in statements with aliases.
|
* Replace all usages of variables in statements (or symbol table) with aliases.
|
||||||
*
|
*
|
||||||
* @param aliases Variables that have alias values.
|
* @param aliases Variables that have alias values.
|
||||||
*/
|
*/
|
||||||
public void replaceVariables(final Map<? extends SymbolRef, ? extends RValue> aliases) {
|
public void replaceVariables(final Map<? extends SymbolRef, ? extends RValue> aliases) {
|
||||||
ProgramValueIterator.execute(getGraph(), new AliasReplacer(aliases));
|
ProgramValueIterator.execute(getProgram(), new AliasReplacer(aliases));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1030,8 +1030,8 @@ Loop head: prepare::@1 tails: prepare::@1 blocks: prepare::@1 depth: 1
|
|||||||
VARIABLE REGISTER WEIGHTS
|
VARIABLE REGISTER WEIGHTS
|
||||||
(byte*) RASTER
|
(byte*) RASTER
|
||||||
(byte*) SCREEN
|
(byte*) SCREEN
|
||||||
(byte[$0]) buffer1
|
(byte[16*16]) buffer1
|
||||||
(byte[$1]) buffer2
|
(byte[16*16]) buffer2
|
||||||
(void()) flip()
|
(void()) flip()
|
||||||
(byte) flip::c
|
(byte) flip::c
|
||||||
(byte) flip::c#1 1501.5
|
(byte) flip::c#1 1501.5
|
||||||
@ -1823,9 +1823,9 @@ FINAL SYMBOL TABLE
|
|||||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||||
(byte*) SCREEN
|
(byte*) SCREEN
|
||||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||||
(byte[$0]) buffer1
|
(byte[16*16]) buffer1
|
||||||
(const byte[16*16]) buffer1#0 buffer1 = { fill( 16*16, 0) }
|
(const byte[16*16]) buffer1#0 buffer1 = { fill( 16*16, 0) }
|
||||||
(byte[$1]) buffer2
|
(byte[16*16]) buffer2
|
||||||
(const byte[16*16]) buffer2#0 buffer2 = { fill( 16*16, 0) }
|
(const byte[16*16]) buffer2#0 buffer2 = { fill( 16*16, 0) }
|
||||||
(void()) flip()
|
(void()) flip()
|
||||||
(label) flip::@1
|
(label) flip::@1
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
(const byte*) RASTER#0 RASTER = ((byte*))(word/dword/signed dword) 53266
|
||||||
(byte*) SCREEN
|
(byte*) SCREEN
|
||||||
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
(const byte*) SCREEN#0 SCREEN = ((byte*))(word/signed word/dword/signed dword) 1024
|
||||||
(byte[$0]) buffer1
|
(byte[16*16]) buffer1
|
||||||
(const byte[16*16]) buffer1#0 buffer1 = { fill( 16*16, 0) }
|
(const byte[16*16]) buffer1#0 buffer1 = { fill( 16*16, 0) }
|
||||||
(byte[$1]) buffer2
|
(byte[16*16]) buffer2
|
||||||
(const byte[16*16]) buffer2#0 buffer2 = { fill( 16*16, 0) }
|
(const byte[16*16]) buffer2#0 buffer2 = { fill( 16*16, 0) }
|
||||||
(void()) flip()
|
(void()) flip()
|
||||||
(label) flip::@1
|
(label) flip::@1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user