From 82ee5f81edbe39dc373ecd0532f333ce76fa608e Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Tue, 4 Jul 2006 17:10:17 +0000 Subject: fixed bug not preserving identity --- src/cli/runtime/PersistentArrayIdentityMap.cs | 5 +++++ src/cli/runtime/PersistentArrayMap.cs | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cli/runtime/PersistentArrayIdentityMap.cs b/src/cli/runtime/PersistentArrayIdentityMap.cs index adef034e..c154c548 100644 --- a/src/cli/runtime/PersistentArrayIdentityMap.cs +++ b/src/cli/runtime/PersistentArrayIdentityMap.cs @@ -26,6 +26,11 @@ override public IPersistentMap empty() { PersistentArrayIdentityMap() { } +override internal PersistentArrayMap create(params Object[] init) + { + return new PersistentArrayIdentityMap(init); + } + public PersistentArrayIdentityMap(params Object[] init) :base(init) { } diff --git a/src/cli/runtime/PersistentArrayMap.cs b/src/cli/runtime/PersistentArrayMap.cs index 02e35275..6cc42aad 100644 --- a/src/cli/runtime/PersistentArrayMap.cs +++ b/src/cli/runtime/PersistentArrayMap.cs @@ -35,6 +35,10 @@ protected PersistentArrayMap(){ this.array = RT.EMPTY_ARRAY; } +virtual internal PersistentArrayMap create(params Object[] init){ + return new PersistentArrayMap(init); +} + /** * This ctor captures/aliases the passed array, so do not modify later * @param init {key1,val1,key2,val2,...} @@ -81,7 +85,7 @@ public IPersistentMap put(Object key, Object val) { newArray[0] = key; newArray[1] = val; } - return new PersistentArrayMap(newArray); + return create(newArray); } public IPersistentMap remove(Object key) { @@ -101,7 +105,7 @@ public IPersistentMap remove(Object key) { d += 2; } } - return new PersistentArrayMap(newArray); + return create(newArray); } //don't have key, no op return this; -- cgit v1.2.3-70-g09d2