Author: schor
Date: Fri May  6 19:41:37 2016
New Revision: 1742601

URL: http://svn.apache.org/viewvc?rev=1742601&view=rev
Log:
[UIMA-4674] change feat offsets to short, for better locality of ref; 
precompute more boolean values 

Modified:
    
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java

Modified: 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java?rev=1742601&r1=1742600&r2=1742601&view=diff
==============================================================================
--- 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java
 (original)
+++ 
uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/cas/impl/FeatureImpl.java
 Fri May  6 19:41:37 2016
@@ -39,21 +39,24 @@ public class FeatureImpl implements Feat
    * the 0 based offset for this feature ignoring ref/int distinction, in 
feature order, without regard to JCas implemented features; set at commit time
    * used by v2 style de/serializers
    */
-  private       int featureOffset = -1;  
-  private       int adjustedFeatureOffset = -1; // the offset in the storage 
array for this feature, adjusted to exclude JCas implemented features; set at 
commit time
+  private       short featureOffset = -1;  
+  private       short adjustedFeatureOffset = -1; // the offset in the storage 
array for this feature, adjusted to exclude JCas implemented features; set at 
commit time
   
                 // not used 2/29/16 to be removed
 //                int registryIndex = -1; // set from JCas classes feature 
registry
                                         // used to setup index corruption 
bitset                
   public final boolean isInInt;        // specifies which array the data is in
-
+  private final boolean isMultipleRefsAllowed;
+  /**
+   * true if the range is a long or double
+   */
+  public final boolean isLongOrDouble; 
   private TypeImpl highestDefiningType;  // not final, could change
   
   private final TypeImpl rangeType;
   
 //  private final TypeSystemImpl ts;
 
-  private final boolean isMultipleRefsAllowed;
   /**
    * true for the feature which is the AnnotationBase sofa reference.
    */
@@ -77,6 +80,7 @@ public class FeatureImpl implements Feat
     shortName = null;
     slotKind = null;
     rangeTypeClass = 0;
+    isLongOrDouble = false;
   }
 
   FeatureImpl(TypeImpl typeImpl, String shortName, TypeImpl rangeType, 
TypeSystemImpl tsi, boolean isMultipleRefsAllowed, SlotKind slotKind) {
@@ -86,6 +90,7 @@ public class FeatureImpl implements Feat
   featureCode = feats.size();
   
   this.rangeType = rangeType;
+  this.isLongOrDouble = rangeType.isLongOrDouble;
   this.slotKind = slotKind;
   this.shortName = shortName;
   this.isMultipleRefsAllowed = isMultipleRefsAllowed;
@@ -145,8 +150,9 @@ public class FeatureImpl implements Feat
   @Override
   public String toString() {
     return String.format(
-        "%s [%s: rangeType=%s, isMultipleRefsAllowed=%s]",
-        this.getClass().getSimpleName(), getName(), rangeType, 
isMultipleRefsAllowed);
+        "%s [%s: rangeType=%s, isMultipleRefsAllowed=%s, slotKind=%s]",
+        this.getClass().getSimpleName(), getName(), rangeType, 
isMultipleRefsAllowed,
+        slotKind);
   }
 
 //  public String getGetterSetterName(boolean isGet) {
@@ -180,7 +186,10 @@ public class FeatureImpl implements Feat
   }
   
   void setOffset(int offset) {
-    featureOffset = offset;
+    if (offset > Short.MAX_VALUE) {
+      throw new RuntimeException("Feature Offset exceeds maximum of 32767");
+    }
+    featureOffset = (short) offset;
   }
   
   public int getAdjustedOffset() {
@@ -188,7 +197,10 @@ public class FeatureImpl implements Feat
   }
   
   void setAdjustedOffset(int offset) {    
-    adjustedFeatureOffset = offset;
+    if (offset > Short.MAX_VALUE) {
+      throw new RuntimeException("Feature Offset exceeds maximum of 32767");
+    }
+    adjustedFeatureOffset = (short) offset;
   }
 
 //  /**


Reply via email to