Sha256: e955ede7ad700ceca85543b927a939cf7641ac6b12f8150f53a3af4090d93927

Contents?: true

Size: 759 Bytes

Versions: 4

Compression:

Stored size: 759 Bytes

Contents

module Concurrent
  module Synchronization

    if Concurrent.on_jruby?

      # @!visibility private
      # @!macro internal_implementation_note
      class JRubyObject < AbstractObject

        def initialize
          # nothing to do
        end

        def self.attr_volatile(*names)
          names.each do |name|

            ivar = :"@volatile_#{name}"

            class_eval <<-RUBY, __FILE__, __LINE__ + 1
              def #{name}
                instance_variable_get_volatile(:#{ivar})
              end

              def #{name}=(value)
                instance_variable_set_volatile(:#{ivar}, value)
              end
            RUBY

          end
          names.map { |n| [n, :"#{n}="] }.flatten
        end

      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
concurrent-ruby-1.0.0.pre3-java lib/concurrent/synchronization/jruby_object.rb
concurrent-ruby-1.0.0.pre3 lib/concurrent/synchronization/jruby_object.rb
concurrent-ruby-1.0.0.pre2-java lib/concurrent/synchronization/jruby_object.rb
concurrent-ruby-1.0.0.pre2 lib/concurrent/synchronization/jruby_object.rb