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 }