mirror of https://github.com/apache/lucene.git
LUCENE-4711: workaround to J9 1.7.0 JIT bug
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1439327 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
6b3823e6a3
commit
bb6a447c77
|
@ -1,6 +1,5 @@
|
||||||
package org.apache.lucene.facet.taxonomy;
|
package org.apache.lucene.facet.taxonomy;
|
||||||
|
|
||||||
import org.apache.lucene.util.Constants;
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -28,10 +27,6 @@ import org.apache.lucene.util.Constants;
|
||||||
*/
|
*/
|
||||||
public class CategoryPath implements Comparable<CategoryPath> {
|
public class CategoryPath implements Comparable<CategoryPath> {
|
||||||
|
|
||||||
// TODO: revisit when IBM releases Java 7 newer than SR3 (with a fix)
|
|
||||||
// to validate, run e.g. TestAssociationExample with -Dtests.iters=1000
|
|
||||||
private static final boolean IS_J9_JAVA7 = Constants.JRE_IS_MINIMUM_JAVA7 && Constants.JVM_VENDOR.contains("IBM");
|
|
||||||
|
|
||||||
/** An empty {@link CategoryPath} */
|
/** An empty {@link CategoryPath} */
|
||||||
public static final CategoryPath EMPTY = new CategoryPath();
|
public static final CategoryPath EMPTY = new CategoryPath();
|
||||||
|
|
||||||
|
@ -48,7 +43,7 @@ public class CategoryPath implements Comparable<CategoryPath> {
|
||||||
|
|
||||||
// Used by singleton EMPTY
|
// Used by singleton EMPTY
|
||||||
private CategoryPath() {
|
private CategoryPath() {
|
||||||
components = new String[0];
|
components = null;
|
||||||
length = 0;
|
length = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,16 +62,7 @@ public class CategoryPath implements Comparable<CategoryPath> {
|
||||||
/** Construct from the given path components. */
|
/** Construct from the given path components. */
|
||||||
public CategoryPath(final String... components) {
|
public CategoryPath(final String... components) {
|
||||||
assert components.length > 0 : "use CategoryPath.EMPTY to create an empty path";
|
assert components.length > 0 : "use CategoryPath.EMPTY to create an empty path";
|
||||||
if (IS_J9_JAVA7) {
|
this.components = components;
|
||||||
// On IBM J9 Java 1.7.0, if we do 'this.components = components', then
|
|
||||||
// at some point its length becomes 0 ... quite unexpectedly. If JIT is
|
|
||||||
// disabled, it doesn't happen. This bypasses the bug by copying the
|
|
||||||
// array (note, Arrays.copyOf did not help either!).
|
|
||||||
this.components = new String[components.length];
|
|
||||||
System.arraycopy(components, 0, this.components, 0, components.length);
|
|
||||||
} else {
|
|
||||||
this.components = components;
|
|
||||||
}
|
|
||||||
length = components.length;
|
length = components.length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +70,7 @@ public class CategoryPath implements Comparable<CategoryPath> {
|
||||||
public CategoryPath(final String pathString, final char delimiter) {
|
public CategoryPath(final String pathString, final char delimiter) {
|
||||||
String[] comps = pathString.split(Character.toString(delimiter));
|
String[] comps = pathString.split(Character.toString(delimiter));
|
||||||
if (comps.length == 1 && comps[0].isEmpty()) {
|
if (comps.length == 1 && comps[0].isEmpty()) {
|
||||||
components = EMPTY.components;
|
components = null;
|
||||||
length = 0;
|
length = 0;
|
||||||
} else {
|
} else {
|
||||||
components = comps;
|
components = comps;
|
||||||
|
|
Loading…
Reference in New Issue