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;