diff --git a/src/libecmaobjects/ecma-globals.h b/src/libecmaobjects/ecma-globals.h index 2676197ca..031be9c43 100644 --- a/src/libecmaobjects/ecma-globals.h +++ b/src/libecmaobjects/ecma-globals.h @@ -422,17 +422,17 @@ typedef struct #define ECMA_OBJECT_OBJ_PROTOTYPE_OBJECT_CP_WIDTH (ECMA_POINTER_FIELD_WIDTH) /** - * Flag indicating whether the object has non-instantiated built-in properties + * Flag indicating whether the object is a built-in object */ -#define ECMA_OBJECT_OBJ_HAS_NON_INSTANTIATED_BUILT_IN_PROPERTIES_POS (ECMA_OBJECT_OBJ_PROTOTYPE_OBJECT_CP_POS + \ - ECMA_OBJECT_OBJ_PROTOTYPE_OBJECT_CP_WIDTH) -#define ECMA_OBJECT_OBJ_HAS_NON_INSTANTIATED_BUILT_IN_PROPERTIES_WIDTH (1) +#define ECMA_OBJECT_OBJ_IS_BUILTIN_POS (ECMA_OBJECT_OBJ_PROTOTYPE_OBJECT_CP_POS + \ + ECMA_OBJECT_OBJ_PROTOTYPE_OBJECT_CP_WIDTH) +#define ECMA_OBJECT_OBJ_IS_BUILTIN_WIDTH (1) /** * Size of structure for objects */ -#define ECMA_OBJECT_OBJ_TYPE_SIZE (ECMA_OBJECT_OBJ_HAS_NON_INSTANTIATED_BUILT_IN_PROPERTIES_POS + \ - ECMA_OBJECT_OBJ_HAS_NON_INSTANTIATED_BUILT_IN_PROPERTIES_WIDTH) +#define ECMA_OBJECT_OBJ_TYPE_SIZE (ECMA_OBJECT_OBJ_IS_BUILTIN_POS + \ + ECMA_OBJECT_OBJ_IS_BUILTIN_WIDTH) /* Lexical environments' only part */ diff --git a/src/libecmaobjects/ecma-helpers.c b/src/libecmaobjects/ecma-helpers.c index ba5dca183..447ba3e7f 100644 --- a/src/libecmaobjects/ecma-helpers.c +++ b/src/libecmaobjects/ecma-helpers.c @@ -68,7 +68,7 @@ ecma_create_object (ecma_object_t *prototype_object_p, /**< pointer to prototybe ECMA_OBJECT_OBJ_PROTOTYPE_OBJECT_CP_POS, ECMA_OBJECT_OBJ_PROTOTYPE_OBJECT_CP_WIDTH); - ecma_set_object_has_non_instantiated_builtins (object_p, false); + ecma_set_object_is_builtin (object_p, false); return object_p; } /* ecma_create_object */ @@ -257,18 +257,18 @@ ecma_get_object_prototype (ecma_object_t *object_p) /**< object */ } /* ecma_get_object_prototype */ /** - * Get object's has-non-instantiated-built-ins flag. + * Check if the object is a built-in object * - * @return flag's value + * @return true / false */ bool -ecma_get_object_has_non_instantiated_builtins (ecma_object_t *object_p) /**< object */ +ecma_get_object_is_builtin (ecma_object_t *object_p) /**< object */ { JERRY_ASSERT (object_p != NULL); JERRY_ASSERT (!ecma_is_lexical_environment (object_p)); - const uint32_t offset = ECMA_OBJECT_OBJ_HAS_NON_INSTANTIATED_BUILT_IN_PROPERTIES_POS; - const uint32_t width = ECMA_OBJECT_OBJ_HAS_NON_INSTANTIATED_BUILT_IN_PROPERTIES_WIDTH; + const uint32_t offset = ECMA_OBJECT_OBJ_IS_BUILTIN_POS; + const uint32_t width = ECMA_OBJECT_OBJ_IS_BUILTIN_WIDTH; JERRY_ASSERT (sizeof (uintptr_t) * JERRY_BITSINBYTE >= width); @@ -277,26 +277,26 @@ ecma_get_object_has_non_instantiated_builtins (ecma_object_t *object_p) /**< obj width); return (bool) flag_value; -} /* ecma_get_object_has_non_instantiated_builtins */ +} /* ecma_get_object_is_builtin */ /** - * Set object's has-non-instantiated-built-ins flag's value. + * Set flag indicating whether the object is a built-in object */ void -ecma_set_object_has_non_instantiated_builtins (ecma_object_t *object_p, /**< object */ - bool is_has_non_inst_builtins) /**< value of flag */ +ecma_set_object_is_builtin (ecma_object_t *object_p, /**< object */ + bool is_builtin) /**< value of flag */ { JERRY_ASSERT (object_p != NULL); JERRY_ASSERT (!ecma_is_lexical_environment (object_p)); - const uint32_t offset = ECMA_OBJECT_OBJ_HAS_NON_INSTANTIATED_BUILT_IN_PROPERTIES_POS; - const uint32_t width = ECMA_OBJECT_OBJ_HAS_NON_INSTANTIATED_BUILT_IN_PROPERTIES_WIDTH; + const uint32_t offset = ECMA_OBJECT_OBJ_IS_BUILTIN_POS; + const uint32_t width = ECMA_OBJECT_OBJ_IS_BUILTIN_WIDTH; object_p->container = jrt_set_bit_field_value (object_p->container, - (uintptr_t) is_has_non_inst_builtins, + (uintptr_t) is_builtin, offset, width); -} /* ecma_set_object_has_non_instantiated_builtins */ +} /* ecma_set_object_is_builtin */ /** * Get type of lexical environment. diff --git a/src/libecmaobjects/ecma-helpers.h b/src/libecmaobjects/ecma-helpers.h index 560eb3d23..0ba703681 100644 --- a/src/libecmaobjects/ecma-helpers.h +++ b/src/libecmaobjects/ecma-helpers.h @@ -180,9 +180,9 @@ extern void ecma_set_object_extensible (ecma_object_t *object_p, bool is_extensi extern ecma_object_type_t ecma_get_object_type (ecma_object_t *object_p); extern void ecma_set_object_type (ecma_object_t *object_p, ecma_object_type_t type); extern ecma_object_t* ecma_get_object_prototype (ecma_object_t *object_p); -extern bool ecma_get_object_has_non_instantiated_builtins (ecma_object_t *object_p); -extern void ecma_set_object_has_non_instantiated_builtins (ecma_object_t *object_p, - bool is_has_non_inst_builtins); +extern bool ecma_get_object_is_builtin (ecma_object_t *object_p); +extern void ecma_set_object_is_builtin (ecma_object_t *object_p, + bool is_builtin); extern ecma_lexical_environment_type_t ecma_get_lex_env_type (ecma_object_t *object_p); extern ecma_object_t *ecma_get_lex_env_outer_reference (ecma_object_t *object_p); extern ecma_property_t *ecma_get_property_list (ecma_object_t *object_p); diff --git a/src/libecmaoperations/ecma-objects.c b/src/libecmaoperations/ecma-objects.c index b3b73cc12..4888d75c6 100644 --- a/src/libecmaoperations/ecma-objects.c +++ b/src/libecmaoperations/ecma-objects.c @@ -96,6 +96,7 @@ ecma_op_object_get_own_property (ecma_object_t *obj_p, /**< the object */ JERRY_ASSERT(property_name_p != NULL); const ecma_object_type_t type = ecma_get_object_type (obj_p); + const bool is_builtin = ecma_get_object_is_builtin (obj_p); ecma_property_t *prop_p = NULL; @@ -128,7 +129,7 @@ ecma_op_object_get_own_property (ecma_object_t *obj_p, /**< the object */ if (unlikely (prop_p == NULL)) { - if (ecma_get_object_has_non_instantiated_builtins (obj_p)) + if (is_builtin) { prop_p = ecma_object_try_to_get_non_instantiated_property (obj_p, property_name_p); }