Sha256: 5e9bd9bd6b900e1240bc49dfaae8f88491e8bedff6bd7a6347e6774cb861c546

Contents?: true

Size: 797 Bytes

Versions: 4

Compression:

Stored size: 797 Bytes

Contents

require 'concurrent/utility/native_extension_loader' # load native part first

module Concurrent
  module Synchronization

    if Concurrent.on_jruby?
      require 'jruby'

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

        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-0.9.0.pre3-java lib/concurrent/synchronization/java_object.rb
concurrent-ruby-0.9.0.pre3 lib/concurrent/synchronization/java_object.rb
concurrent-ruby-0.9.0.pre2 lib/concurrent/synchronization/java_object.rb
concurrent-ruby-0.9.0.pre2-java lib/concurrent/synchronization/java_object.rb