Workaround for Hotspot bug that lets tests run without -Xint, from Steven Parkes

git-svn-id: https://zxing.googlecode.com/svn/trunk@1526 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
srowen 2010-08-13 03:30:58 +00:00
parent b868c6e3ae
commit 073a3033fc
2 changed files with 7 additions and 3 deletions

View file

@ -148,7 +148,6 @@
<assertions>
<enable/>
</assertions>
<jvmarg value="-Xint"/> <!-- works around weird JIT bug in Java 6 -->
<batchtest>
<fileset dir="test/src">
<include name="**/${subdir}/*BlackBox*TestCase.java"/>

View file

@ -172,8 +172,13 @@ public final class ReedSolomonDecoder {
int denominator = 1;
for (int j = 0; j < s; j++) {
if (i != j) {
denominator = field.multiply(denominator,
GF256.addOrSubtract(1, field.multiply(errorLocations[j], xiInverse)));
//denominator = field.multiply(denominator,
// GF256.addOrSubtract(1, field.multiply(errorLocations[j], xiInverse)));
// Above should work but fails on some Apple and Linux JDKs due to a Hotspot bug.
// Below is a funny-looking workaround from Steven Parkes
int term = field.multiply(errorLocations[j], xiInverse);
int termPlus1 = ((term & 0x1) == 0) ? (term | 1) : (term & ~1);
denominator = field.multiply(denominator, termPlus1);
}
}
result[i] = field.multiply(errorEvaluator.evaluateAt(xiInverse),