-
-
Notifications
You must be signed in to change notification settings - Fork 925
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ji] lazy loading of Java (proxy) class extensions (#5161)
* [ji] lazy loading Java (proxy) class extensions as they're being used * of course, need to track Java extension loading per runtime * [ji] its for the best to have -Xji.load.lazy=false switch available * [refactor] less confusing proxy class/module local variable name
- 9.4.12.0
- 9.4.11.0
- 9.4.10.0
- 9.4.9.0
- 9.4.8.0
- 9.4.7.0
- 9.4.6.0
- 9.4.5.0
- 9.4.4.0
- 9.4.3.0
- 9.4.2.0
- 9.4.1.0
- 9.4.0.0
- 9.3.15.0
- 9.3.14.0
- 9.3.13.0
- 9.3.12.0
- 9.3.11.0
- 9.3.10.0
- 9.3.9.0
- 9.3.8.0
- 9.3.7.0
- 9.3.6.0
- 9.3.5.0
- 9.3.4.0
- 9.3.3.0
- 9.3.2.0
- 9.3.1.0
- 9.3.0.0
- 9.2.21.0
- 9.2.20.1
- 9.2.20.0
- 9.2.19.0
- 9.2.18.0
- 9.2.17.0
- 9.2.16.0
- 9.2.15.0
- 9.2.14.0
- 9.2.13.0
- 9.2.12.0
- 9.2.11.1
- 9.2.11.0
- 9.2.10.0
- 9.2.9.0
- 9.2.8.0
- 9.2.7.0
- 9.2.6.0
- 9.2.5.0
- 9.2.4.1
- 9.2.4.0
- 9.2.3.0
- 9.2.2.0
- 9.2.1.0
- 9.2.0.0
Showing
10 changed files
with
154 additions
and
128 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
36 changes: 36 additions & 0 deletions
36
core/src/main/java/org/jruby/javasupport/ext/JavaExtensions.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package org.jruby.javasupport.ext; | ||
|
||
import org.jruby.Ruby; | ||
import org.jruby.RubyModule; | ||
import org.jruby.util.cli.Options; | ||
|
||
import java.util.function.Consumer; | ||
|
||
/** | ||
* Lazy Java class extensions initialization. | ||
* | ||
* @note Internal API | ||
* @author kares | ||
*/ | ||
public class JavaExtensions { | ||
|
||
private static final boolean LAZY = Options.JI_LOAD_LAZY.load();; | ||
|
||
private JavaExtensions() { /* hidden */ } | ||
|
||
static void put(final Ruby runtime, Class javaClass, Consumer<RubyModule> proxyClass) { | ||
if (!LAZY) { | ||
proxyClass.accept( org.jruby.javasupport.Java.getProxyClass(runtime, javaClass) ); | ||
return; | ||
} | ||
Object previous = runtime.getJavaExtensionDefinitions().put(javaClass, proxyClass); | ||
assert previous == null; | ||
} | ||
|
||
public static void define(final Ruby runtime, final Class javaClass, final RubyModule proxyClass) { | ||
runtime.getJavaExtensionDefinitions().getOrDefault(javaClass, NOOP).accept(proxyClass); | ||
} | ||
|
||
private static final Consumer<RubyModule> NOOP = (noop) -> { /* no extensions */ }; | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters