From 557a4b64608476bcff3136b0a76a2a04bf3efbd9 Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Wed, 3 Dec 2014 22:48:37 +0300 Subject: [PATCH] Removing ecma_op_object_has_property and ecma_op_general_object_has_property routines. --- src/libcoreint/opcodes-ecma-relational.c | 2 +- src/libecmaoperations/ecma-conversion.c | 12 +++--- src/libecmaoperations/ecma-lex-env.c | 8 +--- src/libecmaoperations/ecma-objects-general.c | 23 ------------ src/libecmaoperations/ecma-objects-general.h | 2 - src/libecmaoperations/ecma-objects.c | 39 -------------------- src/libecmaoperations/ecma-objects.h | 1 - 7 files changed, 9 insertions(+), 78 deletions(-) diff --git a/src/libcoreint/opcodes-ecma-relational.c b/src/libcoreint/opcodes-ecma-relational.c index af5bc5819..af4fd35b4 100644 --- a/src/libcoreint/opcodes-ecma-relational.c +++ b/src/libcoreint/opcodes-ecma-relational.c @@ -312,7 +312,7 @@ opfunc_in (opcode_t opdata __unused, /**< operation data */ ecma_string_t *left_value_prop_name_p = ecma_get_string_from_completion_value (str_left_value); ecma_object_t *right_value_obj_p = ecma_get_object_from_completion_value (right_value); - if (ecma_op_object_has_property (right_value_obj_p, left_value_prop_name_p)) + if (ecma_op_object_get_property (right_value_obj_p, left_value_prop_name_p) != NULL) { is_in = ECMA_SIMPLE_VALUE_TRUE; } diff --git a/src/libecmaoperations/ecma-conversion.c b/src/libecmaoperations/ecma-conversion.c index 87265e24b..c7362fd5e 100644 --- a/src/libecmaoperations/ecma-conversion.c +++ b/src/libecmaoperations/ecma-conversion.c @@ -579,7 +579,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ // 3. ecma_string_t *enumerable_magic_string_p = ecma_get_magic_string (ECMA_MAGIC_STRING_ENUMERABLE); - if (ecma_op_object_has_property (obj_p, enumerable_magic_string_p)) + if (ecma_op_object_get_property (obj_p, enumerable_magic_string_p) != NULL) { ECMA_TRY_CATCH (enumerable_prop_value, ecma_op_object_get (obj_p, enumerable_magic_string_p), @@ -613,7 +613,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ // 4. ecma_string_t *configurable_magic_string_p = ecma_get_magic_string (ECMA_MAGIC_STRING_CONFIGURABLE); - if (ecma_op_object_has_property (obj_p, configurable_magic_string_p)) + if (ecma_op_object_get_property (obj_p, configurable_magic_string_p) != NULL) { ECMA_TRY_CATCH (configurable_prop_value, ecma_op_object_get (obj_p, configurable_magic_string_p), @@ -648,7 +648,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ // 5. ecma_string_t *value_magic_string_p = ecma_get_magic_string (ECMA_MAGIC_STRING_VALUE); - if (ecma_op_object_has_property (obj_p, value_magic_string_p)) + if (ecma_op_object_get_property (obj_p, value_magic_string_p) != NULL) { ECMA_TRY_CATCH (value_prop_value, ecma_op_object_get (obj_p, value_magic_string_p), @@ -670,7 +670,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ // 6. ecma_string_t *writable_magic_string_p = ecma_get_magic_string (ECMA_MAGIC_STRING_WRITABLE); - if (ecma_op_object_has_property (obj_p, writable_magic_string_p)) + if (ecma_op_object_get_property (obj_p, writable_magic_string_p) != NULL) { ECMA_TRY_CATCH (writable_prop_value, ecma_op_object_get (obj_p, writable_magic_string_p), @@ -705,7 +705,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ // 7. ecma_string_t *get_magic_string_p = ecma_get_magic_string (ECMA_MAGIC_STRING_GET); - if (ecma_op_object_has_property (obj_p, get_magic_string_p)) + if (ecma_op_object_get_property (obj_p, get_magic_string_p) != NULL) { ECMA_TRY_CATCH (get_prop_value, ecma_op_object_get (obj_p, get_magic_string_p), @@ -749,7 +749,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ ecma_string_t *set_magic_string_p = ecma_get_magic_string (ECMA_MAGIC_STRING_SET); - if (ecma_op_object_has_property (obj_p, set_magic_string_p)) + if (ecma_op_object_get_property (obj_p, set_magic_string_p) != NULL) { ECMA_TRY_CATCH (set_prop_value, ecma_op_object_get (obj_p, set_magic_string_p), diff --git a/src/libecmaoperations/ecma-lex-env.c b/src/libecmaoperations/ecma-lex-env.c index 820b2a0b2..bf3aeb28a 100644 --- a/src/libecmaoperations/ecma-lex-env.c +++ b/src/libecmaoperations/ecma-lex-env.c @@ -58,7 +58,7 @@ ecma_op_has_binding (ecma_object_t *lex_env_p, /**< lexical environment */ { ecma_object_t *binding_obj_p = ecma_get_lex_env_binding_object (lex_env_p); - return ecma_op_object_has_property (binding_obj_p, name_p); + return (ecma_op_object_get_property (binding_obj_p, name_p) != NULL); } } @@ -97,8 +97,6 @@ ecma_op_create_mutable_binding (ecma_object_t *lex_env_p, /**< lexical environme { ecma_object_t *binding_obj_p = ecma_get_lex_env_binding_object (lex_env_p); - JERRY_ASSERT(!ecma_op_object_has_property (binding_obj_p, name_p)); - ecma_property_descriptor_t prop_desc = ecma_make_empty_property_descriptor (); { prop_desc.is_value_defined = true; @@ -278,9 +276,7 @@ ecma_op_get_binding_value (ecma_object_t *lex_env_p, /**< lexical environment */ { ecma_object_t *binding_obj_p = ecma_get_lex_env_binding_object (lex_env_p); - bool has_prop = ecma_op_object_has_property (binding_obj_p, name_p); - - if (!has_prop) + if (ecma_op_object_get_property (binding_obj_p, name_p) == NULL) { if (is_strict) { diff --git a/src/libecmaoperations/ecma-objects-general.c b/src/libecmaoperations/ecma-objects-general.c index d02105315..83b755fce 100644 --- a/src/libecmaoperations/ecma-objects-general.c +++ b/src/libecmaoperations/ecma-objects-general.c @@ -433,29 +433,6 @@ ecma_op_general_object_can_put (ecma_object_t *obj_p, /**< the object */ JERRY_UNREACHABLE(); } /* ecma_op_general_object_can_put */ -/** - * [[HasProperty]] ecma general object's operation - * - * See also: - * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 - * ECMA-262 v5, 8.12.6 - * - * @return true - if the object already has a property with the given property name; - * false - otherwise. - */ -bool -ecma_op_general_object_has_property (ecma_object_t *obj_p, /**< the object */ - ecma_string_t *property_name_p) /**< property name */ -{ - JERRY_ASSERT(obj_p != NULL - && !ecma_is_lexical_environment (obj_p)); - JERRY_ASSERT(property_name_p != NULL); - - ecma_property_t *desc_p = ecma_op_object_get_property (obj_p, property_name_p); - - return (desc_p != NULL); -} /* ecma_op_general_object_has_property */ - /** * [[Delete]] ecma general object's operation * diff --git a/src/libecmaoperations/ecma-objects-general.h b/src/libecmaoperations/ecma-objects-general.h index ad0445ade..fb8fe590f 100644 --- a/src/libecmaoperations/ecma-objects-general.h +++ b/src/libecmaoperations/ecma-objects-general.h @@ -41,8 +41,6 @@ extern ecma_completion_value_t ecma_op_general_object_put (ecma_object_t *obj_p, bool is_throw); extern bool ecma_op_general_object_can_put (ecma_object_t *obj_p, ecma_string_t *property_name_p); -extern bool ecma_op_general_object_has_property (ecma_object_t *obj_p, - ecma_string_t *property_name_p); extern ecma_completion_value_t ecma_op_general_object_delete (ecma_object_t *obj_p, ecma_string_t *property_name_p, bool is_throw); diff --git a/src/libecmaoperations/ecma-objects.c b/src/libecmaoperations/ecma-objects.c index cefa3d2de..9f2cf2046 100644 --- a/src/libecmaoperations/ecma-objects.c +++ b/src/libecmaoperations/ecma-objects.c @@ -255,45 +255,6 @@ ecma_op_object_can_put (ecma_object_t *obj_p, /**< the object */ return ecma_op_general_object_can_put (obj_p, property_name_p); } /* ecma_op_object_can_put */ -/** - * [[HasProperty]] ecma object's operation - * - * See also: - * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 - * - * @return true - if the object already has a property with the given property name; - * false - otherwise. - */ -bool -ecma_op_object_has_property (ecma_object_t *obj_p, /**< the object */ - ecma_string_t *property_name_p) /**< property name */ -{ - JERRY_ASSERT(obj_p != NULL - && !ecma_is_lexical_environment (obj_p)); - JERRY_ASSERT(property_name_p != NULL); - - const ecma_object_type_t type = ecma_get_object_type (obj_p); - JERRY_ASSERT (type < ECMA_OBJECT_TYPE__COUNT); - - /* - * typedef ecma_property_t* (*has_property_ptr_t) (ecma_object_t *, ecma_string_t *); - * static const has_property_ptr_t has_property [ECMA_OBJECT_TYPE__COUNT] = - * { - * [ECMA_OBJECT_TYPE_GENERAL] = &ecma_op_general_object_has_property, - * [ECMA_OBJECT_TYPE_ARRAY] = &ecma_op_general_object_has_property, - * [ECMA_OBJECT_TYPE_FUNCTION] = &ecma_op_general_object_has_property, - * [ECMA_OBJECT_TYPE_BOUND_FUNCTION] = &ecma_op_general_object_has_property, - * [ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION] = &ecma_op_general_object_has_property, - * [ECMA_OBJECT_TYPE_ARGUMENTS] = &ecma_op_general_object_has_property, - * [ECMA_OBJECT_TYPE_STRING] = &ecma_op_general_object_has_property - * }; - * - * return has_property[type] (obj_p, property_name_p); - */ - - return ecma_op_general_object_has_property (obj_p, property_name_p); -} /* ecma_op_object_has_property */ - /** * [[Delete]] ecma object's operation * diff --git a/src/libecmaoperations/ecma-objects.h b/src/libecmaoperations/ecma-objects.h index 212a0b37c..c2d1bece9 100644 --- a/src/libecmaoperations/ecma-objects.h +++ b/src/libecmaoperations/ecma-objects.h @@ -34,7 +34,6 @@ extern ecma_completion_value_t ecma_op_object_put (ecma_object_t *obj_p, ecma_value_t value, bool is_throw); extern bool ecma_op_object_can_put (ecma_object_t *obj_p, ecma_string_t *property_name_p); -extern bool ecma_op_object_has_property (ecma_object_t *obj_p, ecma_string_t *property_name_p); extern ecma_completion_value_t ecma_op_object_delete (ecma_object_t *obj_p, ecma_string_t *property_name_p, bool is_throw);