2121
2222public class SynchronizationLibrary implements Library {
2323
24+ private static final ObjectAllocator JRUBYREFERENCE_ALLOCATOR = new ObjectAllocator () {
25+ public IRubyObject allocate (Ruby runtime , RubyClass klazz ) {
26+ return new JavaObject (runtime , klazz );
27+ }
28+ };
29+
2430 public void load (Ruby runtime , boolean wrap ) throws IOException {
2531 RubyModule synchronizationModule = runtime .
2632 defineModule ("Concurrent" ).
@@ -36,15 +42,13 @@ public void load(Ruby runtime, boolean wrap) throws IOException {
3642 synchronizedObjectJavaClass .defineAnnotatedMethods (JavaObject .class );
3743 }
3844
39- private static final ObjectAllocator JRUBYREFERENCE_ALLOCATOR = new ObjectAllocator () {
40- public IRubyObject allocate (Ruby runtime , RubyClass klazz ) {
41- return new JavaObject (runtime , klazz );
42- }
43- };
44-
4545 @ JRubyClass (name = "JavaObject" , parent = "AbstractObject" )
4646 public static class JavaObject extends RubyObject {
4747
48+ public static final long AN_VOLATILE_FIELD_OFFSET =
49+ UnsafeHolder .fieldOffset (JavaObject .class , "anVolatileField" );
50+ private volatile int anVolatileField = 0 ;
51+
4852 public JavaObject (Ruby runtime , RubyClass metaClass ) {
4953 super (runtime , metaClass );
5054 }
@@ -114,10 +118,6 @@ public IRubyObject ensureIvarVisibilityBang(ThreadContext context) {
114118 return context .nil ;
115119 }
116120
117- private volatile int anVolatileField = 0 ; // TODO unused on JAVA8
118- public static final long AN_VOLATILE_FIELD_OFFSET =
119- UnsafeHolder .fieldOffset (JavaObject .class , "anVolatileField" );
120-
121121 @ JRubyMethod (name = "instance_variable_get_volatile" , visibility = Visibility .PROTECTED )
122122 public IRubyObject instanceVariableGetVolatile (ThreadContext context , IRubyObject name ) {
123123 if (UnsafeHolder .U == null ) {
0 commit comments