@@ -7,42 +7,57 @@ module Utility
77 # @!visibility private
88 module NativeExtensionLoader
99
10- @c_ext_loaded ||= false
11- @java_ext_loaded ||= false
12-
13- # @!visibility private
1410 def allow_c_extensions?
1511 Concurrent . on_cruby?
1612 end
1713
18- if Concurrent . on_cruby? && !@c_ext_loaded
19- tries = [
20- lambda do
21- require 'concurrent/extension'
22- @c_ext_loaded = true
23- end ,
24- lambda do
25- # may be a Windows cross-compiled native gem
26- require "concurrent/#{ RUBY_VERSION [ 0 ..2 ] } /extension"
27- @c_ext_loaded = true
28- end ]
29-
30- tries . each do |try |
31- begin
32- try . call
33- break
34- rescue LoadError
35- next
14+ def c_extensions_loaded?
15+ @c_extensions_loaded ||= false
16+ end
17+
18+ def java_extensions_loaded?
19+ @java_extensions_loaded ||= false
20+ end
21+
22+ def set_c_extensions_loaded
23+ @c_extensions_loaded = true
24+ end
25+
26+ def set_java_extensions_loaded
27+ @java_extensions_loaded = true
28+ end
29+
30+ def load_native_extensions
31+ if Concurrent . on_cruby? && !c_extensions_loaded?
32+ tries = [
33+ lambda do
34+ require 'concurrent/extension'
35+ set_c_extensions_loaded
36+ end ,
37+ lambda do
38+ # may be a Windows cross-compiled native gem
39+ require "concurrent/#{ RUBY_VERSION [ 0 ..2 ] } /extension"
40+ set_c_extensions_loaded
41+ end ]
42+
43+ tries . each do |try |
44+ begin
45+ try . call
46+ break
47+ rescue LoadError
48+ next
49+ end
3650 end
3751 end
38- end
3952
40- if Concurrent . on_jruby? && !@java_ext_loaded
41- begin
42- require 'concurrent_ruby_ext'
43- @java_ext_loaded = true
44- rescue LoadError
45- # move on with pure-Ruby implementations
53+ if Concurrent . on_jruby? && !java_extensions_loaded?
54+ begin
55+ require 'concurrent_ruby_ext'
56+ set_java_extensions_loaded
57+ rescue LoadError
58+ # move on with pure-Ruby implementations
59+ warn 'On JRuby but Java extensions failed to load.'
60+ end
4661 end
4762 end
4863 end
@@ -51,3 +66,5 @@ def allow_c_extensions?
5166 # @!visibility private
5267 extend Utility ::NativeExtensionLoader
5368end
69+
70+ Concurrent . load_native_extensions
0 commit comments