summaryrefslogtreecommitdiff
path: root/java/src/json/ext/GeneratorService.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/json/ext/GeneratorService.java')
-rw-r--r--java/src/json/ext/GeneratorService.java7
1 files changed, 4 insertions, 3 deletions
diff --git a/java/src/json/ext/GeneratorService.java b/java/src/json/ext/GeneratorService.java
index b8deb22..2f3b07e 100644
--- a/java/src/json/ext/GeneratorService.java
+++ b/java/src/json/ext/GeneratorService.java
@@ -7,6 +7,7 @@
package json.ext;
import java.io.IOException;
+import java.lang.ref.WeakReference;
import org.jruby.Ruby;
import org.jruby.RubyClass;
@@ -23,15 +24,15 @@ public class GeneratorService implements BasicLibraryService {
runtime.getLoadService().require("json/common");
RuntimeInfo info = RuntimeInfo.initRuntime(runtime);
- info.jsonModule = runtime.defineModule("JSON");
- RubyModule jsonExtModule = info.jsonModule.defineModuleUnder("Ext");
+ info.jsonModule = new WeakReference<RubyModule>(runtime.defineModule("JSON"));
+ RubyModule jsonExtModule = info.jsonModule.get().defineModuleUnder("Ext");
RubyModule generatorModule = jsonExtModule.defineModuleUnder("Generator");
RubyClass stateClass =
generatorModule.defineClassUnder("State", runtime.getObject(),
GeneratorState.ALLOCATOR);
stateClass.defineAnnotatedMethods(GeneratorState.class);
- info.generatorStateClass = stateClass;
+ info.generatorStateClass = new WeakReference<RubyClass>(stateClass);
RubyModule generatorMethods =
generatorModule.defineModuleUnder("GeneratorMethods");