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