21
21
22
22
public class SynchronizationLibrary implements Library {
23
23
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
+
24
30
public void load (Ruby runtime , boolean wrap ) throws IOException {
25
31
RubyModule synchronizationModule = runtime .
26
32
defineModule ("Concurrent" ).
@@ -36,15 +42,13 @@ public void load(Ruby runtime, boolean wrap) throws IOException {
36
42
synchronizedObjectJavaClass .defineAnnotatedMethods (JavaObject .class );
37
43
}
38
44
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
-
45
45
@ JRubyClass (name = "JavaObject" , parent = "AbstractObject" )
46
46
public static class JavaObject extends RubyObject {
47
47
48
+ public static final long AN_VOLATILE_FIELD_OFFSET =
49
+ UnsafeHolder .fieldOffset (JavaObject .class , "anVolatileField" );
50
+ private volatile int anVolatileField = 0 ;
51
+
48
52
public JavaObject (Ruby runtime , RubyClass metaClass ) {
49
53
super (runtime , metaClass );
50
54
}
@@ -114,10 +118,6 @@ public IRubyObject ensureIvarVisibilityBang(ThreadContext context) {
114
118
return context .nil ;
115
119
}
116
120
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
-
121
121
@ JRubyMethod (name = "instance_variable_get_volatile" , visibility = Visibility .PROTECTED )
122
122
public IRubyObject instanceVariableGetVolatile (ThreadContext context , IRubyObject name ) {
123
123
if (UnsafeHolder .U == null ) {
0 commit comments