summaryrefslogtreecommitdiff
path: root/src/jvm/clojure
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2009-04-01 12:39:39 +0000
committerRich Hickey <richhickey@gmail.com>2009-04-01 12:39:39 +0000
commit37606d41d3dcc574dd6b755de4849fe899c01af2 (patch)
tree624e680715644ad36c4b7608bc7934ee4728e575 /src/jvm/clojure
parent487b713ce0f6fe49470a7f0aa7acf14bdb58c985 (diff)
added get-method
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r--src/jvm/clojure/lang/MultiFn.java7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/jvm/clojure/lang/MultiFn.java b/src/jvm/clojure/lang/MultiFn.java
index d7b089ce..1efa84b6 100644
--- a/src/jvm/clojure/lang/MultiFn.java
+++ b/src/jvm/clojure/lang/MultiFn.java
@@ -93,7 +93,7 @@ private IPersistentMap resetCache() throws Exception{
return methodCache;
}
-synchronized private IFn getFn(Object dispatchVal) throws Exception{
+synchronized public IFn getMethod(Object dispatchVal) throws Exception{
if(cachedHierarchy != hierarchy.deref())
resetCache();
IFn targetFn = (IFn) methodCache.valAt(dispatchVal);
@@ -103,6 +103,11 @@ synchronized private IFn getFn(Object dispatchVal) throws Exception{
if(targetFn != null)
return targetFn;
targetFn = (IFn) getMethodTable().valAt(defaultDispatchVal);
+ return targetFn;
+}
+
+private IFn getFn(Object dispatchVal) throws Exception{
+ IFn targetFn = getMethod(dispatchVal);
if(targetFn == null)
throw new IllegalArgumentException(String.format("No method for dispatch value: %s", dispatchVal));
return targetFn;