From a976b0c0610ff3b967a4573697eaffabadebe5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A1szl=C3=B3=20Lang=C3=B3?= Date: Wed, 8 Feb 2017 14:58:54 +0100 Subject: [PATCH] Improve performance of GC sweep (#1568) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com --- jerry-core/ecma/base/ecma-gc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/jerry-core/ecma/base/ecma-gc.c b/jerry-core/ecma/base/ecma-gc.c index 71fb9d344..8246b5531 100644 --- a/jerry-core/ecma/base/ecma-gc.c +++ b/jerry-core/ecma/base/ecma-gc.c @@ -359,7 +359,9 @@ ecma_gc_sweep (ecma_object_t *object_p) /**< object to free */ && !ecma_gc_is_object_visited (object_p) && object_p->type_flags_refs < ECMA_OBJECT_REF_ONE); - if (!ecma_is_lexical_environment (object_p)) + bool obj_is_not_lex_env = !ecma_is_lexical_environment (object_p); + + if (obj_is_not_lex_env) { /* if the object provides free callback, invoke it with handle stored in the object */ @@ -381,7 +383,7 @@ ecma_gc_sweep (ecma_object_t *object_p) /**< object to free */ } } - if (!ecma_is_lexical_environment (object_p) + if (obj_is_not_lex_env || ecma_get_lex_env_type (object_p) == ECMA_LEXICAL_ENVIRONMENT_DECLARATIVE) { ecma_property_header_t *prop_iter_p = ecma_get_property_list (object_p); @@ -424,7 +426,7 @@ ecma_gc_sweep (ecma_object_t *object_p) /**< object to free */ JERRY_ASSERT (JERRY_CONTEXT (ecma_gc_objects_number) > 0); JERRY_CONTEXT (ecma_gc_objects_number)--; - if (!ecma_is_lexical_environment (object_p)) + if (obj_is_not_lex_env) { ecma_object_type_t object_type = ecma_get_object_type (object_p);