Sha256: 3720ea028294322e6597e0784fb108ba9bc7fad4c9d4b994cc1d91ecc1c85c61
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
module V8 class Function < V8::Object def methodcall(thisObject, *args) err = nil return_value = nil C::TryCatch.try do |try| @context.enter do this = To.v8(thisObject) return_value = To.rb(@native.Call(this, To.v8(args))) err = JSError.new(try) if try.HasCaught() end end raise err if err return return_value end def call(*args) self.methodcall(@context.Global(), *args) end def new(*args) @context.enter do To.rb(@native.NewInstance(To.v8(args))) end end def self.rubyprotect begin To.v8(yield) rescue Exception => e case e when SystemExit, NoMemoryError raise e else error = V8::C::Exception::Error(V8::C::String::New(e.message)) error.SetHiddenValue("TheRubyRacer::Cause", C::External::New(e)) V8::C::ThrowException(error) end end end def self.rubycall(rubycode, *args) rubyprotect do rubycode.call(*args) end end def self.rubysend(obj, message, *args) rubyprotect do obj.send(message, *args) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
therubyracer-0.7.5 | lib/v8/function.rb |