Skip to content

Commit 51264df

Browse files
committed
Skip the vectorized code if it cannot be compiled.
1 parent 700826b commit 51264df

File tree

3 files changed

+21
-8
lines changed

3 files changed

+21
-8
lines changed

Rakefile

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ end rescue nil
1515
JAVA_DIR = "java/src/json/ext"
1616
JAVA_RAGEL_PATH = "#{JAVA_DIR}/ParserConfig.rl"
1717
JAVA_PARSER_SRC = "#{JAVA_DIR}/ParserConfig.java"
18-
JAVA_SOURCES = FileList["#{JAVA_DIR}/*.java"]
19-
JAVA_VEC_SOURCES = FileList["#{JAVA_DIR}/vectorized/*.java"]
18+
JAVA_SOURCES = FileList["#{JAVA_DIR}/*.java"].exclude("#{JAVA_DIR}/Vectorized*.java")
19+
JAVA_VEC_SOURCES = FileList["#{JAVA_DIR}/Vectorized*.java"]
2020
JAVA_CLASSES = []
2121
JRUBY_PARSER_JAR = File.expand_path("lib/json/ext/parser.jar")
2222
JRUBY_GENERATOR_JAR = File.expand_path("lib/json/ext/generator.jar")
@@ -65,12 +65,26 @@ if defined?(RUBY_ENGINE) and RUBY_ENGINE == 'jruby'
6565

6666
JRUBY_JAR = File.join(CONFIG["libdir"], "jruby.jar")
6767
if File.exist?(JRUBY_JAR)
68+
classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * ':'
6869
JAVA_SOURCES.each do |src|
69-
classpath = (Dir['java/lib/*.jar'] << 'java/src' << JRUBY_JAR) * ':'
7070
obj = src.sub(/\.java\Z/, '.class')
7171
file obj => src do
72-
sh 'javac', '-classpath', classpath, '-source', '1.8', '-target', '1.8', src
73-
# '--enable-preview', '--add-modules', 'jdk.incubator.vector',
72+
sh 'javac', '-classpath', classpath, '-source', '1.8', '-target', '1.8', src
73+
# '--enable-preview',
74+
end
75+
JAVA_CLASSES << obj
76+
end
77+
78+
JAVA_VEC_SOURCES.each do |src|
79+
obj = src.sub(/\.java\Z/, '.class')
80+
file obj => src do
81+
sh 'javac', '--add-modules', 'jdk.incubator.vector', '-classpath', classpath, '--release', '16', src do |success, status|
82+
if success
83+
puts "*** 'jdk.incubator.vector' support enabled ***"
84+
else
85+
puts "*** 'jdk.incubator.vector' support disabled ***"
86+
end
87+
end
7488
end
7589
JAVA_CLASSES << obj
7690
end

java/src/json/ext/EscapeScanner.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import java.lang.reflect.Constructor;
44
import java.lang.reflect.InvocationTargetException;
5-
import java.util.Optional;
65

76
interface EscapeScanner {
87
static class State {

java/src/json/ext/vectorized/VectorizedEscapeScanner.java renamed to java/src/json/ext/VectorizedEscapeScanner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package json.ext.vectorized;
1+
package json.ext;
22

33
import java.io.IOException;
44

@@ -7,7 +7,7 @@
77
import jdk.incubator.vector.VectorOperators;
88
import jdk.incubator.vector.VectorSpecies;
99

10-
public class VectorizedEscapeScanner implements EscapeScanner {
10+
class VectorizedEscapeScanner implements EscapeScanner {
1111
public static EscapeScanner.ScalarEscapeScanner FALLBACK = new EscapeScanner.ScalarEscapeScanner(StringEncoder.ESCAPE_TABLE);
1212

1313
@Override

0 commit comments

Comments
 (0)