1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Now replacing in both control flow graph and symbol table per default.

This commit is contained in:
Jesper Gravgaard 2018-07-22 16:24:08 +09:00
parent f17422a564
commit 81e214cee3
5 changed files with 10 additions and 21 deletions

View File

@ -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();

View File

@ -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
* *

View File

@ -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));
} }
/** /**

View File

@ -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

View File

@ -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