|
|||||||||
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 Temp s 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)
Instr
Instr
identical to the receiver, but
with all Temp
s 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)
Instr
this
(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 Instr
public void accept(InstrVisitor v)
accept
in class Instr
protected boolean hasMultiplePredecessors()
hasMultiplePredecessors
in class Instr
public List<InstrEdge> predC()
Instr
this
.
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 Instr
public boolean isLabel()
Instr
isLabel
in class Instr
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |