| Index: src/factory.cc
|
| diff --git a/src/factory.cc b/src/factory.cc
|
| index 053f8704e61f73457f6b45b0dc26aee792c3dbc2..1c21dd07cf74d21ed500b8aaa62fbc6da95791a3 100644
|
| --- a/src/factory.cc
|
| +++ b/src/factory.cc
|
| @@ -1158,12 +1158,13 @@ Handle<Object> Factory::NewError(const char* maker,
|
|
|
| // Invoke the JavaScript factory method. If an exception is thrown while
|
| // running the factory method, use the exception as the result.
|
| - bool caught_exception;
|
| - Handle<Object> result = Execution::TryCall(fun,
|
| - isolate()->js_builtins_object(),
|
| - ARRAY_SIZE(argv),
|
| - argv,
|
| - &caught_exception);
|
| + Handle<Object> result;
|
| + if (!Execution::TryCall(fun,
|
| + isolate()->js_builtins_object(),
|
| + ARRAY_SIZE(argv),
|
| + argv).ToHandle(&result)) {
|
| + result = Handle<Object>(isolate()->pending_exception(), isolate());
|
| + }
|
| return result;
|
| }
|
|
|
| @@ -1183,12 +1184,13 @@ Handle<Object> Factory::NewError(const char* constructor,
|
|
|
| // Invoke the JavaScript factory method. If an exception is thrown while
|
| // running the factory method, use the exception as the result.
|
| - bool caught_exception;
|
| - Handle<Object> result = Execution::TryCall(fun,
|
| - isolate()->js_builtins_object(),
|
| - ARRAY_SIZE(argv),
|
| - argv,
|
| - &caught_exception);
|
| + Handle<Object> result;
|
| + if (!Execution::TryCall(fun,
|
| + isolate()->js_builtins_object(),
|
| + ARRAY_SIZE(argv),
|
| + argv).ToHandle(&result)) {
|
| + result = Handle<Object>(isolate()->pending_exception(), isolate());
|
| + }
|
| return result;
|
| }
|
|
|
| @@ -1991,20 +1993,17 @@ void Factory::SetRegExpIrregexpData(Handle<JSRegExp> regexp,
|
|
|
|
|
|
|
| -void Factory::ConfigureInstance(Handle<FunctionTemplateInfo> desc,
|
| - Handle<JSObject> instance,
|
| - bool* pending_exception) {
|
| +MaybeHandle<FunctionTemplateInfo> Factory::ConfigureInstance(
|
| + Handle<FunctionTemplateInfo> desc, Handle<JSObject> instance) {
|
| // Configure the instance by adding the properties specified by the
|
| // instance template.
|
| Handle<Object> instance_template(desc->instance_template(), isolate());
|
| - if (!instance_template->IsUndefined()) {
|
| - Execution::ConfigureInstance(isolate(),
|
| - instance,
|
| - instance_template,
|
| - pending_exception);
|
| - } else {
|
| - *pending_exception = false;
|
| + if (instance_template->IsUndefined() ||
|
| + !Execution::ConfigureInstance(
|
| + isolate(), instance, instance_template).is_null()) {
|
| + return desc;
|
| }
|
| + return MaybeHandle<FunctionTemplateInfo>();
|
| }
|
|
|
|
|
|
|