1 cananian 1.1.2.1 // Options.java, created Tue Jul 20 17:31:26 1999 by cananian 2 cananian 1.1.2.1 // Copyright (C) 1999 C. Scott Ananian <cananian@alumni.princeton.edu> 3 cananian 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 cananian 1.1.2.1 package harpoon.Main; 5 cananian 1.1.2.1 6 salcianu 1.6 import harpoon.Backend.Backend; 7 cananian 1.1.2.2 import harpoon.ClassFile.HCodeFactory; 8 cananian 1.3 import harpoon.ClassFile.HMethod; 9 cananian 1.8 import harpoon.ClassFile.Linker; 10 cananian 1.3 11 salcianu 1.6 import java.util.Map; 12 salcianu 1.6 import java.util.HashMap; 13 salcianu 1.6 14 cananian 1.1.2.1 /** 15 cananian 1.1.2.1 * <code>Options</code> contains the values of the current runtime 16 cananian 1.1.2.1 * environment. 17 cananian 1.1.2.1 * 18 cananian 1.1.2.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 19 cananian 1.8 * @version $Id: Options.java,v 1.8 2003/07/10 02:01:38 cananian Exp $ 20 cananian 1.1.2.1 */ 21 cananian 1.1.2.1 public class Options { 22 cananian 1.1.2.1 /** Stream for writing statistics. */ 23 cananian 1.1.2.1 public static java.io.PrintWriter statWriter = null; 24 cananian 1.1.2.1 /** Stream for writing profiling data. */ 25 cananian 1.1.2.1 public static java.io.PrintWriter profWriter = null; 26 cananian 1.1.2.2 27 cananian 1.1.2.2 /** Make a code factory to implement a pass, given a string name. */ 28 cananian 1.8 public static HCodeFactory cfFromString(String name, HCodeFactory hcf, 29 cananian 1.8 Linker linker) { 30 cananian 1.1.2.2 name = name.intern(); 31 wbeebee 1.7 if (name=="none") 32 wbeebee 1.7 return hcf; 33 cananian 1.1.2.2 if (name=="to-quad-with-try") 34 cananian 1.1.2.2 return harpoon.IR.Quads.QuadWithTry.codeFactory(hcf); 35 cananian 1.1.2.2 if (name=="to-quad") 36 cananian 1.1.2.2 return harpoon.IR.Quads.QuadNoSSA.codeFactory(hcf); 37 cananian 1.1.2.9 if (name=="to-quad-ssa") 38 cananian 1.1.2.9 return harpoon.IR.Quads.QuadSSA.codeFactory(hcf); 39 cananian 1.1.2.2 if (name=="to-quad-ssi") 40 cananian 1.1.2.3 return harpoon.IR.Quads.QuadSSI.codeFactory(hcf); 41 cananian 1.1.2.2 if (name=="to-low-quad") 42 cananian 1.1.2.2 return harpoon.IR.LowQuad.LowQuadNoSSA.codeFactory(hcf); 43 cananian 1.1.2.6 if (name=="to-low-quad-ssa") 44 cananian 1.1.2.6 return harpoon.IR.LowQuad.LowQuadSSA.codeFactory(hcf); 45 cananian 1.1.2.5 if (name=="to-low-quad-ssi") 46 cananian 1.1.2.5 return harpoon.IR.LowQuad.LowQuadSSI.codeFactory(hcf); 47 cananian 1.1.2.2 if (name=="scc-opt") 48 cananian 1.1.2.4 return harpoon.Analysis.Quads.SCC.SCCOptimize.codeFactory(hcf); 49 cananian 1.1.2.2 if (name=="ssi-stats") 50 cananian 1.1.2.4 return harpoon.Analysis.Quads.SSIStats.codeFactory(hcf); 51 cananian 1.1.2.7 if (name=="type-switch-remover") 52 cananian 1.1.2.8 return new harpoon.Analysis.Quads.TypeSwitchRemover(hcf).codeFactory(); 53 cananian 1.1.2.10 if (name=="new-mover") 54 cananian 1.1.2.10 return new harpoon.Analysis.Quads.NewMover(hcf).codeFactory(); 55 cananian 1.8 if (name=="dyn-sync-remover") 56 cananian 1.8 return new harpoon.Analysis.DynamicSyncRemoval.SyncRemover 57 cananian 1.8 (hcf, linker).codeFactory(); 58 cananian 1.1.2.2 else throw new Error("Unknown code factory type: "+name); 59 cananian 1.3 } 60 cananian 1.3 61 salcianu 1.4 62 salcianu 1.6 /** Returns the Backend ID (one of the constants defined in 63 salcianu 1.6 harpoon.Backend.Backend) that corresponds to the string 64 salcianu 1.6 representation <code>backendName</code>. E.g., it returns 65 salcianu 1.6 <code>Backend.SPARC</code> for "sparc" etc. */ 66 salcianu 1.6 static String getBackendID(String backendName) { 67 salcianu 1.6 return backendName.toLowerCase().intern(); 68 salcianu 1.4 } 69 salcianu 1.4 70 cananian 1.2 }