|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcoins.backend.gen.CodeGenerator
coins.backend.gen.CodeGenerator_x86
| Nested Class Summary | |
(package private) class |
CodeGenerator_x86.RewrState
State label for rewriting engine. |
(package private) class |
CodeGenerator_x86.State
State label for instruction selection engine. |
(package private) static class |
CodeGenerator_x86.X86Attr
X86's function attribute |
| Nested classes inherited from class coins.backend.gen.CodeGenerator |
CodeGenerator.FunctionAttr, CodeGenerator.LexpToString, CodeGenerator.Match |
| Field Summary | |
(package private) static int |
MAXREGPARAM
|
(package private) ImList |
regCallClobbers
|
(package private) CodeGenerator_x86.State[] |
stateVec
State vector for labeling LIR nodes. |
| Fields inherited from class coins.backend.gen.CodeGenerator |
addrType, asmWriter, convention, debOut, disableRewrite, F128, F32, F64, func, funcAttrTbl, I16, I32, I64, I8, INLINECOPYUNIT, lexpConv, lir, localEarlyRewritingTrig, localLateRewritingTrig, machineName, machineParams, module, optSpeed, ProcessFramesTrig, root, typeParamWord |
| Constructor Summary | |
CodeGenerator_x86()
Create code generator engine. |
|
| Method Summary | |
int |
alignForType(int type)
Return alignment for type. |
(package private) java.lang.String |
defaultRegsetForType(int type)
Return default register set for type. |
Transformer[] |
earlyRewritingSequence()
Return early time pre-rewriting sequence. |
(package private) java.lang.String |
emitAfter(java.lang.String x,
java.lang.String y)
|
(package private) void |
emitBeginningOfSegment(java.io.PrintWriter out,
java.lang.String segment)
Emit beginning of segment |
(package private) void |
emitCommon(java.io.PrintWriter out,
SymStatic symbol,
int bytes)
Emit data common |
(package private) void |
emitData(java.io.PrintWriter out,
int type,
LirNode node)
Emit data |
(package private) java.lang.String |
emitLir(LirNode node)
Expand emit-macro for LirNode. |
(package private) java.lang.String |
emitList(ImList form,
boolean topLevel)
Expand emit-macro for list form. |
(package private) boolean |
equalArg(LirNode x,
LirNode y)
Return true if variable x and y are same. |
(package private) java.lang.Object |
expandBuildMacro(ImList form)
Expand building-macro. |
(package private) java.lang.String |
floatSizeSuffix(java.lang.Object arg)
Return floating point memory's size. |
(package private) int |
fregNum(java.lang.Object operand)
Return nonnegative number if operand is "%fX" register. |
(package private) int |
getCost1(LirNode t,
int goal)
Return the cost for LIR node t and goal nonterminal goal. |
(package private) int |
getCost2(LirNode t,
int goal)
|
(package private) Rule |
getRule(LirNode t,
int goal)
Return the chosen rule for LIR node t and goal nonterminal goal. |
(package private) void |
initLabeling(LirFactory lir)
Initialize for labeling. |
(package private) void |
initRewriteLabeling()
Initialization for rewriting. |
(package private) java.lang.Object |
jmac1(LirNode x)
Decode SUBREG node. |
(package private) java.lang.String |
jmac10(java.lang.String x)
|
(package private) java.lang.String |
jmac11(java.lang.String x)
|
(package private) java.lang.String |
jmac12(java.lang.String type,
java.lang.String x)
|
(package private) java.lang.String |
jmac13(java.lang.String base,
java.lang.String index)
|
(package private) java.lang.String |
jmac14(java.lang.String con,
java.lang.String reg)
|
(package private) java.lang.String |
jmac15(java.lang.String reg,
java.lang.String scale)
|
(package private) java.lang.String |
jmac16(java.lang.String x)
Return lower half register name. |
(package private) java.lang.String |
jmac17(java.lang.String x)
Return lowest byte register name. |
(package private) java.lang.String |
jmac18(java.lang.String x)
Return lower 32bit of memory/register/constant operand. |
(package private) java.lang.String |
jmac19(java.lang.String x)
Return upper 32bit of memory/register/constant operand. |
(package private) java.lang.Object |
jmac2()
|
(package private) java.lang.String |
jmac20(java.lang.Object f)
Generate prologue sequence. |
(package private) java.lang.String |
jmac21(java.lang.Object f,
java.lang.String rettype)
Generate epilogue sequence. |
(package private) java.lang.String |
jmac22(java.lang.String con)
|
(package private) java.lang.String |
jmac23(java.lang.String x)
|
(package private) java.lang.String |
jmac24(java.lang.String x)
|
(package private) java.lang.String |
jmac25(java.lang.String format,
java.lang.Object args)
|
(package private) java.lang.Object |
jmac3()
|
(package private) java.lang.Object |
jmac4()
|
(package private) java.lang.Object |
jmac5()
|
(package private) java.lang.String |
jmac6(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac7(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac8(java.lang.String x,
java.lang.String y)
|
(package private) java.lang.String |
jmac9(java.lang.String x)
|
(package private) void |
labelTree(LirNode t)
Label LIR tree t. |
Transformer[] |
lateRewritingSequence()
Return late time pre-rewriting sequence. |
(package private) java.lang.String |
makeAsmSymbol(java.lang.String symbol)
Convert symbol to assembler form. |
(package private) int |
makeVaStart(LirNode arg)
Return offset for va_start position. |
(package private) CodeGenerator.FunctionAttr |
newFunctionAttr(Function func)
Prepare new function attribute information. |
(package private) void |
peepHoleOpt(BiList list)
Postprocess list-form assembler source. |
(package private) void |
postRewriteFloatOps(BiList list)
Postrewrite floating point instructions. |
(package private) java.lang.Object |
quiltLir(LirNode node)
Expand building-macro, for LirNode |
(package private) LirNode |
returnReg(int type)
Return the register for value returned. |
(package private) LirNode |
rewriteCall(LirNode node,
BiList pre,
BiList post)
Rewrite CALL node. |
(package private) LirNode |
rewriteEpilogue(LirNode node,
BiList pre)
Rewrite EPILOGUE |
(package private) LirNode |
rewriteFrame(LirNode node)
Rewrite FRAME node to target machine form. |
(package private) LirNode |
rewritePrologue(LirNode node,
BiList post)
Rewrite PROLOGUE |
(package private) LirNode |
rewriteTree(LirNode tree,
java.lang.String phase,
BiList pre,
BiList post)
Rewrite L-expression. |
(package private) java.lang.String |
segmentForConst()
Return segment for read-only constant. |
(package private) void |
setAllocaCalled()
Set alloca called. |
(package private) java.lang.String |
showLabel(LirNode t)
Return label state |
(package private) int |
startNT()
Return start nonterminal symbol. |
(package private) LirNode |
stripConv(LirNode tree)
|
(package private) int |
tregNum(java.lang.Object operand)
Return nonnegative number if operand is "%tX" register. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
CodeGenerator_x86.State[] stateVec
ImList regCallClobbers
static final int MAXREGPARAM
| Constructor Detail |
public CodeGenerator_x86()
| Method Detail |
void initRewriteLabeling()
CodeGenerator
initRewriteLabeling in class CodeGenerator
LirNode rewriteTree(LirNode tree,
java.lang.String phase,
BiList pre,
BiList post)
rewriteTree in class CodeGeneratorjava.lang.String defaultRegsetForType(int type)
defaultRegsetForType in class CodeGeneratorvoid initLabeling(LirFactory lir)
CodeGenerator
initLabeling in class CodeGeneratorjava.lang.String showLabel(LirNode t)
CodeGenerator
showLabel in class CodeGeneratorvoid labelTree(LirNode t)
CodeGenerator
labelTree in class CodeGenerator
Rule getRule(LirNode t,
int goal)
CodeGenerator
getRule in class CodeGenerator
int getCost1(LirNode t,
int goal)
CodeGenerator
getCost1 in class CodeGenerator
int getCost2(LirNode t,
int goal)
getCost2 in class CodeGeneratorint startNT()
CodeGenerator
startNT in class CodeGeneratorjava.lang.Object expandBuildMacro(ImList form)
expandBuildMacro in class CodeGeneratorjava.lang.Object quiltLir(LirNode node)
quiltLir in class CodeGenerator
java.lang.String emitList(ImList form,
boolean topLevel)
emitList in class CodeGeneratorjava.lang.String emitLir(LirNode node)
emitLir in class CodeGeneratorCodeGenerator.FunctionAttr newFunctionAttr(Function func)
CodeGenerator
newFunctionAttr in class CodeGeneratorvoid setAllocaCalled()
int makeVaStart(LirNode arg)
boolean equalArg(LirNode x,
LirNode y)
CodeGenerator
equalArg in class CodeGeneratorLirNode stripConv(LirNode tree)
LirNode rewriteFrame(LirNode node)
rewriteFrame in class CodeGeneratorpublic Transformer[] earlyRewritingSequence()
earlyRewritingSequence in class CodeGeneratorpublic Transformer[] lateRewritingSequence()
lateRewritingSequence in class CodeGenerator
LirNode rewritePrologue(LirNode node,
BiList post)
rewritePrologue in class CodeGeneratorLirNode returnReg(int type)
LirNode rewriteEpilogue(LirNode node,
BiList pre)
rewriteEpilogue in class CodeGenerator
LirNode rewriteCall(LirNode node,
BiList pre,
BiList post)
rewriteCall in class CodeGeneratorvoid peepHoleOpt(BiList list)
peepHoleOpt in class CodeGeneratorlist - assembler source in list form.void postRewriteFloatOps(BiList list)
int tregNum(java.lang.Object operand)
operand - to be tested.
int fregNum(java.lang.Object operand)
operand - to be tested.
java.lang.String floatSizeSuffix(java.lang.Object arg)
arg - memory operand list.
java.lang.Object jmac1(LirNode x)
java.lang.Object jmac2()
java.lang.Object jmac3()
java.lang.Object jmac4()
java.lang.Object jmac5()
java.lang.String jmac6(java.lang.String x,
java.lang.String y)
java.lang.String emitAfter(java.lang.String x,
java.lang.String y)
java.lang.String jmac7(java.lang.String x,
java.lang.String y)
java.lang.String jmac8(java.lang.String x,
java.lang.String y)
java.lang.String jmac9(java.lang.String x)
java.lang.String jmac10(java.lang.String x)
java.lang.String jmac11(java.lang.String x)
java.lang.String jmac12(java.lang.String type,
java.lang.String x)
java.lang.String jmac13(java.lang.String base,
java.lang.String index)
java.lang.String jmac14(java.lang.String con,
java.lang.String reg)
java.lang.String jmac15(java.lang.String reg,
java.lang.String scale)
java.lang.String jmac16(java.lang.String x)
java.lang.String jmac17(java.lang.String x)
java.lang.String jmac18(java.lang.String x)
java.lang.String jmac19(java.lang.String x)
java.lang.String jmac20(java.lang.Object f)
java.lang.String jmac21(java.lang.Object f,
java.lang.String rettype)
java.lang.String jmac22(java.lang.String con)
java.lang.String jmac23(java.lang.String x)
java.lang.String jmac24(java.lang.String x)
java.lang.String jmac25(java.lang.String format,
java.lang.Object args)
void emitBeginningOfSegment(java.io.PrintWriter out,
java.lang.String segment)
emitBeginningOfSegment in class CodeGeneratorjava.lang.String makeAsmSymbol(java.lang.String symbol)
makeAsmSymbol in class CodeGeneratorpublic int alignForType(int type)
CodeGenerator
alignForType in class CodeGeneratorjava.lang.String segmentForConst()
CodeGenerator
segmentForConst in class CodeGenerator
void emitData(java.io.PrintWriter out,
int type,
LirNode node)
emitData in class CodeGenerator
void emitCommon(java.io.PrintWriter out,
SymStatic symbol,
int bytes)
emitCommon in class CodeGenerator
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||