1 duncan   1.1.2.1  // Run.java, created Mon Dec 28 02:34:11 1998 by cananian
 2 cananian 1.1.2.6  // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu>
 3 cananian 1.1.2.6  // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 duncan   1.1.2.1  package harpoon.Interpret.Tree;
 5 duncan   1.1.2.1  
 6 cananian 1.1.2.11 import harpoon.Analysis.ClassHierarchy;
 7 cananian 1.1.2.13 import harpoon.Analysis.Quads.QuadClassHierarchy;
 8 duncan   1.1.2.1  import harpoon.Backend.Generic.Frame;
 9 duncan   1.1.2.1  import harpoon.ClassFile.CachingCodeFactory;
10 duncan   1.1.2.1  import harpoon.ClassFile.HClass;
11 duncan   1.1.2.1  import harpoon.ClassFile.HCode;
12 duncan   1.1.2.1  import harpoon.ClassFile.HCodeFactory;
13 duncan   1.1.2.5  import harpoon.ClassFile.HData;
14 duncan   1.1.2.1  import harpoon.ClassFile.HField;
15 duncan   1.1.2.1  import harpoon.ClassFile.HMethod;
16 cananian 1.1.2.17 import harpoon.ClassFile.Linker;
17 cananian 1.1.2.17 import harpoon.ClassFile.Loader;
18 duncan   1.1.2.1  import harpoon.Interpret.Quads.Method;
19 duncan   1.1.2.1  import harpoon.IR.Quads.QuadWithTry;
20 duncan   1.1.2.5  import harpoon.IR.Tree.Data;
21 duncan   1.1.2.1  
22 duncan   1.1.2.1  import java.io.FileOutputStream;
23 duncan   1.1.2.1  import java.io.IOException;
24 duncan   1.1.2.1  import java.io.PrintWriter;
25 cananian 1.1.2.17 import java.util.Collections;
26 duncan   1.1.2.1  import java.util.zip.GZIPOutputStream;
27 duncan   1.1.2.1  
28 duncan   1.1.2.1  /**
29 duncan   1.1.2.1   * <code>Run</code> invokes the interpreter.
30 duncan   1.1.2.1   * 
31 duncan   1.1.2.1   * @author  C. Scott Ananian <cananian@alumni.princeton.edu>
32 cananian 1.2       * @version $Id: TestRun.java,v 1.2 2002/02/25 21:06:01 cananian Exp $
33 duncan   1.1.2.1   */
34 cananian 1.1.2.17 public abstract class TestRun extends Debug {
35 duncan   1.1.2.1      public static void main(String args[]) {
36 duncan   1.1.2.3          java.io.PrintWriter out = new java.io.PrintWriter(System.err, true);
37 duncan   1.1.2.3          
38 cananian 1.1.2.17         Linker linker = Loader.systemLinker;
39 duncan   1.1.2.4          HCodeFactory hcf = // default code factory.
40 cananian 1.1.2.11             new harpoon.ClassFile.CachingCodeFactory(
41 cananian 1.1.2.11             harpoon.IR.Quads.QuadWithTry.codeFactory()
42 cananian 1.1.2.11             );
43 duncan   1.1.2.5          HCodeFactory hcfOpt;
44 duncan   1.1.2.5  
45 duncan   1.1.2.5          // Cache all conversions we make in the ClassHierarchy
46 duncan   1.1.2.5          hcf = new CachingCodeFactory(hcf); 
47 duncan   1.1.2.5          
48 cananian 1.1.2.17         HClass cls = linker.forName(args[0]);
49 duncan   1.1.2.4          System.err.println("Collecting class hierarchy information...");
50 cananian 1.1.2.17         HMethod main = cls.getMethod("main", new HClass[] { linker.forDescriptor("[Ljava/lang/String;") });
51 cananian 1.1.2.17         ClassHierarchy ch = new QuadClassHierarchy(linker, Collections.singleton(main), hcf);
52 duncan   1.1.2.4          System.err.println("done!");
53 duncan   1.1.2.5          
54 duncan   1.1.2.9          //      Frame frame = new DefaultFrame(new InterpreterOffsetMap(ch),
55 duncan   1.1.2.9          //                     new InterpreterAllocationStrategy());
56 duncan   1.1.2.5          
57 cananian 1.1.2.16         Frame frame = new  DefaultFrame(main, ch, new OffsetMap32(ch),
58 duncan   1.1.2.9                                          new InterpreterAllocationStrategy());
59 cananian 1.1.2.19         hcf = harpoon.IR.LowQuad.LowQuadSSI.codeFactory(hcf);
60 duncan   1.1.2.1          hcf = harpoon.IR.LowQuad.LowQuadNoSSA.codeFactory(hcf);
61 duncan   1.1.2.1          hcf = harpoon.IR.Tree.TreeCode.codeFactory(hcf, frame);
62 duncan   1.1.2.3          hcf = harpoon.IR.Tree.CanonicalTreeCode.codeFactory(hcf, frame);
63 duncan   1.1.2.5          hcfOpt = harpoon.IR.Tree.OptimizedTreeCode.codeFactory(hcf, frame);
64 duncan   1.1.2.1  
65 duncan   1.1.2.5          hcf = new InterpreterCachingCodeFactory(hcf, hcf);
66 duncan   1.1.2.5          PrintWriter prof = null;        
67 duncan   1.1.2.1          String[] params = new String[args.length-1];
68 duncan   1.1.2.1          System.arraycopy(args, 1, params, 0, params.length);
69 duncan   1.1.2.3          harpoon.Interpret.Tree.Method.run(prof, hcf, cls, params);
70 duncan   1.1.2.8          if (prof!=null) prof.close();   
71 duncan   1.1.2.1      }
72 duncan   1.1.2.1  }
73 duncan   1.1.2.3  
74 duncan   1.1.2.3  
75 duncan   1.1.2.3  
76 duncan   1.1.2.3  
77 duncan   1.1.2.1  
78 duncan   1.1.2.1  
79 duncan   1.1.2.1  
80 duncan   1.1.2.1  
81 duncan   1.1.2.1  
82 duncan   1.1.2.1  
83 duncan   1.1.2.1  
84 cananian 1.2