Sha256: 28c52ac295156c24a9397c3dc923dabbe1239b1a7e9bbfc494b71d3c067eda52

Contents?: true

Size: 875 Bytes

Versions: 75

Compression:

Stored size: 875 Bytes

Contents

require 'spec_helper'

describe V8::C::Handle do
  include V8::MemSpec
  context "A JavaScript Object reflected into Ruby" do

    before do
      @weakref_callback = WeakrefCallback.new
    end

    it "has a strong reference from the ruby side, which is not released until the Ruby reference goes away" do
      handle = c::Handle::New(object = c::Object::New())
      handle.MakeWeak(nil, @weakref_callback)
      ruby_gc do
        v8_gc
        @weakref_callback.should_not have_been_invoked
        handle.should_not be_dead
      end
      ruby_gc do
        object = nil
        v8_gc
        @weakref_callback.should have_been_invoked
        handle.should be_dead
      end
    end

    private

    class WeakrefCallback

      def call(value, parameters)
        @invoked = true
      end

      def has_been_invoked?
        @invoked
      end
    end
  end
end

Version data entries

75 entries across 75 versions & 5 rubygems

Version Path
classiccms-0.7.5 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.7.4 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.7.3 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.7.2 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.7.1 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.7.0 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.9 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.8 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.7 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.6 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.5 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.4 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.3 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.2 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.1 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.6.0 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.5.17 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.5.16 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.5.15 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb
classiccms-0.5.14 vendor/bundle/gems/therubyracer-0.10.1/specmem/handle_memspec.rb