1 cananian 1.1 // DynamicSyncRemoval.java, created Sat Apr 12 15:17:41 2003 by salcianu 2 cananian 1.1 // Copyright (C) 2003 Alexandru Salcianu <salcianu@MIT.EDU> 3 cananian 1.1 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 cananian 1.1 package harpoon.Main; 5 cananian 1.1 6 cananian 1.1 import harpoon.Analysis.Quads.QuadClassHierarchy; 7 cananian 1.1 import harpoon.Util.Options.Option; 8 cananian 1.1 9 cananian 1.1 import java.util.Arrays; 10 cananian 1.1 import java.util.List; 11 cananian 1.1 12 cananian 1.1 /** 13 cananian 1.1 * <code>DynamicSyncRemoval</code> 14 cananian 1.1 * 15 cananian 1.1 * @author C. Scott Ananian <cananian@alumni.princeton.edu> 16 cananian 1.3 * @version $Id: DynamicSyncRemoval.java,v 1.3 2003/07/12 03:13:22 cananian Exp $ 17 cananian 1.1 */ 18 cananian 1.1 public abstract class DynamicSyncRemoval { 19 cananian 1.1 20 cananian 1.1 private static boolean DO_DYN_SYNC_REMOVE = false; 21 cananian 1.1 22 cananian 1.1 private static boolean enabled() { return DO_DYN_SYNC_REMOVE; } 23 cananian 1.1 24 cananian 1.1 public static class QuadPass extends CompilerStageEZ { 25 cananian 1.1 public QuadPass() { super("dynamic-sync-removal.quad-pass"); } 26 cananian 1.1 27 cananian 1.1 public List<Option> getOptions() { 28 cananian 1.1 List<Option> opts = Arrays.asList 29 cananian 1.1 (new Option[] { 30 cananian 1.1 new Option("dyn-sync", 31 cananian 1.1 "Dynamic sync removal support (CSA)") { 32 cananian 1.1 public void action() { DO_DYN_SYNC_REMOVE = true; } 33 cananian 1.1 }, 34 cananian 1.1 }); 35 cananian 1.1 return opts; 36 cananian 1.1 } 37 cananian 1.1 38 cananian 1.1 public boolean enabled() { return DynamicSyncRemoval.enabled(); } 39 cananian 1.1 40 cananian 1.1 public void real_action() { 41 cananian 1.1 hcf = new harpoon.Analysis.DynamicSyncRemoval.SyncRemover 42 cananian 1.1 (hcf, linker).codeFactory(); 43 cananian 1.1 classHierarchy = new QuadClassHierarchy(linker, roots, hcf); 44 cananian 1.1 } 45 cananian 1.1 } 46 cananian 1.1 47 cananian 1.1 48 cananian 1.1 public static class TreePass extends CompilerStageEZ { 49 cananian 1.1 public TreePass() { super("dynamic-sync-removal.tree-pass"); } 50 cananian 1.1 public boolean enabled() { return DynamicSyncRemoval.enabled(); } 51 cananian 1.1 52 cananian 1.1 public void real_action() { 53 cananian 1.1 hcf = harpoon.Analysis.DynamicSyncRemoval.SyncRemover 54 cananian 1.1 .treeCodeFactory(frame, hcf); 55 cananian 1.3 // config checking 56 cananian 1.3 frame.getRuntime().configurationSet.add 57 cananian 1.3 ("check_with_dynamic_sync_removal_needed"); 58 cananian 1.1 } 59 cananian 1.1 } 60 cananian 1.1 }