1 pnkfelix 1.1.2.1 // InstrMEM.java, created Mon Apr  5 17:27:57 1999 by pnkfelix
 2 cananian 1.1.2.7 // Copyright (C) 1999 Felix S. Klock II <pnkfelix@mit.edu>
 3 pnkfelix 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 pnkfelix 1.1.2.1 package harpoon.IR.Assem;
 5 pnkfelix 1.1.2.1 
 6 pnkfelix 1.1.2.1 import harpoon.ClassFile.HCodeElement;
 7 cananian 1.3     import harpoon.Temp.Label;
 8 pnkfelix 1.1.2.1 import harpoon.Temp.Temp;
 9 cananian 1.1.2.5 import harpoon.Temp.TempMap;
10 pnkfelix 1.1.2.1 
11 pnkfelix 1.1.2.3 import java.util.List;
12 pnkfelix 1.1.2.3 
13 pnkfelix 1.1.2.1 /**
14 pnkfelix 1.1.2.1  * <code>InstrMEM</code> is used to represent memory operations in
15 pnkfelix 1.1.2.1  * assembly-level instruction representations.
16 pnkfelix 1.1.2.1  * 
17 cananian 1.1.2.7  * @author  Felix S. Klock II <pnkfelix@mit.edu>
18 cananian 1.3      * @version $Id: InstrMEM.java,v 1.3 2003/06/10 15:07:13 cananian Exp $ 
19 pnkfelix 1.1.2.1  */
20 pnkfelix 1.1.2.1 public class InstrMEM extends Instr {
21 pnkfelix 1.1.2.1     
22 pnkfelix 1.1.2.1     /** Creates a <code>InstrMEM</code>. */
23 pnkfelix 1.1.2.3     public InstrMEM(InstrFactory inf, HCodeElement codeSrc, String assem, 
24 pnkfelix 1.1.2.3                     Temp[] dst, Temp[] tempSrc, boolean canFallThrough,
25 cananian 1.3                         List<Label> targets) {
26 pnkfelix 1.1.2.3         super(inf, codeSrc, assem, dst, tempSrc, canFallThrough, targets);
27 pnkfelix 1.1.2.3     }
28 pnkfelix 1.1.2.3 
29 pnkfelix 1.1.2.3     /** Creates a <code>InstrMEM</code> with default values for
30 pnkfelix 1.1.2.3         <code>canFallThrough</code> and <code>targets</code>. */
31 andyb    1.1.2.2     public InstrMEM(InstrFactory inf, HCodeElement codeSrc, String assem, 
32 andyb    1.1.2.2                     Temp[] dst, Temp[] tempSrc) {
33 andyb    1.1.2.2         super(inf, codeSrc, assem, dst, tempSrc);
34 pnkfelix 1.1.2.1     }
35 pnkfelix 1.1.2.1 
36 andyb    1.1.2.2     /** Accept a visitor */
37 pnkfelix 1.1.2.4     public void accept(InstrVisitor v) { v.visit(this); }    
38 cananian 1.1.2.5 
39 cananian 1.1.2.5     public Instr rename(InstrFactory inf, TempMap defMap, TempMap useMap) {
40 cananian 1.1.2.5         return new InstrMEM(inf, this, getAssem(),
41 cananian 1.1.2.5                             map(defMap,def()), map(useMap,use()),
42 cananian 1.1.2.5                             this.canFallThrough, getTargets());
43 pnkfelix 1.1.2.6     }
44 pnkfelix 1.1.2.6 
45 pnkfelix 1.1.2.6     public Instr cloneMutateAssem(InstrFactory inf, String newAssem) {
46 pnkfelix 1.1.2.6         return new InstrMEM(inf, this, newAssem, def(), use());
47 cananian 1.1.2.5     }
48 cananian 1.2     }