summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2006-08-11 13:29:24 +0000
committerRich Hickey <richhickey@gmail.com>2006-08-11 13:29:24 +0000
commit28fe593fca2b06b203cb3ce3e6b7ea3eee7dd9a7 (patch)
treea705cb1b1bf73b035eb8ff68bbc2561888cf4ac1
parentb9b9ceb459f528347f2433357697370fa3fa67b4 (diff)
made Master members final
-rw-r--r--src/jvm/clojure/lang/PersistentArray.java12
-rw-r--r--src/jvm/clojure/lang/PersistentArrayList.java7
2 files changed, 10 insertions, 9 deletions
diff --git a/src/jvm/clojure/lang/PersistentArray.java b/src/jvm/clojure/lang/PersistentArray.java
index 1ef6ab7c..dd85b12f 100644
--- a/src/jvm/clojure/lang/PersistentArray.java
+++ b/src/jvm/clojure/lang/PersistentArray.java
@@ -71,17 +71,17 @@ static class Master{
int load;
final int maxLoad;
final float loadFactor;
- int[] basis;
- volatile Master next;
+ final int[] basis;
+ Master next;
- Master(int size,Object defaultVal, float loadFactor){
+ Master(int size,Object defaultVal, float loadFactor, int[] basis){
this.array = new Entry[size];//new AtomicReferenceArray(size);
this.defaultVal = defaultVal;
this.rev = 0;//new AtomicInteger(0);
this.load = 0;//new AtomicInteger(0);
this.maxLoad = (int) (size * loadFactor);
this.loadFactor = loadFactor;
- basis = null;
+ this.basis = basis;
next = null;
}
@@ -210,7 +210,7 @@ static class ValIter implements Iterator{
}
static class Data{
-Master master;
+final Master master;
final int rev;
final int baseline;
final BitSet history;
@@ -234,7 +234,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);
}
PersistentArray(Master master,int rev,int baseline, BitSet history){
diff --git a/src/jvm/clojure/lang/PersistentArrayList.java b/src/jvm/clojure/lang/PersistentArrayList.java
index c0276c27..f3e62434 100644
--- a/src/jvm/clojure/lang/PersistentArrayList.java
+++ b/src/jvm/clojure/lang/PersistentArrayList.java
@@ -95,12 +95,13 @@ private void grow() {
if(data.master.next != null) //this master has been trimmed, but this rev is not yet propagated
trim();
- Master newMaster = new Master(data.master.array.length * 2, data.master.defaultVal, data.master.loadFactor);
+ Master newMaster = new Master(data.master.array.length * 2, data.master.defaultVal, data.master.loadFactor
+ ,data.master.basis);
newMaster.rev = data.master.rev;
newMaster.load = data.master.load;
- newMaster.basis = data.master.basis;
System.arraycopy(data.master.array, 0, newMaster.array, 0, data.master.array.length);
- data.master = newMaster;
+ this.data = new Data(newMaster,data.rev,data.baseline,data.history);
+ //data.master = newMaster;
}
protected PersistentArray create(Master master,int rev,int baseline, BitSet history){