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 }