diff --git a/src/libecmabuiltins/ecma-builtins.c b/src/libecmabuiltins/ecma-builtins.c index f9f6ffccb..693b89f33 100644 --- a/src/libecmabuiltins/ecma-builtins.c +++ b/src/libecmabuiltins/ecma-builtins.c @@ -119,6 +119,46 @@ ecma_builtin_init_object (ecma_builtin_id_t obj_builtin_id, /**< built-in ID */ ecma_set_object_is_builtin (object_obj_p, true); + /** Initializing [[PrimitiveValue]] properties of built-in prototype objects */ + switch (obj_builtin_id) + { + case ECMA_BUILTIN_ID_STRING_PROTOTYPE: + { + ecma_string_t *prim_prop_str_value_p = ecma_get_magic_string (ECMA_MAGIC_STRING__EMPTY); + + ecma_property_t *prim_value_prop_p; + prim_value_prop_p = ecma_create_internal_property (object_obj_p, + ECMA_INTERNAL_PROPERTY_PRIMITIVE_STRING_VALUE); + ECMA_SET_POINTER (prim_value_prop_p->u.internal_property.value, prim_prop_str_value_p); + break; + } + case ECMA_BUILTIN_ID_NUMBER_PROTOTYPE: + { + ecma_number_t *prim_prop_num_value_p = ecma_alloc_number (); + *prim_prop_num_value_p = ECMA_NUMBER_ZERO; + + ecma_property_t *prim_value_prop_p; + prim_value_prop_p = ecma_create_internal_property (object_obj_p, + ECMA_INTERNAL_PROPERTY_PRIMITIVE_NUMBER_VALUE); + ECMA_SET_POINTER (prim_value_prop_p->u.internal_property.value, prim_prop_num_value_p); + + break; + } + case ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE: + { + ecma_property_t *prim_value_prop_p; + prim_value_prop_p = ecma_create_internal_property (object_obj_p, + ECMA_INTERNAL_PROPERTY_PRIMITIVE_BOOLEAN_VALUE); + prim_value_prop_p->u.internal_property.value = ECMA_SIMPLE_VALUE_FALSE; + break; + } + + default: + { + break; + } + } + return object_obj_p; } /* ecma_builtin_init_object */