1 wbeebee 1.1 // ArrayCopyInliner.java, created by wbeebee 2 wbeebee 1.1 // Copyright (C) 2002 Wes Beebee <wbeebee@mit.edu> 3 wbeebee 1.1 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 wbeebee 1.1 package harpoon.Analysis.Quads; 5 wbeebee 1.1 6 wbeebee 1.1 import harpoon.Analysis.ClassHierarchy; 7 wbeebee 1.1 import harpoon.ClassFile.HCodeFactory; 8 wbeebee 1.1 import harpoon.ClassFile.HMethod; 9 cananian 1.5 import net.cscott.jutil.MultiMap; 10 wbeebee 1.1 11 wbeebee 1.1 /** 12 wbeebee 1.1 * <code>ArrayCopyInliner</code> will inline array copy. 13 wbeebee 1.1 * 14 wbeebee 1.1 * @author Wes Beebee <wbeebee@mit.edu> 15 wbeebee 1.1 * 16 wbeebee 1.1 */ 17 wbeebee 1.1 public class ArrayCopyInliner extends SmallMethodInliner { 18 wbeebee 1.1 public ArrayCopyInliner(HCodeFactory hcf, ClassHierarchy ch) { 19 wbeebee 1.1 super(hcf, ch); 20 wbeebee 1.1 } 21 wbeebee 1.1 22 wbeebee 1.1 protected int score(HMethod hm, IntMap methodSize, MultiMap callSites) { 23 wbeebee 1.4 if ((hm != null)&&hm.getName().startsWith("arraycopy")) { 24 wbeebee 1.1 return -4; 25 wbeebee 1.1 } 26 wbeebee 1.1 return methodSize.getInt(hm); 27 wbeebee 1.1 } 28 wbeebee 1.1 }