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     }