diff --git a/ChangeLog b/ChangeLog index f60eca1..b84a09a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Tue May 26 13:23:56 2009 Minero Aoki + + * net/loveruby/cflat/asm: refactoring: rename class: AsmStatistics + -> Statistics. + + * net/loveruby/cflat/sysdep/x86/CodeGenerator.java: follow it. + Tue May 26 13:18:52 2009 Minero Aoki * net/loveruby/cflat/asm: refactoring: rename class: AsmOperand -> diff --git a/net/loveruby/cflat/asm/AbsoluteAddress.java b/net/loveruby/cflat/asm/AbsoluteAddress.java index 18dbcc6..08a67ef 100644 --- a/net/loveruby/cflat/asm/AbsoluteAddress.java +++ b/net/loveruby/cflat/asm/AbsoluteAddress.java @@ -11,7 +11,7 @@ public class AbsoluteAddress extends Operand { return this.register; } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { register.collectStatistics(stats); } diff --git a/net/loveruby/cflat/asm/Assembly.java b/net/loveruby/cflat/asm/Assembly.java index 1f0d5dd..1d8c639 100644 --- a/net/loveruby/cflat/asm/Assembly.java +++ b/net/loveruby/cflat/asm/Assembly.java @@ -19,7 +19,7 @@ abstract public class Assembly { return false; } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { // does nothing by default. } diff --git a/net/loveruby/cflat/asm/BaseSymbol.java b/net/loveruby/cflat/asm/BaseSymbol.java index 8b11c2f..00ff0f9 100644 --- a/net/loveruby/cflat/asm/BaseSymbol.java +++ b/net/loveruby/cflat/asm/BaseSymbol.java @@ -5,7 +5,7 @@ abstract public class BaseSymbol implements Symbol { return false; } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { stats.symbolUsed(this); } diff --git a/net/loveruby/cflat/asm/DirectMemoryReference.java b/net/loveruby/cflat/asm/DirectMemoryReference.java index 6f9dfd6..c581808 100644 --- a/net/loveruby/cflat/asm/DirectMemoryReference.java +++ b/net/loveruby/cflat/asm/DirectMemoryReference.java @@ -11,7 +11,7 @@ public class DirectMemoryReference extends MemoryReference { return this.value; } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { value.collectStatistics(stats); } diff --git a/net/loveruby/cflat/asm/ImmediateValue.java b/net/loveruby/cflat/asm/ImmediateValue.java index 12b167a..8e479a9 100644 --- a/net/loveruby/cflat/asm/ImmediateValue.java +++ b/net/loveruby/cflat/asm/ImmediateValue.java @@ -21,7 +21,7 @@ public class ImmediateValue extends Operand { return this.expr; } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { // does nothing } diff --git a/net/loveruby/cflat/asm/IndirectMemoryReference.java b/net/loveruby/cflat/asm/IndirectMemoryReference.java index b90ff1d..94aa05f 100644 --- a/net/loveruby/cflat/asm/IndirectMemoryReference.java +++ b/net/loveruby/cflat/asm/IndirectMemoryReference.java @@ -39,7 +39,7 @@ public class IndirectMemoryReference extends MemoryReference { return base; } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { base.collectStatistics(stats); } diff --git a/net/loveruby/cflat/asm/Instruction.java b/net/loveruby/cflat/asm/Instruction.java index 7df7901..708ea1b 100644 --- a/net/loveruby/cflat/asm/Instruction.java +++ b/net/loveruby/cflat/asm/Instruction.java @@ -80,7 +80,7 @@ public class Instruction extends Assembly { return (Symbol)ref.value(); } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { stats.instructionUsed(mnemonic); for (int i = 0; i < operands.length; i++) { operands[i].collectStatistics(stats); diff --git a/net/loveruby/cflat/asm/IntegerLiteral.java b/net/loveruby/cflat/asm/IntegerLiteral.java index 374db11..40f545b 100644 --- a/net/loveruby/cflat/asm/IntegerLiteral.java +++ b/net/loveruby/cflat/asm/IntegerLiteral.java @@ -40,7 +40,7 @@ public class IntegerLiteral implements Literal { return toSource(); } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { // does nothing } diff --git a/net/loveruby/cflat/asm/Literal.java b/net/loveruby/cflat/asm/Literal.java index ce1d29d..318bd90 100644 --- a/net/loveruby/cflat/asm/Literal.java +++ b/net/loveruby/cflat/asm/Literal.java @@ -3,7 +3,7 @@ package net.loveruby.cflat.asm; public interface Literal extends Comparable { public String toSource(); public String toSource(SymbolTable table); - public void collectStatistics(AsmStatistics stats); + public void collectStatistics(Statistics stats); public boolean isZero(); public Literal plus(long diff); public int cmp(IntegerLiteral i); diff --git a/net/loveruby/cflat/asm/Operand.java b/net/loveruby/cflat/asm/Operand.java index 9ad2a77..a2441ca 100644 --- a/net/loveruby/cflat/asm/Operand.java +++ b/net/loveruby/cflat/asm/Operand.java @@ -15,7 +15,7 @@ abstract public class Operand implements OperandPattern { return null; } - abstract public void collectStatistics(AsmStatistics stats); + abstract public void collectStatistics(Statistics stats); // default implementation public boolean match(Operand operand) { diff --git a/net/loveruby/cflat/asm/Register.java b/net/loveruby/cflat/asm/Register.java index ec8e1e9..54b784f 100644 --- a/net/loveruby/cflat/asm/Register.java +++ b/net/loveruby/cflat/asm/Register.java @@ -5,7 +5,7 @@ abstract public class Register extends Operand { return true; } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { stats.registerUsed(this); } diff --git a/net/loveruby/cflat/asm/AsmStatistics.java b/net/loveruby/cflat/asm/Statistics.java similarity index 90% rename from net/loveruby/cflat/asm/AsmStatistics.java rename to net/loveruby/cflat/asm/Statistics.java index 0c6e562..b30017a 100644 --- a/net/loveruby/cflat/asm/AsmStatistics.java +++ b/net/loveruby/cflat/asm/Statistics.java @@ -1,20 +1,20 @@ package net.loveruby.cflat.asm; import java.util.*; -public class AsmStatistics { +public class Statistics { protected Map registerUsage; protected Map insnUsage; protected Map symbolUsage; - static public AsmStatistics collect(List assemblies) { - AsmStatistics stats = new AsmStatistics(); + static public Statistics collect(List assemblies) { + Statistics stats = new Statistics(); for (Assembly asm : assemblies) { asm.collectStatistics(stats); } return stats; } - public AsmStatistics() { + public Statistics() { registerUsage = new HashMap(); insnUsage = new HashMap(); symbolUsage = new HashMap(); diff --git a/net/loveruby/cflat/asm/SuffixedSymbol.java b/net/loveruby/cflat/asm/SuffixedSymbol.java index 438deb9..0205edb 100644 --- a/net/loveruby/cflat/asm/SuffixedSymbol.java +++ b/net/loveruby/cflat/asm/SuffixedSymbol.java @@ -13,7 +13,7 @@ public class SuffixedSymbol implements Symbol { return false; } - public void collectStatistics(AsmStatistics stats) { + public void collectStatistics(Statistics stats) { base.collectStatistics(stats); } diff --git a/net/loveruby/cflat/sysdep/x86/CodeGenerator.java b/net/loveruby/cflat/sysdep/x86/CodeGenerator.java index 6d944ea..2b8a0ca 100644 --- a/net/loveruby/cflat/sysdep/x86/CodeGenerator.java +++ b/net/loveruby/cflat/sysdep/x86/CodeGenerator.java @@ -384,7 +384,7 @@ public class CodeGenerator AssemblyFile file, DefinedFunction func) { AssemblyFile body = compileStmts(func); List bodyAsms = optimize(body.assemblies()); - AsmStatistics stats = AsmStatistics.collect(bodyAsms); + Statistics stats = Statistics.collect(bodyAsms); bodyAsms = reduceLabels(bodyAsms, stats); List saveRegs = usedCalleeSavedRegistersWithoutBP(stats); long saveRegsBytes = stackSizeFromWordNum(saveRegs.size()); @@ -476,7 +476,8 @@ public class CodeGenerator // #@@} // #@@range/reduceLabels{ - private List reduceLabels(List assemblies, AsmStatistics stats) { + private List reduceLabels( + List assemblies, Statistics stats) { List result = new ArrayList(); for (Assembly asm : assemblies) { if (asm.isLabel() && ! stats.doesSymbolUsed((Label)asm)) { @@ -490,7 +491,7 @@ public class CodeGenerator } // #@@} - private List usedCalleeSavedRegistersWithoutBP(AsmStatistics stats) { + private List usedCalleeSavedRegistersWithoutBP(Statistics stats) { List result = new ArrayList(); for (Register reg : calleeSavedRegisters()) { if (stats.doesRegisterUsed(reg) && !reg.equals(bp())) {