|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectharpoon.IR.Assem.Instr
harpoon.IR.Assem.InstrLABEL
public class InstrLABEL
InstrLABEL is used to represents code labels in
assembly-level instruction representations.
| Field Summary |
|---|
| Fields inherited from class harpoon.IR.Assem.Instr |
|---|
arrayFactory, canFallThrough, next, prev |
| Constructor Summary | |
|---|---|
InstrLABEL(InstrFactory inf,
HCodeElement src,
String a,
Label l)
Create a code label Instr. |
|
| Method Summary | |
|---|---|
void |
accept(InstrVisitor v)
Accept a visitor. |
Instr |
cloneMutateAssem(InstrFactory inf,
String newAssem)
Clones this, mutating the assembly string. |
Label |
getLabel()
Return the code label specified in the constructor. |
protected boolean |
hasMultiplePredecessors()
Returns true. |
boolean |
isLabel()
Returns true if this is a label instruction that is meant to mark a location in the code segment, not actual executable code. |
static InstrLABEL |
makeNoFall(InstrFactory inf,
HCodeElement src,
String a,
Label l)
|
List<InstrEdge> |
predC()
Returns the control flow predecessors of this. |
Instr |
rename(InstrFactory inf,
TempMap defMap,
TempMap useMap)
Create a new Instr identical to the receiver, but
with all Temps renamed according to the given
mappings. |
| Methods inherited from class harpoon.IR.Assem.Instr |
|---|
cloneMutateAssem, def, defC, edgeC, edges, getAssem, getEntry, getExit, getFactory, getGroups, getID, getInstrFor, getLineNumber, getNext, getPrev, getSourceFile, getTargets, hashCode, hasModifiableTargets, insertAt, insertInstrsAt, isDirective, isDummy, isJump, isMove, isPred, isSucc, layout, map, map, map, pred, remove, rename, rename, replace, replaceInstrList, setGroup, succ, succC, toString, use, useC |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Constructor Detail |
|---|
public InstrLABEL(InstrFactory inf,
HCodeElement src,
String a,
Label l)
Instr. The specified
String a should be the
assembly-language representation of the given
Label l.
| Method Detail |
|---|
public static InstrLABEL makeNoFall(InstrFactory inf,
HCodeElement src,
String a,
Label l)
public Label getLabel()
public Instr rename(InstrFactory inf,
TempMap defMap,
TempMap useMap)
InstrInstr identical to the receiver, but
with all Temps renamed according to the given
mappings. The new Instr will have no edges, and
will come from the specified InstrFactory.
FSK: I don't think this "no edges" part of the specification
holds anymore (it was written before we revised the
control-flow representation in the Instrs...
rename in class Instr
public Instr cloneMutateAssem(InstrFactory inf,
String newAssem)
Instrthis (use/def, isMove, etc), but instead of
having the assembly-string of this, it has
newAssem as its assembly string. The
generated instr will not have a a place in the
instruction layout; it is the responsiblity of the caller
to subsequently call Instr.replace to swap
this and the returned Instr.
cloneMutateAssem in class Instrpublic void accept(InstrVisitor v)
accept in class Instrprotected boolean hasMultiplePredecessors()
hasMultiplePredecessors in class Instrpublic List<InstrEdge> predC()
Instrthis.
Note that this returns edges according to control flow, not in
terms of instruction layout. Look at getNext()
and getPrev() for information on instruction
layout.
predC in interface CFGraphable<Instr,InstrEdge>predC in interface Graph.Node<Instr,InstrEdge>predC in class Instrpublic boolean isLabel()
Instr
isLabel in class Instr
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||