| OLD | NEW | 
|---|
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "factory.h" | 5 #include "factory.h" | 
| 6 | 6 | 
| 7 #include "isolate-inl.h" | 7 #include "isolate-inl.h" | 
| 8 | 8 | 
| 9 namespace v8 { | 9 namespace v8 { | 
| 10 namespace internal { | 10 namespace internal { | 
| (...skipping 1140 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1151   // constructor may not have been defined.  Bail out. | 1151   // constructor may not have been defined.  Bail out. | 
| 1152   if (!fun_obj->IsJSFunction()) { | 1152   if (!fun_obj->IsJSFunction()) { | 
| 1153     return EmergencyNewError(message, args); | 1153     return EmergencyNewError(message, args); | 
| 1154   } | 1154   } | 
| 1155   Handle<JSFunction> fun = Handle<JSFunction>::cast(fun_obj); | 1155   Handle<JSFunction> fun = Handle<JSFunction>::cast(fun_obj); | 
| 1156   Handle<Object> message_obj = InternalizeUtf8String(message); | 1156   Handle<Object> message_obj = InternalizeUtf8String(message); | 
| 1157   Handle<Object> argv[] = { message_obj, args }; | 1157   Handle<Object> argv[] = { message_obj, args }; | 
| 1158 | 1158 | 
| 1159   // Invoke the JavaScript factory method. If an exception is thrown while | 1159   // Invoke the JavaScript factory method. If an exception is thrown while | 
| 1160   // running the factory method, use the exception as the result. | 1160   // running the factory method, use the exception as the result. | 
| 1161   bool caught_exception; | 1161   Handle<Object> result; | 
| 1162   Handle<Object> result = Execution::TryCall(fun, | 1162   Handle<Object> exception; | 
| 1163                                              isolate()->js_builtins_object(), | 1163   ASSIGN_RETURN_ON_EXCEPTION_VALUE( | 
| 1164                                              ARRAY_SIZE(argv), | 1164       isolate, result, | 
| 1165                                              argv, | 1165       Execution::TryCall(fun, | 
| 1166                                              &caught_exception); | 1166                          isolate()->js_builtins_object(), | 
|  | 1167                          ARRAY_SIZE(argv), | 
|  | 1168                          argv, | 
|  | 1169                          &exception), | 
|  | 1170       exception); | 
| 1167   return result; | 1171   return result; | 
| 1168 } | 1172 } | 
| 1169 | 1173 | 
| 1170 | 1174 | 
| 1171 Handle<Object> Factory::NewError(Handle<String> message) { | 1175 Handle<Object> Factory::NewError(Handle<String> message) { | 
| 1172   return NewError("$Error", message); | 1176   return NewError("$Error", message); | 
| 1173 } | 1177 } | 
| 1174 | 1178 | 
| 1175 | 1179 | 
| 1176 Handle<Object> Factory::NewError(const char* constructor, | 1180 Handle<Object> Factory::NewError(const char* constructor, | 
| 1177                                  Handle<String> message) { | 1181                                  Handle<String> message) { | 
| 1178   Handle<String> constr = InternalizeUtf8String(constructor); | 1182   Handle<String> constr = InternalizeUtf8String(constructor); | 
| 1179   Handle<JSFunction> fun = Handle<JSFunction>::cast( | 1183   Handle<JSFunction> fun = Handle<JSFunction>::cast( | 
| 1180       GlobalObject::GetPropertyNoExceptionThrown( | 1184       GlobalObject::GetPropertyNoExceptionThrown( | 
| 1181           isolate()->js_builtins_object(), constr)); | 1185           isolate()->js_builtins_object(), constr)); | 
| 1182   Handle<Object> argv[] = { message }; | 1186   Handle<Object> argv[] = { message }; | 
| 1183 | 1187 | 
| 1184   // Invoke the JavaScript factory method. If an exception is thrown while | 1188   // Invoke the JavaScript factory method. If an exception is thrown while | 
| 1185   // running the factory method, use the exception as the result. | 1189   // running the factory method, use the exception as the result. | 
| 1186   bool caught_exception; | 1190   Handle<Object> result; | 
| 1187   Handle<Object> result = Execution::TryCall(fun, | 1191   Handle<Object> exception; | 
| 1188                                              isolate()->js_builtins_object(), | 1192   ASSIGN_RETURN_ON_EXCEPTION_VALUE( | 
| 1189                                              ARRAY_SIZE(argv), | 1193       isolate, result, | 
| 1190                                              argv, | 1194       Execution::TryCall(fun, | 
| 1191                                              &caught_exception); | 1195                          isolate()->js_builtins_object(), | 
|  | 1196                          ARRAY_SIZE(argv), | 
|  | 1197                          argv, | 
|  | 1198                          &exception), | 
|  | 1199       exception); | 
| 1192   return result; | 1200   return result; | 
| 1193 } | 1201 } | 
| 1194 | 1202 | 
| 1195 | 1203 | 
| 1196 Handle<JSFunction> Factory::NewFunction(Handle<String> name, | 1204 Handle<JSFunction> Factory::NewFunction(Handle<String> name, | 
| 1197                                         InstanceType type, | 1205                                         InstanceType type, | 
| 1198                                         int instance_size, | 1206                                         int instance_size, | 
| 1199                                         Handle<Code> code, | 1207                                         Handle<Code> code, | 
| 1200                                         bool force_initial_map) { | 1208                                         bool force_initial_map) { | 
| 1201   // Allocate the function | 1209   // Allocate the function | 
| (...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1984   store->set(JSRegExp::kIrregexpASCIICodeSavedIndex, uninitialized); | 1992   store->set(JSRegExp::kIrregexpASCIICodeSavedIndex, uninitialized); | 
| 1985   store->set(JSRegExp::kIrregexpUC16CodeSavedIndex, uninitialized); | 1993   store->set(JSRegExp::kIrregexpUC16CodeSavedIndex, uninitialized); | 
| 1986   store->set(JSRegExp::kIrregexpMaxRegisterCountIndex, Smi::FromInt(0)); | 1994   store->set(JSRegExp::kIrregexpMaxRegisterCountIndex, Smi::FromInt(0)); | 
| 1987   store->set(JSRegExp::kIrregexpCaptureCountIndex, | 1995   store->set(JSRegExp::kIrregexpCaptureCountIndex, | 
| 1988              Smi::FromInt(capture_count)); | 1996              Smi::FromInt(capture_count)); | 
| 1989   regexp->set_data(*store); | 1997   regexp->set_data(*store); | 
| 1990 } | 1998 } | 
| 1991 | 1999 | 
| 1992 | 2000 | 
| 1993 | 2001 | 
| 1994 void Factory::ConfigureInstance(Handle<FunctionTemplateInfo> desc, | 2002 MaybeHandle<FunctionTemplateInfo> Factory::ConfigureInstance( | 
| 1995                                 Handle<JSObject> instance, | 2003     Handle<FunctionTemplateInfo> desc, Handle<JSObject> instance) { | 
| 1996                                 bool* pending_exception) { |  | 
| 1997   // Configure the instance by adding the properties specified by the | 2004   // Configure the instance by adding the properties specified by the | 
| 1998   // instance template. | 2005   // instance template. | 
| 1999   Handle<Object> instance_template(desc->instance_template(), isolate()); | 2006   Handle<Object> instance_template(desc->instance_template(), isolate()); | 
| 2000   if (!instance_template->IsUndefined()) { | 2007   if (!instance_template->IsUndefined()) { | 
| 2001     Execution::ConfigureInstance(isolate(), | 2008       RETURN_ON_EXCEPTION( | 
| 2002                                  instance, | 2009           isolate(), | 
| 2003                                  instance_template, | 2010           Execution::ConfigureInstance(isolate(), instance, instance_template), | 
| 2004                                  pending_exception); | 2011           FunctionTemplateInfo); | 
| 2005   } else { |  | 
| 2006     *pending_exception = false; |  | 
| 2007   } | 2012   } | 
|  | 2013   return desc; | 
| 2008 } | 2014 } | 
| 2009 | 2015 | 
| 2010 | 2016 | 
| 2011 Handle<Object> Factory::GlobalConstantFor(Handle<String> name) { | 2017 Handle<Object> Factory::GlobalConstantFor(Handle<String> name) { | 
| 2012   Heap* h = isolate()->heap(); | 2018   Heap* h = isolate()->heap(); | 
| 2013   if (name->Equals(h->undefined_string())) return undefined_value(); | 2019   if (name->Equals(h->undefined_string())) return undefined_value(); | 
| 2014   if (name->Equals(h->nan_string())) return nan_value(); | 2020   if (name->Equals(h->nan_string())) return nan_value(); | 
| 2015   if (name->Equals(h->infinity_string())) return infinity_value(); | 2021   if (name->Equals(h->infinity_string())) return infinity_value(); | 
| 2016   return Handle<Object>::null(); | 2022   return Handle<Object>::null(); | 
| 2017 } | 2023 } | 
| 2018 | 2024 | 
| 2019 | 2025 | 
| 2020 Handle<Object> Factory::ToBoolean(bool value) { | 2026 Handle<Object> Factory::ToBoolean(bool value) { | 
| 2021   return value ? true_value() : false_value(); | 2027   return value ? true_value() : false_value(); | 
| 2022 } | 2028 } | 
| 2023 | 2029 | 
| 2024 } }  // namespace v8::internal | 2030 } }  // namespace v8::internal | 
| OLD | NEW | 
|---|