From 2716bf7f5a673ce8e8003eb5fbfaf0b82fce00a2 Mon Sep 17 00:00:00 2001 From: Lucas Allan Amorim Date: Wed, 28 Jan 2015 10:04:54 -0800 Subject: [PATCH] Replaces compiled Java with JRuby interop --- .../org/jruby/ext/ref/ReferencesService.java | 28 ------------ .../org/jruby/ext/ref/RubySoftReference.java | 43 ------------------ .../org/jruby/ext/ref/RubyWeakReference.java | 43 ------------------ lib/org/jruby/ext/ref/references.jar | Bin 4545 -> 0 bytes lib/ref.rb | 12 ++--- lib/ref/jruby/soft_reference.rb | 13 ++++++ lib/ref/jruby/weak_reference.rb | 15 ++++++ 7 files changed, 33 insertions(+), 121 deletions(-) delete mode 100644 ext/java/org/jruby/ext/ref/ReferencesService.java delete mode 100644 ext/java/org/jruby/ext/ref/RubySoftReference.java delete mode 100644 ext/java/org/jruby/ext/ref/RubyWeakReference.java delete mode 100644 lib/org/jruby/ext/ref/references.jar create mode 100644 lib/ref/jruby/soft_reference.rb create mode 100644 lib/ref/jruby/weak_reference.rb diff --git a/ext/java/org/jruby/ext/ref/ReferencesService.java b/ext/java/org/jruby/ext/ref/ReferencesService.java deleted file mode 100644 index 5ef38f8..0000000 --- a/ext/java/org/jruby/ext/ref/ReferencesService.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.jruby.ext.ref; - -import java.io.IOException; -import org.jruby.Ruby; -import org.jruby.RubyClass; -import org.jruby.RubyModule; -import org.jruby.runtime.builtin.IRubyObject; -import org.jruby.runtime.load.BasicLibraryService; - -/** - * This library adds native Java support for weak and soft references. - * - * @author Brian Durand - */ -public class ReferencesService implements BasicLibraryService { - public boolean basicLoad(Ruby runtime) throws IOException { - RubyModule refModule = runtime.getModule("Ref"); - RubyClass referenceClass = refModule.getClass("Reference"); - - RubyClass rubyWeakReferenceClass = runtime.defineClassUnder("WeakReference", referenceClass, RubyWeakReference.ALLOCATOR, refModule); - rubyWeakReferenceClass.defineAnnotatedMethods(RubyWeakReference.class); - - RubyClass rubySoftReferenceClass = runtime.defineClassUnder("SoftReference", referenceClass, RubySoftReference.ALLOCATOR, refModule); - rubySoftReferenceClass.defineAnnotatedMethods(RubySoftReference.class); - - return true; - } -} diff --git a/ext/java/org/jruby/ext/ref/RubySoftReference.java b/ext/java/org/jruby/ext/ref/RubySoftReference.java deleted file mode 100644 index 55690fc..0000000 --- a/ext/java/org/jruby/ext/ref/RubySoftReference.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.jruby.ext.ref; - -import java.lang.ref.SoftReference; -import org.jruby.Ruby; -import org.jruby.RubyClass; -import org.jruby.RubyObject; -import org.jruby.anno.JRubyMethod; -import org.jruby.runtime.builtin.IRubyObject; -import org.jruby.runtime.ObjectAllocator; -import org.jruby.runtime.ThreadContext; -import org.jruby.runtime.Visibility; - -public class RubySoftReference extends RubyObject { - private SoftReference _ref; - private static final String REFERENCED_OBJECT_ID_VARIABLE = "@referenced_object_id".intern(); - - public RubySoftReference(Ruby runtime, RubyClass klass) { - super(runtime, klass); - } - - public static final ObjectAllocator ALLOCATOR = new ObjectAllocator() { - public IRubyObject allocate(Ruby runtime, RubyClass klass) { - return new RubySoftReference(runtime, klass); - } - }; - - @JRubyMethod(name = "initialize", frame = true, visibility = Visibility.PRIVATE) - public IRubyObject initialize(ThreadContext context, IRubyObject obj) { - _ref = new SoftReference(obj); - fastSetInstanceVariable(REFERENCED_OBJECT_ID_VARIABLE, obj.id()); - return context.getRuntime().getNil(); - } - - @JRubyMethod(name = "object") - public IRubyObject object() { - IRubyObject obj = (IRubyObject)_ref.get(); - if (obj != null) { - return obj; - } else { - return getRuntime().getNil(); - } - } -} diff --git a/ext/java/org/jruby/ext/ref/RubyWeakReference.java b/ext/java/org/jruby/ext/ref/RubyWeakReference.java deleted file mode 100644 index 2e9b0f2..0000000 --- a/ext/java/org/jruby/ext/ref/RubyWeakReference.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.jruby.ext.ref; - -import java.lang.ref.WeakReference; -import org.jruby.Ruby; -import org.jruby.RubyClass; -import org.jruby.RubyObject; -import org.jruby.anno.JRubyMethod; -import org.jruby.runtime.builtin.IRubyObject; -import org.jruby.runtime.ObjectAllocator; -import org.jruby.runtime.ThreadContext; -import org.jruby.runtime.Visibility; - -public class RubyWeakReference extends RubyObject { - private WeakReference _ref; - private static final String REFERENCED_OBJECT_ID_VARIABLE = "@referenced_object_id".intern(); - - public RubyWeakReference(Ruby runtime, RubyClass klass) { - super(runtime, klass); - } - - public static final ObjectAllocator ALLOCATOR = new ObjectAllocator() { - public IRubyObject allocate(Ruby runtime, RubyClass klass) { - return new RubyWeakReference(runtime, klass); - } - }; - - @JRubyMethod(name = "initialize", frame = true, visibility = Visibility.PRIVATE) - public IRubyObject initialize(ThreadContext context, IRubyObject obj) { - _ref = new WeakReference(obj); - fastSetInstanceVariable(REFERENCED_OBJECT_ID_VARIABLE, obj.id()); - return context.getRuntime().getNil(); - } - - @JRubyMethod(name = "object") - public IRubyObject object() { - IRubyObject obj = (IRubyObject)_ref.get(); - if (obj != null) { - return obj; - } else { - return getRuntime().getNil(); - } - } -} diff --git a/lib/org/jruby/ext/ref/references.jar b/lib/org/jruby/ext/ref/references.jar deleted file mode 100644 index 171d717e1f96ec199f7a6c1f3f1b74873e1d3972..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4545 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