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 2013/03/28 19:14:27 UTC

svn commit: r1462242 - in /uima/uimaj/branches/filteredCompress-uima-2498: uima-docbook-references/ uima-docbook-tutorials-and-users-guides/ uimaj-core/ uimaj-core/src/main/java/ uimaj-core/src/main/java/org/apache/uima/cas/impl/ uimaj-core/src/test/ja...

Author: schor
Date: Thu Mar 28 18:14:26 2013
New Revision: 1462242

URL: http://svn.apache.org/r1462242
Log:
[UIMA-2498] diagnose Math.abs failure, and put in workaround

Modified:
    uima/uimaj/branches/filteredCompress-uima-2498/uima-docbook-references/   (props changed)
    uima/uimaj/branches/filteredCompress-uima-2498/uima-docbook-tutorials-and-users-guides/   (props changed)
    uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/   (props changed)
    uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/   (props changed)
    uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java
    uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
    uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java

Propchange: uima/uimaj/branches/filteredCompress-uima-2498/uima-docbook-references/
------------------------------------------------------------------------------
  Merged /uima/uimaj/trunk/uima-docbook-references:r1436573-1462089

Propchange: uima/uimaj/branches/filteredCompress-uima-2498/uima-docbook-tutorials-and-users-guides/
------------------------------------------------------------------------------
  Merged /uima/uimaj/trunk/uima-docbook-tutorials-and-users-guides:r1436573-1462089

Propchange: uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/
------------------------------------------------------------------------------
  Merged /uima/uimaj/trunk/uimaj-core:r1461825-1462089

Propchange: uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/
------------------------------------------------------------------------------
  Merged /uima/uimaj/trunk/uimaj-core/src/main/java:r1461825-1462089

Modified: uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java?rev=1462242&r1=1462241&r2=1462242&view=diff
==============================================================================
--- uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java (original)
+++ uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes4.java Thu Mar 28 18:14:26 2013
@@ -1144,7 +1144,12 @@ public class BinaryCasSerDes4 {
       if (((v > 0) && (prev > 0)) ||
           ((v < 0) && (prev < 0))) {
         final int diff = v - prev;  // guaranteed not to overflow
-        final int absDiff = Math.abs(diff);
+//      Math.abs of Integer.MIN_VALUE + 1 sometimes (after jit?) (on some JVMs) gives wrong annswer
+        // failure observed on IBM Java 7 SR1 and SR2  3/28/2013 schor
+        // failure only observed when running entire suite of uimaj-core tests via eclipse - mvn test doesn't fail
+//        final int absDiff = Math.abs(diff);
+        // this seems to work around
+        final int absDiff = (diff < 0) ? -diff : diff; 
         writeVnumber(kind, 
             (absV <= absDiff) ? 
                 ((long)absV << 2)    + ((v < 0) ? 2L : 0L) :

Modified: uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java?rev=1462242&r1=1462241&r2=1462242&view=diff
==============================================================================
--- uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java (original)
+++ uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/main/java/org/apache/uima/cas/impl/BinaryCasSerDes6.java Thu Mar 28 18:14:26 2013
@@ -1163,8 +1163,30 @@ public class BinaryCasSerDes6 {
     final int absV = Math.abs(v);
     if (((v > 0) && (prev > 0)) ||
         ((v < 0) && (prev < 0))) {
-      final int diff = v - prev;  // guaranteed not to overflow
-      final int absDiff = Math.abs(diff);
+      final int diff = v - prev;  // guaranteed to not overflow because signs are the same
+//      // handle strange behavior after JIT where the Math.abs(0x7fffffff) gives Integer.MIN_VALUE
+//      // for arguments v = 0xffffffff, and prev = Integer.MIN_VALUE
+//      final int diff = (prev == Integer.MIN_VALUE) ?
+//          // v is guaranteed to be negative
+//          (v & 0x7fffffff) :
+//          v - prev;  
+//      final int absDiff = Math.abs(diff);
+      // this seems to work around
+      final int absDiff = (diff < 0) ? -diff : diff; 
+      // debug failure in Math.abs
+      if (absDiff < 0) {
+        System.err.format("********* caught absdiff v = %s, prev = %s diff = %s absDiff = %s%n", 
+            Integer.toHexString(v),
+            Integer.toHexString(prev),
+            Integer.toHexString(diff),
+            Integer.toHexString(absDiff));
+      }
+      if (absV < 0) {
+        System.err.format("********* caught absv v = %s, absV = %s%n", 
+            Integer.toHexString(v),
+            Integer.toHexString(absV));
+      }
+
       writeVnumber(kind, 
           (absV <= absDiff) ? 
               ((long)absV << 2)    + ((v < 0) ? 2L : 0L) :

Modified: uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java
URL: http://svn.apache.org/viewvc/uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java?rev=1462242&r1=1462241&r2=1462242&view=diff
==============================================================================
--- uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java (original)
+++ uima/uimaj/branches/filteredCompress-uima-2498/uimaj-core/src/test/java/org/apache/uima/cas/impl/SerDesTest6.java Thu Mar 28 18:14:26 2013
@@ -224,9 +224,9 @@ public class SerDesTest6 extends TestCas
   public SerDesTest6() {
     Random sg = new Random();
     long seed = sg.nextLong();
-//    seed = 1536337128105529870L;
+//    seed =  -2659090483652661635L;
     random = new Random(seed);
-    System.out.format("RandomSeed: %,d%n", seed);
+//    System.out.format("RandomSeed: %,d%n", seed);
 
     mSrc = setupTTypeSystem(TwoTypes);
     casSrc = mSrc.cas;