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 2016/10/27 13:25:02 UTC
svn commit: r1766818 - in
/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima:
cas/impl/ jcas/cas/
Author: schor
Date: Thu Oct 27 13:25:02 2016
New Revision: 1766818
URL: http://svn.apache.org/viewvc?rev=1766818&view=rev
Log:
[UIMA-5162] add for-now-disabled code to switch the internal IDs to use the v2 style. The expected benefit in serialization did not appear because the same mapping tables need to be built in any case because some of the FSs are not reachable any more in v3.
Modified:
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/CASImpl.java Thu Oct 27 13:25:02 2016
@@ -126,6 +126,7 @@ import org.apache.uima.util.Level;
*/
public class CASImpl extends AbstractCas_ImplBase implements CAS, CASMgr, LowLevelCAS, TypeSystemConstants {
+ public static final boolean IS_USE_V2_IDS = false; // if false, ids increment by 1
private static final boolean trace = false; // debug
public static final boolean traceFSs = false; // debug - trace FS creation and update
private static final String traceFile = "traceFSs.log.txt";
@@ -439,9 +440,18 @@ public class CASImpl extends AbstractCas
boolean disableAutoCorruptionCheck = false;
// used to generate FSIDs, increments by 1 for each use. First id == 1
+ /**
+ * The fsId of the last created FS
+ * used to generate FSIDs, increments by 1 for each use. First id == 1
+ */
private int fsIdGenerator = 0;
/**
+ * The version 2 size on the main heap of the last created FS
+ */
+ private int lastFsV2Size = 1;
+
+ /**
* used to "capture" the fsIdGenerator value for a read-only CAS to be visible in
* other threads
*/
@@ -643,6 +653,33 @@ public class CASImpl extends AbstractCas
generators = baseGenerators;
id2tramp = null;
}
+
+ private int getNextFsId(TOP fs) {
+ if (reuseId != 0) {
+// l.setStrongRef(fs, reuseId);
+ return reuseId;
+ }
+
+ // l.add(fs);
+ // if (id2fs.size() != (2 + fsIdGenerator.get())) {
+ // System.out.println("debug out of sync id generator and id2fs size");
+ // }
+ // assert(l.size() == (2 + fsIdGenerator));
+ final int p = fsIdGenerator;
+
+ final int r = fsIdGenerator += IS_USE_V2_IDS
+ ? lastFsV2Size
+ : 1;
+ if (r < p) {
+ throw new RuntimeException("UIMA Cas Internal id value overflowed maximum int value");
+ }
+ if (IS_USE_V2_IDS) {
+ // this computation is partial - misses length of arrays stored on heap
+ // because that info not yet available
+ lastFsV2Size = fs._getTypeImpl().getFsSpaceReq();
+ }
+ return r;
+ }
}
/*****************************************************************
@@ -4424,23 +4461,11 @@ public class CASImpl extends AbstractCas
}
final public int getNextFsId(TOP fs) {
-// Id2FS l = svd.id2fs;
- if (svd.reuseId != 0) {
-// l.setStrongRef(fs, svd.reuseId);
- return svd.reuseId;
- }
-
-// l.add(fs);
-// if (svd.id2fs.size() != (2 + svd.fsIdGenerator.get())) {
-// System.out.println("debug out of sync id generator and id2fs size");
-// }
-// assert(l.size() == (2 + svd.fsIdGenerator));
- int p = svd.fsIdGenerator;
- int r = ++ svd.fsIdGenerator;
- if (r < p) {
- throw new RuntimeException("UIMA Cas Internal id value overflowed maximum int value");
- }
- return r;
+ return svd.getNextFsId(fs);
+ }
+
+ public void adjustLastFsV2size(int arrayLength) {
+ svd.lastFsV2Size += 1 + arrayLength; // 1 is for array length value
}
/**
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java Thu Oct 27 13:25:02 2016
@@ -67,6 +67,9 @@ public final class BooleanArray extends
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
}
/**
@@ -81,6 +84,9 @@ public final class BooleanArray extends
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
}
/**
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java Thu Oct 27 13:25:02 2016
@@ -63,6 +63,9 @@ public final class ByteArray extends TOP
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
}
/**
@@ -78,6 +81,9 @@ public final class ByteArray extends TOP
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
}
/**
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java Thu Oct 27 13:25:02 2016
@@ -64,6 +64,9 @@ public final class DoubleArray extends T
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
}
/**
@@ -79,6 +82,9 @@ public final class DoubleArray extends T
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
}
/**
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java Thu Oct 27 13:25:02 2016
@@ -72,6 +72,9 @@ public final class FSArray extends TOP i
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
/**
@@ -89,6 +92,9 @@ public final class FSArray extends TOP i
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java Thu Oct 27 13:25:02 2016
@@ -63,6 +63,9 @@ public final class FloatArray extends TO
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
/**
@@ -78,6 +81,9 @@ public final class FloatArray extends TO
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java Thu Oct 27 13:25:02 2016
@@ -63,6 +63,9 @@ public final class IntegerArray extends
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
/**
@@ -78,6 +81,9 @@ public final class IntegerArray extends
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
/**
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java Thu Oct 27 13:25:02 2016
@@ -66,6 +66,9 @@ public final class JavaObjectArray exten
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
/**
@@ -81,6 +84,9 @@ public final class JavaObjectArray exten
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java Thu Oct 27 13:25:02 2016
@@ -63,6 +63,9 @@ public final class LongArray extends TOP
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
}
/**
@@ -78,6 +81,9 @@ public final class LongArray extends TOP
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
}
/**
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java Thu Oct 27 13:25:02 2016
@@ -63,6 +63,9 @@ public final class ShortArray extends TO
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
}
/**
@@ -78,7 +81,10 @@ public final class ShortArray extends TO
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
- }
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(2); // space for length and ref
+ }
+ }
/**
* @see org.apache.uima.cas.ShortArrayFS#get(int)
Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java?rev=1766818&r1=1766817&r2=1766818&view=diff
==============================================================================
--- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java (original)
+++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java Thu Oct 27 13:25:02 2016
@@ -63,6 +63,9 @@ public final class StringArray extends T
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
/**
@@ -78,6 +81,9 @@ public final class StringArray extends T
if (CASImpl.traceFSs) {
_casView.traceFSCreate(this);
}
+ if (CASImpl.IS_USE_V2_IDS) {
+ _casView.adjustLastFsV2size(length);
+ }
}
/**