harpoon.IR.Assem
Class InstrMEM

java.lang.Object
  extended by harpoon.IR.Assem.Instr
      extended by harpoon.IR.Assem.InstrMEM
All Implemented Interfaces:
HCodeElement, CFGraphable<Instr,InstrEdge>, UseDefable, Graph.Node<Instr,InstrEdge>
Direct Known Subclasses:
RegAlloc.SpillLoad, RegAlloc.SpillStore

public class InstrMEM
extends Instr

InstrMEM is used to represent memory operations in assembly-level instruction representations.

Version:
$Id: InstrMEM.java,v 1.3 2003/06/10 15:07:13 cananian Exp $
Author:
Felix S. Klock II <pnkfelix@mit.edu>

Field Summary
 
Fields inherited from class harpoon.IR.Assem.Instr
arrayFactory, canFallThrough, next, prev
 
Constructor Summary
InstrMEM(InstrFactory inf, HCodeElement codeSrc, String assem, Temp[] dst, Temp[] tempSrc)
          Creates a InstrMEM with default values for canFallThrough and targets.
InstrMEM(InstrFactory inf, HCodeElement codeSrc, String assem, Temp[] dst, Temp[] tempSrc, boolean canFallThrough, List<Label> targets)
          Creates a InstrMEM.
 
Method Summary
 void accept(InstrVisitor v)
          Accept a visitor
 Instr cloneMutateAssem(InstrFactory inf, String newAssem)
          Clones this, mutating the assembly string.
 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, hasMultiplePredecessors, insertAt, insertInstrsAt, isDirective, isDummy, isJump, isLabel, isMove, isPred, isSucc, layout, map, map, map, pred, predC, 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

InstrMEM

public InstrMEM(InstrFactory inf,
                HCodeElement codeSrc,
                String assem,
                Temp[] dst,
                Temp[] tempSrc,
                boolean canFallThrough,
                List<Label> targets)
Creates a InstrMEM.


InstrMEM

public InstrMEM(InstrFactory inf,
                HCodeElement codeSrc,
                String assem,
                Temp[] dst,
                Temp[] tempSrc)
Creates a InstrMEM with default values for canFallThrough and targets.

Method Detail

accept

public void accept(InstrVisitor v)
Accept a visitor

Overrides:
accept in class Instr

rename

public Instr rename(InstrFactory inf,
                    TempMap defMap,
                    TempMap useMap)
Description copied from class: Instr
Create a new Instr 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...

Overrides:
rename in class Instr

cloneMutateAssem

public Instr cloneMutateAssem(InstrFactory inf,
                              String newAssem)
Description copied from class: Instr
Clones this, mutating the assembly string.
requires: newAssem != null
effects: Returns a new Instr object with the same compiler-visible high level properties as 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.

Overrides:
cloneMutateAssem in class Instr