lib/v8/function.rb in therubyracer-0.7.5 vs lib/v8/function.rb in therubyracer-0.8.0.pre
- old
+ new
@@ -3,53 +3,26 @@
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()
+ @portal.open do |to|
+ this = to.v8(thisObject)
+ return_value = to.rb(@native.Call(this, to.v8(args)))
+ err = JSError.new(try, to) if try.HasCaught()
end
end
raise err if err
return return_value
end
def call(*args)
- self.methodcall(@context.Global(), *args)
+ self.methodcall(@portal.context.native.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)
+ @portal.open do |to|
+ to.rb(@native.NewInstance(to.v8(args)))
end
end
end
end
\ No newline at end of file