diff options
-rw-r--r-- | src/cli/runtime/PersistentListMap.cs | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentListMap.java | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/src/cli/runtime/PersistentListMap.cs b/src/cli/runtime/PersistentListMap.cs index a3896c97..a2d621a7 100644 --- a/src/cli/runtime/PersistentListMap.cs +++ b/src/cli/runtime/PersistentListMap.cs @@ -243,12 +243,14 @@ internal class Link : PersistentListMap { readonly Object _key;
readonly Object _val;
readonly PersistentListMap _rest;
+ readonly int _count;
internal Link(Object key,Object val,PersistentListMap next,IPersistentMap meta){
this._key = key;
this._val = val;
this._rest = next;
this._meta = meta;
+ this._count = 1 + next.count();
}
override public Object key(){
@@ -264,7 +266,7 @@ internal class Link : PersistentListMap { }
override public int count(){
- return 1 + _rest.count();
+ return _count;
}
override public bool contains(Object key){
diff --git a/src/jvm/clojure/lang/PersistentListMap.java b/src/jvm/clojure/lang/PersistentListMap.java index c2881363..f8fe6656 100644 --- a/src/jvm/clojure/lang/PersistentListMap.java +++ b/src/jvm/clojure/lang/PersistentListMap.java @@ -222,12 +222,14 @@ static class Link extends PersistentListMap { final Object _key; final Object _val; final PersistentListMap _rest; + final int _count; - Link(Object key,Object val,PersistentListMap next,IPersistentMap meta){ + Link(Object key,Object val,PersistentListMap next,IPersistentMap meta){ this._key = key; this._val = val; this._rest = next; this._meta = meta; + this._count = 1 + next.count(); } public Object key(){ @@ -243,7 +245,7 @@ static class Link extends PersistentListMap { } public int count(){ - return 1 + _rest.count(); + return _count; } public boolean contains(Object key){ |