Changeset 12957
- Timestamp:
- 10/08/10 18:43:36 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/function_info.java
r12513 r12957 34 34 package org.armedbear.lisp; 35 35 36 import java.util.Map; 37 import java.util.Collections; 38 import java.util.WeakHashMap; 36 39 import static org.armedbear.lisp.Lisp.*; 37 40 38 41 public final class function_info 39 42 { 40 static EqualHashTable FUNCTION_TABLE = 41 new EqualHashTable(64, NIL, NIL); 43 // ### TODO: Replace by a concurrent hashmap, with weak keys, ofcourse. 44 final static Map<LispObject,LispObject> symbolToFunctionMap = 45 Collections.synchronizedMap(new WeakHashMap()); 42 46 43 47 // ### function-info name … … 48 52 public LispObject execute(LispObject arg) 49 53 { 50 LispObject info = FUNCTION_TABLE.get(arg);54 LispObject info = symbolToFunctionMap.get(arg); 51 55 return info != null ? info : NIL; 52 56 } … … 62 66 { 63 67 if (info == NIL) 64 FUNCTION_TABLE.remhash(name);68 symbolToFunctionMap.remove(name); 65 69 else 66 FUNCTION_TABLE.put(name, info);70 symbolToFunctionMap.put(name, info); 67 71 return info; 68 72 } … … 79 83 { 80 84 // info is an alist 81 LispObject info = FUNCTION_TABLE.get(name);85 LispObject info = symbolToFunctionMap.get(name); 82 86 if (info != null) { 83 87 while (info != NIL) { … … 108 112 { 109 113 // info is an alist 110 LispObject info = FUNCTION_TABLE.get(name);114 LispObject info = symbolToFunctionMap.get(name); 111 115 if (info == null) 112 116 info = NIL; … … 125 129 } 126 130 // Not found. 127 FUNCTION_TABLE.put(name, info.push(new Cons(indicator, value)));131 symbolToFunctionMap.put(name, info.push(new Cons(indicator, value))); 128 132 return value; 129 133 }
Note: See TracChangeset
for help on using the changeset viewer.