Sha256: 4bf75afafdde643ca6b4b584e092e857f6b4fc2ee855c4ffe5c50b7410fa08f2

Contents?: true

Size: 884 Bytes

Versions: 15

Compression:

Stored size: 884 Bytes

Contents

class V8::Conversion
  module Code
    include V8::Util::Weakcell

    def to_v8
      fn = to_template.GetFunction()
      V8::Context.link self, fn
      return fn
    end

    def to_template
      weakcell(:template) {V8::C::FunctionTemplate::New(InvocationHandler.new(self))}
    end

    class InvocationHandler
      include V8::Error::Protect

      def initialize(code)
        @code = code
      end

      def call(arguments)
        protect do
          context = V8::Context.current
          access = context.access
          args = ::Array.new(arguments.Length())
          0.upto(args.length - 1) do |i|
            if i < args.length
              args[i] = context.to_ruby arguments[i]
            end
          end
          this = context.to_ruby arguments.This()
          context.to_v8 access.methodcall(@code, this, args)
        end
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
therubyracer-0.11.0beta7-x86_64-linux lib/v8/conversion/code.rb
therubyracer-0.11.0beta7-x86-linux lib/v8/conversion/code.rb
therubyracer-0.11.0beta7-x86_64-darwin-10 lib/v8/conversion/code.rb
therubyracer-0.11.0beta7 lib/v8/conversion/code.rb
therubyracer-0.11.0beta6-x86-linux lib/v8/conversion/code.rb
therubyracer-0.11.0beta6-x86_64-linux lib/v8/conversion/code.rb
therubyracer-0.11.0beta6 lib/v8/conversion/code.rb
therubyracer-0.11.0beta5-x86-linux lib/v8/conversion/code.rb
therubyracer-0.11.0beta5 lib/v8/conversion/code.rb
therubyracer-0.11.0beta5-x86_64-linux lib/v8/conversion/code.rb
therubyracer-0.11.0beta4 lib/v8/conversion/code.rb
therubyracer-0.11.0beta3 lib/v8/conversion/code.rb
therubyracer-0.11.0beta2-x86_64-linux lib/v8/conversion/code.rb
therubyracer-0.11.0beta2 lib/v8/conversion/code.rb
therubyracer-0.11.0beta1 lib/v8/conversion/code.rb