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 }