You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2018/01/02 20:38:16 UTC
svn commit: r1819895 - in
/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima:
cas/impl/CASImpl.java internal/util/CopyOnWriteObjHashSet.java
internal/util/CopyOnWriteOrderedFsSet_array.java
Author: schor
Date: Tue Jan 2 20:38:16 2018
New Revision: 1819895
URL: http://svn.apache.org/viewvc?rev=1819895&view=rev
Log:
improve copyOnWrite impls for size - is a constant. Minor refactoring in CASImpl.
Modified:
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteObjHashSet.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteOrderedFsSet_array.java
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1819895&r1=1819894&r2=1819895&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Tue Jan 2 20:38:16 2018
@@ -798,12 +798,12 @@ public class CASImpl extends AbstractCas
// assert(l.size() == (2 + fsIdGenerator));
final int p = fsIdGenerator;
- final int r = fsIdGenerator += isId2Fs
- ? lastFsV2Size
- : 1;
+ final int r = fsIdGenerator = peekNextFsId();
+
if (r < p) {
throw new RuntimeException("UIMA Cas Internal id value overflowed maximum int value");
}
+
if (isId2Fs) {
// this computation is partial - misses length of arrays stored on heap
// because that info not yet available
@@ -813,6 +813,17 @@ public class CASImpl extends AbstractCas
return r;
}
+ /**
+ * @return the lastUsedFsId + the size of that or 1
+ */
+ int peekNextFsId() {
+ return fsIdGenerator + lastFsV2IdIncr();
+ }
+
+ int lastFsV2IdIncr() {
+ return (isId2Fs ? lastFsV2Size : 1);
+ }
+
private CASImpl getViewFromSofaNbr(int nbr) {
final ArrayList<CASImpl> sn2v = sofaNbr2ViewMap;
if (nbr < sn2v.size()) {
@@ -4749,6 +4760,14 @@ public class CASImpl extends AbstractCas
return svd.fsIdGenerator;
}
+ final public int peekNextFsId() {
+ return svd.peekNextFsId();
+ }
+
+ final public int lastV2IdIncr() {
+ return svd.lastFsV2IdIncr();
+ }
+
/**
* Call this to capture the current value of fsIdGenerator and make it
* available to other threads.
@@ -5326,7 +5345,7 @@ public class CASImpl extends AbstractCas
// - v.toString()
}
- private static int debug2cnt = 0;
+// private static int debug2cnt = 0;
/**
* @param v
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteObjHashSet.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteObjHashSet.java?rev=1819895&r1=1819894&r2=1819895&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteObjHashSet.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteObjHashSet.java Tue Jan 2 20:38:16 2018
@@ -36,10 +36,13 @@ public class CopyOnWriteObjHashSet<T> im
private ObjHashSet<T> original;
+ private final int original_size;
+
public CopyOnWriteObjHashSet(ObjHashSet<T> original) {
this.ohs = original;
this.original = original;
+ this.original_size = original.size();
}
/**
@@ -62,12 +65,7 @@ public class CopyOnWriteObjHashSet<T> im
public int find(T obj) {
return ohs.find(obj);
}
-
-// @Override
-// public int size() {
-//
-// }
-
+
/**
* For iterator use
* @param index a magic number returned by the internal find
@@ -172,8 +170,8 @@ public class CopyOnWriteObjHashSet<T> im
* @see ObjHashSet#size()
* @return the size
*/
- public int size() {
- return ohs.size();
+ final public int size() {
+ return original_size;
}
/* (non-Javadoc)
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteOrderedFsSet_array.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteOrderedFsSet_array.java?rev=1819895&r1=1819894&r2=1819895&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteOrderedFsSet_array.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/internal/util/CopyOnWriteOrderedFsSet_array.java Tue Jan 2 20:38:16 2018
@@ -35,6 +35,7 @@ public class CopyOnWriteOrderedFsSet_arr
final public int a_firstUsedslot;
final public int a_nextFreeslot;
final public OrderedFsSet_array<TOP> original;
+ final private int original_size;
public TOP[] a; // derived from "set" above
@@ -46,6 +47,7 @@ public class CopyOnWriteOrderedFsSet_arr
this.a_firstUsedslot = original.a_firstUsedslot;
this.a_nextFreeslot = original.a_nextFreeslot;
this.a = original.a;
+ this.original_size = original.size();
}
/**
@@ -89,8 +91,8 @@ public class CopyOnWriteOrderedFsSet_arr
* @see OrderedFsSet_array#size()
* @return the size of this version of the index (maybe not the current index size)
*/
- public int size() {
- return a_nextFreeslot - a_firstUsedslot;
+ final public int size() {
+ return original_size;
}
// /**