Simplify [[DefineOwnProperty]] usage, use the helper function where possible.

JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély zsborbely.u-szeged@partner.samsung.com
This commit is contained in:
Zsolt Borbély
2015-10-22 14:32:12 +02:00
committed by Peter Gal
parent fcebf654cc
commit 4aaa0ace17
10 changed files with 157 additions and 367 deletions
@@ -16,6 +16,7 @@
#include "ecma-alloc.h"
#include "ecma-array-object.h"
#include "ecma-builtin-helpers.h"
#include "ecma-exceptions.h"
#include "ecma-gc.h"
#include "ecma-globals.h"
@@ -1144,27 +1145,16 @@ re_set_result_array_properties (ecma_object_t *array_obj_p, /**< result array */
/* Set index property of the result array */
ecma_string_t *result_prop_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INDEX);
{
ecma_property_descriptor_t array_item_prop_desc = ecma_make_empty_property_descriptor ();
array_item_prop_desc.is_value_defined = true;
ecma_number_t *num_p = ecma_alloc_number ();
*num_p = (ecma_number_t) index;
array_item_prop_desc.value = ecma_make_number_value (num_p);
array_item_prop_desc.is_writable_defined = true;
array_item_prop_desc.is_writable = true;
array_item_prop_desc.is_enumerable_defined = true;
array_item_prop_desc.is_enumerable = true;
array_item_prop_desc.is_configurable_defined = true;
array_item_prop_desc.is_configurable = true;
ecma_op_object_define_own_property (array_obj_p,
result_prop_str_p,
&array_item_prop_desc,
true);
ecma_builtin_helper_def_prop (array_obj_p,
result_prop_str_p,
ecma_make_number_value (num_p),
true, /* Writable */
true, /* Enumerable */
true, /* Configurable */
true); /* Failure handling */
ecma_dealloc_number (num_p);
}
@@ -1172,26 +1162,15 @@ re_set_result_array_properties (ecma_object_t *array_obj_p, /**< result array */
/* Set input property of the result array */
result_prop_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INPUT);
{
ecma_property_descriptor_t array_item_prop_desc = ecma_make_empty_property_descriptor ();
array_item_prop_desc.is_value_defined = true;
array_item_prop_desc.value = ecma_make_string_value (input_str_p);
ecma_builtin_helper_def_prop (array_obj_p,
result_prop_str_p,
ecma_make_string_value (input_str_p),
true, /* Writable */
true, /* Enumerable */
true, /* Configurable */
true); /* Failure handling */
array_item_prop_desc.is_writable_defined = true;
array_item_prop_desc.is_writable = true;
array_item_prop_desc.is_enumerable_defined = true;
array_item_prop_desc.is_enumerable = true;
array_item_prop_desc.is_configurable_defined = true;
array_item_prop_desc.is_configurable = true;
ecma_op_object_define_own_property (array_obj_p,
result_prop_str_p,
&array_item_prop_desc,
true);
}
ecma_deref_ecma_string (result_prop_str_p);
/* Set length property of the result array */
@@ -1205,10 +1184,6 @@ re_set_result_array_properties (ecma_object_t *array_obj_p, /**< result array */
*num_p = (ecma_number_t) (num_of_elements);
array_item_prop_desc.value = ecma_make_number_value (num_p);
array_item_prop_desc.is_writable_defined = false;
array_item_prop_desc.is_enumerable_defined = false;
array_item_prop_desc.is_configurable_defined = false;
ecma_op_object_define_own_property (array_obj_p,
result_prop_str_p,
&array_item_prop_desc,