Chromium Code Reviews| Index: src/factory.cc |
| diff --git a/src/factory.cc b/src/factory.cc |
| index 053f8704e61f73457f6b45b0dc26aee792c3dbc2..e28f82fbbe2d6bd9d92e289a4214f1389f517435 100644 |
| --- a/src/factory.cc |
| +++ b/src/factory.cc |
| @@ -1158,12 +1158,15 @@ 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; |
| + bool caught_exception = false; |
| Handle<Object> result = Execution::TryCall(fun, |
| isolate()->js_builtins_object(), |
| ARRAY_SIZE(argv), |
| argv, |
| &caught_exception); |
| + if (caught_exception) { |
| + return Handle<Object>(isolate()->pending_exception(), isolate()); |
|
Igor Sheludko
2014/04/10 21:44:35
I think we should return result here as well, beca
|
| + } |
| return result; |
| } |
| @@ -1183,12 +1186,15 @@ 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; |
| + bool caught_exception = false; |
| Handle<Object> result = Execution::TryCall(fun, |
| isolate()->js_builtins_object(), |
| ARRAY_SIZE(argv), |
| argv, |
| &caught_exception); |
| + if (caught_exception) { |
| + return Handle<Object>(isolate()->pending_exception(), isolate()); |
| + } |
| return result; |
| } |
| @@ -1991,20 +1997,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>(); |
| } |