@@ -54,12 +54,16 @@ ecma_builtin_is (ecma_object_t *obj_p, /**< pointer to an object */
5454 JERRY_ASSERT (obj_p != NULL && !ecma_is_lexical_environment (obj_p));
5555 JERRY_ASSERT (builtin_id < ECMA_BUILTIN_ID__COUNT);
5656
57- if (unlikely ( ecma_builtin_objects[builtin_id] == NULL ) )
57+ if (ecma_builtin_objects[builtin_id] == NULL )
5858 {
59- ecma_instantiate_builtin (builtin_id);
59+ /* If a built-in object is not instantiated,
60+ * the specified object cannot be the built-in object */
61+ return false ;
62+ }
63+ else
64+ {
65+ return (obj_p == ecma_builtin_objects[builtin_id]);
6066 }
61-
62- return (obj_p == ecma_builtin_objects[builtin_id]);
6367} /* ecma_builtin_is */
6468
6569/* *
@@ -94,14 +98,15 @@ static ecma_object_t*
9498ecma_builtin_init_object (ecma_builtin_id_t obj_builtin_id, /* *< built-in ID */
9599 ecma_object_t * prototype_obj_p, /* *< prototype object */
96100 ecma_object_type_t obj_type, /* *< object's type */
97- ecma_magic_string_id_t obj_class, /* *< object's class */
98101 bool is_extensible) /* *< value of object's [[Extensible]] property */
99102{
100103 ecma_object_t *object_obj_p = ecma_create_object (prototype_obj_p, is_extensible, obj_type);
101104
102- ecma_property_t *class_prop_p = ecma_create_internal_property (object_obj_p,
103- ECMA_INTERNAL_PROPERTY_CLASS);
104- class_prop_p->u .internal_property .value = obj_class;
105+ /*
106+ * [[Class]] property of built-in object is not stored explicitly.
107+ *
108+ * See also: ecma_object_get_class_name
109+ */
105110
106111 ecma_property_t *built_in_id_prop_p = ecma_create_internal_property (object_obj_p,
107112 ECMA_INTERNAL_PROPERTY_BUILT_IN_ID);
@@ -183,7 +188,6 @@ ecma_instantiate_builtin (ecma_builtin_id_t id) /**< built-in id */
183188 {
184189#define BUILTIN (builtin_id, \
185190 object_type, \
186- object_class, \
187191 object_prototype_builtin_id, \
188192 is_extensible, \
189193 is_static, \
@@ -211,11 +215,10 @@ ecma_instantiate_builtin (ecma_builtin_id_t id) /**< built-in id */
211215 JERRY_ASSERT (prototype_obj_p != NULL ); \
212216 } \
213217 \
214- ecma_object_t *builtin_obj_p = ecma_builtin_init_object (builtin_id, \
215- prototype_obj_p, \
216- object_type, \
217- object_class, \
218- is_extensible); \
218+ ecma_object_t *builtin_obj_p = ecma_builtin_init_object (builtin_id, \
219+ prototype_obj_p, \
220+ object_type, \
221+ is_extensible); \
219222 ecma_builtin_objects[builtin_id] = builtin_obj_p; \
220223 \
221224 break ; \
@@ -274,7 +277,6 @@ ecma_builtin_try_to_instantiate_property (ecma_object_t *object_p, /**< object *
274277 {
275278#define BUILTIN (builtin_id, \
276279 object_type, \
277- object_class, \
278280 object_prototype_builtin_id, \
279281 is_extensible, \
280282 is_static, \
@@ -411,7 +413,6 @@ ecma_builtin_dispatch_call (ecma_object_t *obj_p, /**< built-in object */
411413 {
412414#define BUILTIN (builtin_id, \
413415 object_type, \
414- object_class, \
415416 object_prototype_builtin_id, \
416417 is_extensible, \
417418 is_static, \
@@ -474,7 +475,6 @@ ecma_builtin_dispatch_construct (ecma_object_t *obj_p, /**< built-in object */
474475 {
475476#define BUILTIN (builtin_id, \
476477 object_type, \
477- object_class, \
478478 object_prototype_builtin_id, \
479479 is_extensible, \
480480 is_static, \
@@ -530,7 +530,6 @@ ecma_builtin_dispatch_routine (ecma_builtin_id_t builtin_object_id, /**< built-i
530530 {
531531#define BUILTIN (builtin_id, \
532532 object_type, \
533- object_class, \
534533 object_prototype_builtin_id, \
535534 is_extensible, \
536535 is_static, \
0 commit comments