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>(); |
} |