Skip to content

Commit c252d78

Browse files
author
Petr Chalupa
committed
Merge pull request #276 from ruby-concurrency/synchronization
Synchronization: Remove mistakenly added lines
2 parents f9cf17f + 22fda86 commit c252d78

File tree

5 files changed

+0
-103
lines changed

5 files changed

+0
-103
lines changed

lib/concurrent/synchronization/abstract_object.rb

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -118,78 +118,6 @@ def ns_signal
118118
def ns_broadcast
119119
raise NotImplementedError
120120
end
121-
122-
# @example
123-
# def initialize
124-
# @val = :val # final never changed value
125-
# ensure_ivar_visibility!
126-
# # not it can be shared as Java's immutable objects with final fields
127-
# end
128-
def ensure_ivar_visibility!
129-
raise NotImplementedError
130-
end
131-
132-
def self.attr_volatile *names
133-
attr_accessor *names.map { |name| :"volatile_#{name}" }
134-
end
135-
136-
module CasAttributes
137-
def list_attr_volatile_cas
138-
@attr_volatile_cas_names ||= []
139-
# @attr_volatile_cas_names +
140-
# if superclass.respond_to?(:list_attr_volatile_cas)
141-
# superclass.list_attr_volatile_cas
142-
# else
143-
# []
144-
# end
145-
end
146-
147-
def attr_volatile_cas *names
148-
names.each do |name|
149-
class_eval <<-RUBY
150-
def #(name}
151-
#{CasAttributes.ivar_name(name)}.get
152-
end
153-
154-
def #(name}=(value)
155-
#{CasAttributes.ivar_name(name)}.set value
156-
end
157-
158-
def #(name}_cas(old, value)
159-
#{CasAttributes.ivar_name(name)}.compare_and_set old, value
160-
end
161-
162-
RUBY
163-
164-
define_method name do
165-
instance_variable_get CasAttributes.ivar_name(name)
166-
end
167-
168-
define_method "#{name}=" do |value|
169-
instance_variable_set CasAttributes.ivar_name(name), value
170-
Rubinius.memory_barrier
171-
end
172-
end
173-
end
174-
175-
def self.ivar_name(name)
176-
:"@volatile_cas_#{name}"
177-
end
178-
179-
def self.extended(base)
180-
base.include InstanceMethods
181-
end
182-
183-
module InstanceMethods
184-
def initialize
185-
self.class.list_attr_volatile_cas.each do |name|
186-
isntance_variable_set CasAttributes.ivar_name(name), Atomic.new(nil)
187-
end
188-
ensure_ivar_visibility!
189-
super
190-
end
191-
end
192-
end
193121
end
194122
end
195123
end

lib/concurrent/synchronization/java_pure_object.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,6 @@ def ns_signal
3232
JRuby.reference0(self).notify
3333
self
3434
end
35-
36-
def ensure_ivar_visibility!
37-
# relying on undocumented behavior of JRuby, ivar access is volatile
38-
end
3935
end
4036
end
4137
end

lib/concurrent/synchronization/monitor_object.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,6 @@ def ns_wait(timeout = nil)
1616
@__condition__do_not_use_directly.wait timeout
1717
self
1818
end
19-
20-
def ensure_ivar_visibility!
21-
# relying on undocumented behavior of CRuby, GVL quire has lock which ensures visibility of ivars
22-
end
2319
end
2420
end
2521
end

lib/concurrent/synchronization/mutex_object.rb

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,6 @@ def ns_wait(timeout = nil)
3030
@__condition__do_not_use_directly.wait @__lock__do_not_use_directly, timeout
3131
self
3232
end
33-
34-
def ensure_ivar_visibility!
35-
# relying on undocumented behavior of CRuby, GVL quire has lock which ensures visibility of ivars
36-
end
3733
end
3834
end
3935
end

lib/concurrent/synchronization/rbx_object.rb

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -42,25 +42,6 @@ def ns_broadcast
4242
self
4343
end
4444
end
45-
46-
def ensure_ivar_visibility!
47-
Rubinius.memory_barrier
48-
end
49-
50-
def self.attr_volatile *names
51-
names.each do |name|
52-
ivar = :"@volatile_#{name}"
53-
define_method name do
54-
Rubinius.memory_barrier
55-
instance_variable_get ivar
56-
end
57-
58-
define_method "#{name}=" do |value|
59-
instance_variable_set ivar, value
60-
Rubinius.memory_barrier
61-
end
62-
end
63-
end
6445
end
6546
end
6647
end

0 commit comments

Comments
 (0)