1 salcianu 1.1.2.1 // CachingArrayInfo.java, created Sun Apr 2 18:36:36 2000 by salcianu 2 cananian 1.1.2.4 // Copyright (C) 2000 Alexandru SALCIANU <salcianu@retezat.lcs.mit.edu> 3 salcianu 1.1.2.1 // Licensed under the terms of the GNU GPL; see COPYING for details. 4 salcianu 1.1.2.1 package harpoon.Util.TypeInference; 5 salcianu 1.1.2.1 6 salcianu 1.1.2.1 import java.util.Set; 7 salcianu 1.1.2.1 import java.util.Map; 8 salcianu 1.1.2.1 import java.util.HashMap; 9 salcianu 1.1.2.1 10 salcianu 1.1.2.1 import harpoon.ClassFile.HCode; 11 salcianu 1.1.2.1 import harpoon.ClassFile.HMethod; 12 salcianu 1.1.2.1 13 salcianu 1.1.2.1 /** 14 salcianu 1.1.2.1 * <code>CachingArrayInfo</code> 15 salcianu 1.1.2.1 * 16 cananian 1.1.2.4 * @author Alexandru SALCIANU <salcianu@retezat.lcs.mit.edu> 17 cananian 1.2 * @version $Id: CachingArrayInfo.java,v 1.2 2002/02/25 21:09:37 cananian Exp $ 18 salcianu 1.1.2.1 */ 19 salcianu 1.1.2.3 public class CachingArrayInfo extends ArrayInfo 20 salcianu 1.1.2.3 implements java.io.Serializable { 21 salcianu 1.1.2.1 22 salcianu 1.1.2.1 Map cache = new HashMap(); 23 salcianu 1.1.2.1 24 salcianu 1.1.2.1 /** Creates a <code>CachingArrayInfo</code>. */ 25 salcianu 1.1.2.1 public CachingArrayInfo() { 26 salcianu 1.1.2.1 } 27 salcianu 1.1.2.1 28 salcianu 1.1.2.1 /** Returns the set of <code>AGET</code> instructions from hcode 29 salcianu 1.1.2.1 that access arrays of non primitive objects. */ 30 salcianu 1.1.2.1 public Set getInterestingAGETs(HMethod hm, HCode hcode){ 31 salcianu 1.1.2.1 Set retval = (Set) cache.get(hcode); 32 salcianu 1.1.2.1 if(retval == null){ 33 salcianu 1.1.2.1 retval = super.getInterestingAGETs(hm, hcode); 34 salcianu 1.1.2.1 cache.put(hcode, retval); 35 salcianu 1.1.2.1 } 36 salcianu 1.1.2.1 37 salcianu 1.1.2.1 return retval; 38 salcianu 1.1.2.1 } 39 salcianu 1.1.2.1 40 salcianu 1.1.2.1 /** Clears the cache. */ 41 salcianu 1.1.2.1 public void clear(){ 42 salcianu 1.1.2.1 cache.clear(); 43 salcianu 1.1.2.1 } 44 cananian 1.2 }