Skip to content

Commit 53a5a88

Browse files
committed
Added a system property to enable vectorized scanning and fix a bug after refactoring the vectorized class.
1 parent 51264df commit 53a5a88

File tree

1 file changed

+17
-9
lines changed

1 file changed

+17
-9
lines changed

java/src/json/ext/EscapeScanner.java

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,27 @@ static class State {
1414
}
1515

1616
static class VectorSupport {
17-
private static String VECTORIZED_ESCAPE_SCANNER_CLASS = "json.ext.vectorized.VectorizedEscapeScanner";
17+
private static String VECTORIZED_ESCAPE_SCANNER_CLASS = "json.ext.VectorizedEscapeScanner";
18+
private static String VECTORIZED_SCANNER_PROP = "json.enableVectorizedEscapeScanner";
19+
private static String VECTORIZED_SCANNER_DEFAULT = "false";
1820
static final EscapeScanner VECTORIZED_ESCAPE_SCANNER;
1921

2022
static {
2123
EscapeScanner scanner = null;
22-
try {
23-
Class<?> vectorEscapeScannerClass = EscapeScanner.class.getClassLoader().loadClass(VECTORIZED_ESCAPE_SCANNER_CLASS);
24-
Constructor<?> vectorizedEscapeScannerConstructor = vectorEscapeScannerClass.getDeclaredConstructor();
25-
scanner = (EscapeScanner) vectorizedEscapeScannerConstructor.newInstance();
26-
} catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
27-
// Fallback to the ScalarEscapeScanner if we cannot load the VectorizedEscapeScanner.
28-
System.err.println("Failed to load VectorizedEscapeScanner, falling back to ScalarEscapeScanner: " + e.getMessage());
29-
scanner = null;
24+
String enableVectorizedScanner = System.getProperty(VECTORIZED_SCANNER_PROP, VECTORIZED_SCANNER_DEFAULT);
25+
if ("true".equalsIgnoreCase(enableVectorizedScanner) || "1".equalsIgnoreCase(enableVectorizedScanner)) {
26+
try {
27+
Class<?> vectorEscapeScannerClass = EscapeScanner.class.getClassLoader().loadClass(VECTORIZED_ESCAPE_SCANNER_CLASS);
28+
Constructor<?> vectorizedEscapeScannerConstructor = vectorEscapeScannerClass.getDeclaredConstructor();
29+
scanner = (EscapeScanner) vectorizedEscapeScannerConstructor.newInstance();
30+
} catch (ClassNotFoundException | NoSuchMethodException | InstantiationException | IllegalAccessException | InvocationTargetException e) {
31+
// Fallback to the ScalarEscapeScanner if we cannot load the VectorizedEscapeScanner.
32+
System.err.println("Failed to load VectorizedEscapeScanner, falling back to ScalarEscapeScanner:");
33+
e.printStackTrace();
34+
scanner = null;
35+
}
36+
} else {
37+
System.err.println("VectorizedEscapeScanner disabled.");
3038
}
3139
VECTORIZED_ESCAPE_SCANNER = scanner;
3240
}

0 commit comments

Comments
 (0)