diff options
author | Rich Hickey <richhickey@gmail.com> | 2006-08-11 13:30:18 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2006-08-11 13:30:18 +0000 |
commit | 0addb40116e9a293c5f0a0f0040a9f4862964c92 (patch) | |
tree | c320953fb32047e3fb521cf6e9f4d72b0f9961d9 /src/cli/runtime/PersistentArray.cs | |
parent | 28fe593fca2b06b203cb3ce3e6b7ea3eee7dd9a7 (diff) |
made Master members final
Diffstat (limited to 'src/cli/runtime/PersistentArray.cs')
-rw-r--r-- | src/cli/runtime/PersistentArray.cs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/cli/runtime/PersistentArray.cs b/src/cli/runtime/PersistentArray.cs index ced36518..40e1fbc0 100644 --- a/src/cli/runtime/PersistentArray.cs +++ b/src/cli/runtime/PersistentArray.cs @@ -11,7 +11,6 @@ /* rich Jun 2, 2006 */
using System;
-using System.Threading;
using System.Collections;
namespace clojure.lang
@@ -41,7 +40,6 @@ namespace clojure.lang *
* See Cohen for basic idea
* I added hybrid most-recent-sequential-range + shared-bitset idea, multi-thread-safety
- * Java implementation is lock-free
*/
public class PersistentArray : APersistentArray, IEnumerable
@@ -77,15 +75,17 @@ internal class Master{ internal int load;
internal readonly int maxLoad;
internal readonly float loadFactor;
- internal int[] basis;
- internal volatile Master next;
-
- internal Master(int size,Object defaultVal, float loadFactor){
+ internal readonly int[] basis;
+ internal Master next;
+
+ internal Master(int size, Object defaultVal, float loadFactor, int[] basis)
+ {
this.array = new Entry[size];
this.defaultVal = defaultVal;
this.rev = 0;
this.load = 0;
this.maxLoad = (int)(size * loadFactor);
+ this.basis = basis;
this.loadFactor = loadFactor;
}
internal Master(Master parent)
@@ -233,10 +233,11 @@ public void Reset() }
internal class Data{
- internal Master master;
+ internal readonly Master master;
internal readonly int rev;
internal readonly int baseline;
internal readonly BitArray history;
+
public Data(Master master, int rev, int baseline, BitArray history)
{
this.master = master;
@@ -259,7 +260,7 @@ public PersistentArray(int size, Object defaultVal) }
public PersistentArray(int size, Object defaultVal, float loadFactor){
- this.data = new Data(new Master(size, defaultVal, loadFactor), 0, 0, null);
+ this.data = new Data(new Master(size, defaultVal, loadFactor,null), 0, 0, null);
}
internal PersistentArray(Master master, int rev, int baseline, BitArray history)
@@ -359,7 +360,7 @@ public void isolate() }
Entry getEntry(int i){
-for (Entry e = (Entry)data.master.array[i]; e != null; e = e.rest())
+for (Entry e = data.master.array[i]; e != null; e = e.rest())
{
if (e.rev <= data.rev)
{
|