1 salcianu 1.1 // CompilerStateEZ.java, created Sat Apr 12 12:56:27 2003 by salcianu 2 salcianu 1.1 // Copyright (C) 2003 Alexandru Salcianu <salcianu@MIT.EDU> 3 salcianu 1.1 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 salcianu 1.1 package harpoon.Main; 5 salcianu 1.1 6 cananian 1.5 import harpoon.Analysis.ClassHierarchy; 7 cananian 1.5 import harpoon.Backend.Generic.Frame; 8 cananian 1.5 import harpoon.ClassFile.HCodeFactory; 9 cananian 1.5 import harpoon.ClassFile.HMethod; 10 salcianu 1.1 import harpoon.ClassFile.Linker; 11 cananian 1.5 import harpoon.Util.Options.Option; 12 cananian 1.6 import net.cscott.jutil.PersistentMap; 13 salcianu 1.3 14 salcianu 1.1 import java.util.Set; 15 salcianu 1.1 import java.util.Collections; 16 salcianu 1.1 import java.util.List; 17 salcianu 1.1 18 salcianu 1.1 /** 19 salcianu 1.1 * <code>CompilerStageEZ</code> 20 salcianu 1.1 * 21 salcianu 1.1 * @author Alexandru Salcianu <salcianu@MIT.EDU> 22 cananian 1.6 * @version $Id: CompilerStageEZ.java,v 1.6 2004/02/08 01:58:13 cananian Exp $ 23 salcianu 1.1 */ 24 salcianu 1.1 public abstract class CompilerStageEZ extends CompilerStage { 25 salcianu 1.1 26 salcianu 1.1 /** Creates a <code>CompilerStageEZ</code>. */ 27 salcianu 1.1 public CompilerStageEZ(String name) { super(name); } 28 salcianu 1.1 29 cananian 1.5 public List<Option> getOptions() { 30 salcianu 1.1 return Collections.EMPTY_LIST; // no options by default 31 salcianu 1.1 } 32 salcianu 1.1 33 salcianu 1.1 protected abstract void real_action(); 34 salcianu 1.1 35 salcianu 1.1 public final CompilerState action(CompilerState cs) { 36 salcianu 1.4 _UNPACK_CS(cs); 37 salcianu 1.4 real_action(); 38 salcianu 1.4 return _PACK_CS(); 39 salcianu 1.1 } 40 salcianu 1.1 41 salcianu 1.2 protected CompilerState old_cs; 42 salcianu 1.1 protected HMethod mainM; 43 salcianu 1.1 protected Set roots; 44 salcianu 1.1 protected Linker linker; 45 salcianu 1.1 protected HCodeFactory hcf; 46 salcianu 1.1 protected ClassHierarchy classHierarchy; 47 salcianu 1.1 protected Frame frame; 48 cananian 1.5 protected PersistentMap<String,Object> attribs; 49 salcianu 1.1 50 salcianu 1.2 protected final void _UNPACK_CS(CompilerState cs) { 51 salcianu 1.2 this.old_cs = cs; 52 salcianu 1.1 this.mainM = cs.getMain(); 53 salcianu 1.1 this.roots = cs.getRoots(); 54 salcianu 1.1 this.linker = cs.getLinker(); 55 salcianu 1.1 this.hcf = cs.getCodeFactory(); 56 salcianu 1.1 this.classHierarchy = cs.getClassHierarchy(); 57 salcianu 1.1 this.frame = cs.getFrame(); 58 salcianu 1.3 this.attribs = cs.getAttributes(); 59 salcianu 1.1 } 60 salcianu 1.1 61 salcianu 1.2 protected final CompilerState _PACK_CS() { 62 salcianu 1.1 CompilerState new_cs = 63 salcianu 1.1 old_cs 64 salcianu 1.1 .changeMain(mainM) 65 salcianu 1.1 .changeRoots(roots) 66 salcianu 1.1 .changeLinker(linker) 67 salcianu 1.1 .changeCodeFactory(hcf) 68 salcianu 1.1 .changeClassHierarchy(classHierarchy) 69 salcianu 1.3 .changeFrame(frame) 70 salcianu 1.3 .changeAttributes(attribs); 71 salcianu 1.2 72 salcianu 1.1 mainM = null; 73 salcianu 1.1 roots = null; 74 salcianu 1.1 linker = null; 75 salcianu 1.1 hcf = null; 76 salcianu 1.1 classHierarchy = null; 77 salcianu 1.1 frame = null; 78 salcianu 1.3 attribs = null; 79 salcianu 1.1 80 salcianu 1.1 return new_cs; 81 salcianu 1.1 } 82 salcianu 1.1 }