From 82fe067fc95ca1938092e6fd843a19a12a7b1eae Mon Sep 17 00:00:00 2001 From: Ruben Ayrapetyan Date: Fri, 14 Nov 2014 14:25:55 +0300 Subject: [PATCH] Calling routine for instantiating built-ins' properties only if property name is a magic string. --- .../ecma-builtin-internal-routines-template.inc.h | 6 ++---- src/libecmaoperations/ecma-objects.c | 5 ++++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libecmabuiltins/ecma-builtin-internal-routines-template.inc.h b/src/libecmabuiltins/ecma-builtin-internal-routines-template.inc.h index 06f30f96c..f3efa31df 100644 --- a/src/libecmabuiltins/ecma-builtin-internal-routines-template.inc.h +++ b/src/libecmabuiltins/ecma-builtin-internal-routines-template.inc.h @@ -109,10 +109,8 @@ TRY_TO_INSTANTIATE_PROPERTY_ROUTINE_NAME (BUILTIN_UNDERSCORED_ID) (ecma_object_t ecma_magic_string_id_t id; - if (!ecma_is_string_magic (prop_name_p, &id)) - { - return NULL; - } + bool is_string_magic = ecma_is_string_magic (prop_name_p, &id); + JERRY_ASSERT (is_string_magic); int32_t index; index = ecma_builtin_bin_search_for_magic_string_id_in_array (ecma_builtin_property_names, diff --git a/src/libecmaoperations/ecma-objects.c b/src/libecmaoperations/ecma-objects.c index f23b9ba2b..eccc5bf11 100644 --- a/src/libecmaoperations/ecma-objects.c +++ b/src/libecmaoperations/ecma-objects.c @@ -104,8 +104,11 @@ ecma_op_object_get_own_property (ecma_object_t *obj_p, /**< the object */ if (unlikely (prop_p == NULL)) { + ecma_magic_string_id_t magic_string_id __unused; + if (is_builtin - && type != ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION) + && type != ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION + && ecma_is_string_magic (property_name_p, &magic_string_id)) { prop_p = ecma_builtin_try_to_instantiate_property (obj_p, property_name_p); }