From 6520779f4675ae9ac4134713f74dd67ded8f9c3d Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Thu, 16 Oct 2014 20:17:29 +0400 Subject: [PATCH] Initialization of [[PrimitiveValue]] properties of built-in String.prototype, Number.prototype and Boolean.prototype objects. --- src/libecmabuiltins/ecma-builtins.c | 40 +++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) 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 */