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);
+    }    
   }
 
   /**