@@ -289,6 +289,40 @@ ecma_builtin_init_object (ecma_builtin_id_t obj_builtin_id, /**< built-in ID */
289
289
return obj_p ;
290
290
} /* ecma_builtin_init_object */
291
291
292
+
293
+ /**
294
+ * Helper function for 'ecma_instantiate_builtin'
295
+ */
296
+ static void
297
+ ecma_instantiate_builtin_helper (ecma_builtin_id_t builtin_id , /**< built-in id */
298
+ ecma_object_type_t object_type , /**< object type */
299
+ ecma_builtin_id_t object_prototype_builtin_id , /**< built-in id of prototype */
300
+ bool is_extensible ) /**< value of object's [[Extensible]] property */
301
+ {
302
+ JERRY_ASSERT (JERRY_CONTEXT (ecma_builtin_objects )[builtin_id ] == NULL );
303
+
304
+ ecma_object_t * prototype_obj_p ;
305
+ if (object_prototype_builtin_id == ECMA_BUILTIN_ID__COUNT )
306
+ {
307
+ prototype_obj_p = NULL ;
308
+ }
309
+ else
310
+ {
311
+ if (JERRY_CONTEXT (ecma_builtin_objects )[object_prototype_builtin_id ] == NULL )
312
+ {
313
+ ecma_instantiate_builtin (object_prototype_builtin_id );
314
+ }
315
+ prototype_obj_p = JERRY_CONTEXT (ecma_builtin_objects )[object_prototype_builtin_id ];
316
+ JERRY_ASSERT (prototype_obj_p != NULL );
317
+ }
318
+
319
+ ecma_object_t * builtin_obj_p = ecma_builtin_init_object (builtin_id ,
320
+ prototype_obj_p ,
321
+ object_type ,
322
+ is_extensible );
323
+ JERRY_CONTEXT (ecma_builtin_objects )[builtin_id ] = builtin_obj_p ;
324
+ } /* ecma_instantiate_builtin_helper */
325
+
292
326
/**
293
327
* Instantiate specified ECMA built-in object
294
328
*/
@@ -304,29 +338,10 @@ ecma_instantiate_builtin (ecma_builtin_id_t id) /**< built-in id */
304
338
lowercase_name ) \
305
339
case builtin_id: \
306
340
{ \
307
- JERRY_ASSERT (JERRY_CONTEXT (ecma_builtin_objects)[builtin_id] == NULL); \
308
- \
309
- ecma_object_t *prototype_obj_p; \
310
- if (object_prototype_builtin_id == ECMA_BUILTIN_ID__COUNT) \
311
- { \
312
- prototype_obj_p = NULL; \
313
- } \
314
- else \
315
- { \
316
- if (JERRY_CONTEXT (ecma_builtin_objects)[object_prototype_builtin_id] == NULL) \
317
- { \
318
- ecma_instantiate_builtin (object_prototype_builtin_id); \
319
- } \
320
- prototype_obj_p = JERRY_CONTEXT (ecma_builtin_objects)[object_prototype_builtin_id]; \
321
- JERRY_ASSERT (prototype_obj_p != NULL); \
322
- } \
323
- \
324
- ecma_object_t *builtin_obj_p = ecma_builtin_init_object (builtin_id, \
325
- prototype_obj_p, \
326
- object_type, \
327
- is_extensible); \
328
- JERRY_CONTEXT (ecma_builtin_objects)[builtin_id] = builtin_obj_p; \
329
- \
341
+ ecma_instantiate_builtin_helper (builtin_id, \
342
+ object_type, \
343
+ object_prototype_builtin_id, \
344
+ is_extensible); \
330
345
break; \
331
346
}
332
347
#include "ecma-builtins.inc.h"
0 commit comments