diff options
author | Zoltan Herczeg <zherczeg.u-szeged@partner.samsung.com> | 2016-02-16 04:06:18 -0800 |
---|---|---|
committer | László Langó <llango.u-szeged@partner.samsung.com> | 2016-02-17 13:52:51 +0000 |
commit | b2426a7a94729480c84e80913fff50220a0f777a (patch) | |
tree | 0a86da51f62825ed36cefb86a273d24f55b3b1b4 /jerry-core | |
parent | c25d8617a517ddd1808fcfc30e5e1c8105f25224 (diff) |
Remove 'ecma_completion_value_t'
Remove ecma_completion_value_t, and add an extra bit to
ecma_value_t to represent errors. From the long list of
completion types only normal and error remained.
JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
Diffstat (limited to 'jerry-core')
96 files changed, 2693 insertions, 3274 deletions
diff --git a/jerry-core/config.h b/jerry-core/config.h index 7d79dff0..95a9985b 100644 --- a/jerry-core/config.h +++ b/jerry-core/config.h @@ -160,7 +160,7 @@ #endif /* CONFIG_ECMA_COMPACT_PROFILE */ /** - * Number of ecma-values inlined into VM stack frame + * Number of ecma values inlined into VM stack frame */ #define CONFIG_VM_STACK_FRAME_INLINED_VALUES_NUMBER (16) diff --git a/jerry-core/ecma/base/ecma-alloc.c b/jerry-core/ecma/base/ecma-alloc.c index 5a49265a..d28c2a29 100644 --- a/jerry-core/ecma/base/ecma-alloc.c +++ b/jerry-core/ecma/base/ecma-alloc.c @@ -29,8 +29,6 @@ JERRY_STATIC_ASSERT (ECMA_OBJECT_LEX_ENV_TYPE_SIZE <= sizeof (uint64_t) * JERRY_ JERRY_STATIC_ASSERT (sizeof (ecma_collection_header_t) == sizeof (uint64_t)); JERRY_STATIC_ASSERT (sizeof (ecma_collection_chunk_t) == sizeof (uint64_t)); JERRY_STATIC_ASSERT (sizeof (ecma_string_t) == sizeof (uint64_t)); -JERRY_STATIC_ASSERT (sizeof (ecma_completion_value_t) == sizeof (uint32_t)); -JERRY_STATIC_ASSERT (sizeof (ecma_label_descriptor_t) == sizeof (uint64_t)); JERRY_STATIC_ASSERT (sizeof (ecma_getter_setter_pointers_t) <= sizeof (uint64_t)); /** \addtogroup ecma ECMA @@ -87,7 +85,6 @@ DECLARE_ROUTINES_FOR (number) DECLARE_ROUTINES_FOR (collection_header) DECLARE_ROUTINES_FOR (collection_chunk) DECLARE_ROUTINES_FOR (string) -DECLARE_ROUTINES_FOR (label_descriptor) DECLARE_ROUTINES_FOR (getter_setter_pointers) DECLARE_ROUTINES_FOR (external_pointer) diff --git a/jerry-core/ecma/base/ecma-alloc.h b/jerry-core/ecma/base/ecma-alloc.h index d3ff7c09..05f327f7 100644 --- a/jerry-core/ecma/base/ecma-alloc.h +++ b/jerry-core/ecma/base/ecma-alloc.h @@ -98,18 +98,6 @@ extern ecma_string_t *ecma_alloc_string (void); extern void ecma_dealloc_string (ecma_string_t *); /** - * Allocate memory for label descriptor - * - * @return pointer to allocated memory - */ -extern ecma_label_descriptor_t *ecma_alloc_label_descriptor (void); - -/** - * Dealloc memory from label descriptor - */ -extern void ecma_dealloc_label_descriptor (ecma_label_descriptor_t *); - -/** * Allocate memory for getter-setter pointer pair * * @return pointer to allocated memory diff --git a/jerry-core/ecma/base/ecma-gc.c b/jerry-core/ecma/base/ecma-gc.c index e319bbe9..a993feee 100644 --- a/jerry-core/ecma/base/ecma-gc.c +++ b/jerry-core/ecma/base/ecma-gc.c @@ -329,8 +329,8 @@ ecma_gc_mark (ecma_object_t *object_p) /**< object to mark from */ switch (property_id) { - case ECMA_INTERNAL_PROPERTY_NUMBER_INDEXED_ARRAY_VALUES: /* a collection of ecma-values */ - case ECMA_INTERNAL_PROPERTY_STRING_INDEXED_ARRAY_VALUES: /* a collection of ecma-values */ + case ECMA_INTERNAL_PROPERTY_NUMBER_INDEXED_ARRAY_VALUES: /* a collection of ecma values */ + case ECMA_INTERNAL_PROPERTY_STRING_INDEXED_ARRAY_VALUES: /* a collection of ecma values */ { JERRY_UNIMPLEMENTED ("Indexed array storage is not implemented yet."); } @@ -363,7 +363,7 @@ ecma_gc_mark (ecma_object_t *object_p) /**< object to mark from */ break; } - case ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_BOUND_THIS: /* an ecma-value */ + case ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_BOUND_THIS: /* an ecma value */ { if (ecma_is_value_object (property_value)) { @@ -375,7 +375,7 @@ ecma_gc_mark (ecma_object_t *object_p) /**< object to mark from */ break; } - case ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_BOUND_ARGS: /* a collection of ecma-values */ + case ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_BOUND_ARGS: /* a collection of ecma values */ { ecma_collection_header_t *bound_arg_list_p = ECMA_GET_NON_NULL_POINTER (ecma_collection_header_t, property_value); diff --git a/jerry-core/ecma/base/ecma-globals.h b/jerry-core/ecma/base/ecma-globals.h index e806191d..be9d57e7 100644 --- a/jerry-core/ecma/base/ecma-globals.h +++ b/jerry-core/ecma/base/ecma-globals.h @@ -34,7 +34,7 @@ */ /** - * Ecma-pointer field is used to calculate ecma-value's address. + * Ecma-pointer field is used to calculate ecma value's address. * * Ecma-pointer contains value's shifted offset from common Ecma-pointers' base. * The offset is shifted right by MEM_ALIGNMENT_LOG. @@ -52,7 +52,7 @@ */ /** - * Type of ecma-value + * Type of ecma value */ typedef enum { @@ -63,7 +63,7 @@ typedef enum } ecma_type_t; /** - * Simple ecma-values + * Simple ecma values */ typedef enum { @@ -80,7 +80,7 @@ typedef enum ECMA_SIMPLE_VALUE_TRUE, /**< boolean true */ ECMA_SIMPLE_VALUE_ARRAY_HOLE, /**< array hole, used for initialization of an array literal */ ECMA_SIMPLE_VALUE_REGISTER_REF, /**< register reference, a special "base" value for vm */ - ECMA_SIMPLE_VALUE__COUNT /** count of simple ecma-values */ + ECMA_SIMPLE_VALUE__COUNT /** count of simple ecma values */ } ecma_simple_value_t; /** @@ -94,40 +94,9 @@ typedef enum } ecma_property_type_t; /** - * Type of block evaluation (completion) result. + * Description of an ecma value * - * See also: ECMA-262 v5, 8.9. - */ -typedef enum -{ - ECMA_COMPLETION_TYPE_NORMAL, /**< default completion */ - ECMA_COMPLETION_TYPE_RETURN, /**< completion with return */ - ECMA_COMPLETION_TYPE_JUMP, /**< implementation-defined completion type - * for jump statements (break, continue) - * that require completion of one or several - * statements, before performing related jump. - * - * For example, 'break' in the following code - * requires to return from opfunc_with handler - * before performing jump to the loop end: - * - * for (var i = 0; i < 10; i++) - * { - * with (obj) - * { - * break; - * } - * } - */ - ECMA_COMPLETION_TYPE_THROW, /**< completion with throw */ - ECMA_COMPLETION_TYPE_META /**< implementation-defined completion type - for meta opcode */ -} ecma_completion_type_t; - -/** - * Description of an ecma-value - * - * Bit-field structure: type (2) | value (ECMA_POINTER_FIELD_WIDTH) + * Bit-field structure: type (2) | error (1) | value (ECMA_POINTER_FIELD_WIDTH) */ typedef uint32_t ecma_value_t; @@ -138,63 +107,23 @@ typedef uint32_t ecma_value_t; #define ECMA_VALUE_TYPE_WIDTH (2) /** - * Simple value (ecma_simple_value_t) or compressed pointer to value (depending on value_type) + * Value is error (boolean) */ -#define ECMA_VALUE_VALUE_POS (ECMA_VALUE_TYPE_POS + \ +#define ECMA_VALUE_ERROR_POS (ECMA_VALUE_TYPE_POS + \ ECMA_VALUE_TYPE_WIDTH) -#define ECMA_VALUE_VALUE_WIDTH (ECMA_POINTER_FIELD_WIDTH) - -/** - * Size of ecma value description, in bits - */ -#define ECMA_VALUE_SIZE (ECMA_VALUE_VALUE_POS + ECMA_VALUE_VALUE_WIDTH) - -/** - * Description of a block completion value - * - * See also: ECMA-262 v5, 8.9. - * - * value (16) - * Bit-field structure: type (8) | padding (8) < - * break / continue target - */ -typedef uint32_t ecma_completion_value_t; +#define ECMA_VALUE_ERROR_WIDTH (1) /** - * Value - * - * Used for normal, return, throw and exit completion types. - */ -#define ECMA_COMPLETION_VALUE_VALUE_POS (0) -#define ECMA_COMPLETION_VALUE_VALUE_WIDTH (ECMA_VALUE_SIZE) - -/** - * Type (ecma_completion_type_t) - */ -#define ECMA_COMPLETION_VALUE_TYPE_POS (JERRY_ALIGNUP (ECMA_COMPLETION_VALUE_VALUE_POS + \ - ECMA_COMPLETION_VALUE_VALUE_WIDTH, \ - JERRY_BITSINBYTE)) -#define ECMA_COMPLETION_VALUE_TYPE_WIDTH (8) - -/** - * Size of ecma completion value description, in bits + * Simple value (ecma_simple_value_t) or compressed pointer to value (depending on value_type) */ -#define ECMA_COMPLETION_VALUE_SIZE (ECMA_COMPLETION_VALUE_TYPE_POS + \ - ECMA_COMPLETION_VALUE_TYPE_WIDTH) +#define ECMA_VALUE_VALUE_POS (ECMA_VALUE_ERROR_POS + \ + ECMA_VALUE_ERROR_WIDTH) +#define ECMA_VALUE_VALUE_WIDTH (ECMA_POINTER_FIELD_WIDTH) /** - * Label - * - * Used for break and continue completion types. + * Size of ecma value description, in bits */ -typedef struct -{ - /** Target's offset */ - uint32_t offset; - - /** Levels to label left */ - uint32_t depth; -} ecma_label_descriptor_t; +#define ECMA_VALUE_SIZE (ECMA_VALUE_VALUE_POS + ECMA_VALUE_VALUE_WIDTH) /** * Internal properties' identifiers. diff --git a/jerry-core/ecma/base/ecma-helpers-value.c b/jerry-core/ecma/base/ecma-helpers-value.c index 107d0ab9..4fa73f39 100644 --- a/jerry-core/ecma/base/ecma-helpers-value.c +++ b/jerry-core/ecma/base/ecma-helpers-value.c @@ -31,12 +31,12 @@ JERRY_STATIC_ASSERT (sizeof (ecma_value_t) * JERRY_BITSINBYTE >= ECMA_VALUE_SIZE); /** - * Get type field of ecma-value + * Get type field of ecma value * * @return type field */ ecma_type_t __attr_pure___ -ecma_get_value_type_field (ecma_value_t value) /**< ecma-value */ +ecma_get_value_type_field (ecma_value_t value) /**< ecma value */ { return (ecma_type_t) jrt_extract_bit_field (value, ECMA_VALUE_TYPE_POS, @@ -44,12 +44,12 @@ ecma_get_value_type_field (ecma_value_t value) /**< ecma-value */ } /* ecma_get_value_type_field */ /** - * Get value field of ecma-value + * Get value field of ecma value * * @return value field */ static uintptr_t __attr_pure___ -ecma_get_value_value_field (ecma_value_t value) /**< ecma-value */ +ecma_get_value_value_field (ecma_value_t value) /**< ecma value */ { return (uintptr_t) jrt_extract_bit_field (value, ECMA_VALUE_VALUE_POS, @@ -57,12 +57,12 @@ ecma_get_value_value_field (ecma_value_t value) /**< ecma-value */ } /* ecma_get_value_value_field */ /** - * Set type field of ecma-value + * Set type field of ecma value * - * @return ecma-value with updated field + * @return ecma value with updated field */ static ecma_value_t __attr_pure___ -ecma_set_value_type_field (ecma_value_t value, /**< ecma-value to set field in */ +ecma_set_value_type_field (ecma_value_t value, /**< ecma value to set field in */ ecma_type_t type_field) /**< new field value */ { return (ecma_value_t) jrt_set_bit_field_value (value, @@ -72,12 +72,12 @@ ecma_set_value_type_field (ecma_value_t value, /**< ecma-value to set field in * } /* ecma_set_value_type_field */ /** - * Set value field of ecma-value + * Set value field of ecma value * - * @return ecma-value with updated field + * @return ecma value with updated field */ static ecma_value_t __attr_pure___ -ecma_set_value_value_field (ecma_value_t value, /**< ecma-value to set field in */ +ecma_set_value_value_field (ecma_value_t value, /**< ecma value to set field in */ uintptr_t value_field) /**< new field value */ { return (ecma_value_t) jrt_set_bit_field_value (value, @@ -93,7 +93,7 @@ ecma_set_value_value_field (ecma_value_t value, /**< ecma-value to set field in * false - otherwise. */ bool __attr_pure___ __attr_always_inline___ -ecma_is_value_empty (ecma_value_t value) /**< ecma-value */ +ecma_is_value_empty (ecma_value_t value) /**< ecma value */ { return (ecma_get_value_type_field (value) == ECMA_TYPE_SIMPLE && ecma_get_value_value_field (value) == ECMA_SIMPLE_VALUE_EMPTY); @@ -106,7 +106,7 @@ ecma_is_value_empty (ecma_value_t value) /**< ecma-value */ * false - otherwise. */ bool __attr_pure___ __attr_always_inline___ -ecma_is_value_undefined (ecma_value_t value) /**< ecma-value */ +ecma_is_value_undefined (ecma_value_t value) /**< ecma value */ { return (ecma_get_value_type_field (value) == ECMA_TYPE_SIMPLE && ecma_get_value_value_field (value) == ECMA_SIMPLE_VALUE_UNDEFINED); @@ -119,7 +119,7 @@ ecma_is_value_undefined (ecma_value_t value) /**< ecma-value */ * false - otherwise. */ bool __attr_pure___ __attr_always_inline___ -ecma_is_value_null (ecma_value_t value) /**< ecma-value */ +ecma_is_value_null (ecma_value_t value) /**< ecma value */ { return (ecma_get_value_type_field (value) == ECMA_TYPE_SIMPLE && ecma_get_value_value_field (value) == ECMA_SIMPLE_VALUE_NULL); @@ -132,7 +132,7 @@ ecma_is_value_null (ecma_value_t value) /**< ecma-value */ * false - otherwise. */ bool __attr_pure___ __attr_always_inline___ -ecma_is_value_boolean (ecma_value_t value) /**< ecma-value */ +ecma_is_value_boolean (ecma_value_t value) /**< ecma value */ { return (ecma_get_value_type_field (value) == ECMA_TYPE_SIMPLE && (ecma_get_value_value_field (value) == ECMA_SIMPLE_VALUE_TRUE @@ -142,27 +142,37 @@ ecma_is_value_boolean (ecma_value_t value) /**< ecma-value */ /** * Check if the value is true. * - * Warning: - * value must be boolean - * * @return true - if the value contains ecma-true simple value, * false - otherwise. */ bool __attr_pure___ __attr_always_inline___ -ecma_is_value_true (ecma_value_t value) /**< ecma-value */ +ecma_is_value_true (ecma_value_t value) /**< ecma value */ { return (ecma_get_value_type_field (value) == ECMA_TYPE_SIMPLE && ecma_get_value_value_field (value) == ECMA_SIMPLE_VALUE_TRUE); } /* ecma_is_value_true */ /** + * Check if the value is false. + * + * @return true - if the value contains ecma-false simple value, + * false - otherwise. + */ +bool __attr_pure___ __attr_always_inline___ +ecma_is_value_false (ecma_value_t value) /**< ecma value */ +{ + return (ecma_get_value_type_field (value) == ECMA_TYPE_SIMPLE + && ecma_get_value_value_field (value) == ECMA_SIMPLE_VALUE_FALSE); +} /* ecma_is_value_false */ + +/** * Check if the value is array hole. * * @return true - if the value contains ecma-array-hole simple value, * false - otherwise. */ bool __attr_pure___ __attr_always_inline___ -ecma_is_value_array_hole (ecma_value_t value) /**< ecma-value */ +ecma_is_value_array_hole (ecma_value_t value) /**< ecma value */ { return (ecma_get_value_type_field (value) == ECMA_TYPE_SIMPLE && ecma_get_value_value_field (value) == ECMA_SIMPLE_VALUE_ARRAY_HOLE); @@ -175,7 +185,7 @@ ecma_is_value_array_hole (ecma_value_t value) /**< ecma-value */ * false - otherwise. */ bool __attr_pure___ __attr_always_inline___ -ecma_is_value_number (ecma_value_t value) /**< ecma-value */ +ecma_is_value_number (ecma_value_t value) /**< ecma value */ { return (ecma_get_value_type_field (value) == ECMA_TYPE_NUMBER); } /* ecma_is_value_number */ @@ -187,7 +197,7 @@ ecma_is_value_number (ecma_value_t value) /**< ecma-value */ * false - otherwise. */ bool __attr_pure___ __attr_always_inline___ -ecma_is_value_string (ecma_value_t value) /**< ecma-value */ +ecma_is_value_string (ecma_value_t value) /**< ecma value */ { return (ecma_get_value_type_field (value) == ECMA_TYPE_STRING); } /* ecma_is_value_string */ @@ -199,17 +209,29 @@ ecma_is_value_string (ecma_value_t value) /**< ecma-value */ * false - otherwise. */ bool __attr_pure___ __attr_always_inline___ -ecma_is_value_object (ecma_value_t value) /**< ecma-value */ +ecma_is_value_object (ecma_value_t value) /**< ecma value */ { return (ecma_get_value_type_field (value) == ECMA_TYPE_OBJECT); } /* ecma_is_value_object */ /** + * Check if the value is an error value. + * + * @return true - if the value contains an error value, + * false - otherwise. + */ +bool __attr_pure___ __attr_always_inline___ +ecma_is_value_error (ecma_value_t value) /**< ecma value */ +{ + return (value & (1u << ECMA_VALUE_ERROR_POS)) != 0; +} /* ecma_is_value_error */ + +/** * Debug assertion that specified value's type is one of ECMA-defined * script-visible types, i.e.: undefined, null, boolean, number, string, object. */ void -ecma_check_value_type_is_spec_defined (ecma_value_t value) /**< ecma-value */ +ecma_check_value_type_is_spec_defined (ecma_value_t value) /**< ecma value */ { JERRY_ASSERT (ecma_is_value_undefined (value) || ecma_is_value_null (value) @@ -272,7 +294,7 @@ ecma_make_string_value (const ecma_string_t *ecma_string_p) /**< string to refer } /* ecma_make_string_value */ /** - * object value constructor + * Object value constructor */ ecma_value_t __attr_const___ ecma_make_object_value (const ecma_object_t *object_p) /**< object to reference in value */ @@ -291,12 +313,34 @@ ecma_make_object_value (const ecma_object_t *object_p) /**< object to reference } /* ecma_make_object_value */ /** - * Get pointer to ecma-number from ecma-value + * Error value constructor + */ +ecma_value_t __attr_const___ +ecma_make_error_value (ecma_value_t value) /**< original ecma value */ +{ + /* Error values cannot be converted. */ + JERRY_ASSERT (!ecma_is_value_error (value)); + + return value | (1u << ECMA_VALUE_ERROR_POS); +} /* ecma_make_error_value */ + + +/** + * Error value constructor + */ +ecma_value_t __attr_const___ +ecma_make_error_obj_value (const ecma_object_t *object_p) /**< object to reference in value */ +{ + return ecma_make_error_value (ecma_make_object_value (object_p)); +} /* ecma_make_error_obj_value */ + +/** + * Get pointer to ecma-number from ecma value * * @return the pointer */ ecma_number_t *__attr_pure___ -ecma_get_number_from_value (ecma_value_t value) /**< ecma-value */ +ecma_get_number_from_value (ecma_value_t value) /**< ecma value */ { JERRY_ASSERT (ecma_get_value_type_field (value) == ECMA_TYPE_NUMBER); @@ -305,12 +349,12 @@ ecma_get_number_from_value (ecma_value_t value) /**< ecma-value */ } /* ecma_get_number_from_value */ /** - * Get pointer to ecma-string from ecma-value + * Get pointer to ecma-string from ecma value * * @return the pointer */ ecma_string_t *__attr_pure___ -ecma_get_string_from_value (ecma_value_t value) /**< ecma-value */ +ecma_get_string_from_value (ecma_value_t value) /**< ecma value */ { JERRY_ASSERT (ecma_get_value_type_field (value) == ECMA_TYPE_STRING); @@ -319,12 +363,12 @@ ecma_get_string_from_value (ecma_value_t value) /**< ecma-value */ } /* ecma_get_string_from_value */ /** - * Get pointer to ecma-object from ecma-value + * Get pointer to ecma-object from ecma value * * @return the pointer */ ecma_object_t *__attr_pure___ -ecma_get_object_from_value (ecma_value_t value) /**< ecma-value */ +ecma_get_object_from_value (ecma_value_t value) /**< ecma value */ { JERRY_ASSERT (ecma_get_value_type_field (value) == ECMA_TYPE_OBJECT); @@ -333,7 +377,24 @@ ecma_get_object_from_value (ecma_value_t value) /**< ecma-value */ } /* ecma_get_object_from_value */ /** - * Copy ecma-value. + * Get the value from an error ecma value + * + * @return ecma value + */ +ecma_value_t __attr_pure___ +ecma_get_value_from_error_value (ecma_value_t value) /**< ecma value */ +{ + JERRY_ASSERT (ecma_is_value_error (value)); + + value = (ecma_value_t) (value & ~(1u << ECMA_VALUE_ERROR_POS)); + + JERRY_ASSERT (!ecma_is_value_error (value)); + + return value; +} /* ecma_get_value_from_error_value */ + +/** + * Copy ecma value. * * Note: * Operation algorithm. @@ -342,7 +403,7 @@ ecma_get_object_from_value (ecma_value_t value) /**< ecma-value */ * simply return the value as it was passed; * case number: * copy the number - * and return new ecma-value + * and return new ecma value * pointing to copy of the number; * case string: * increase reference counter of the string @@ -354,7 +415,7 @@ ecma_get_object_from_value (ecma_value_t value) /**< ecma-value */ * @return See note. */ ecma_value_t -ecma_copy_value (ecma_value_t value, /**< ecma-value */ +ecma_copy_value (ecma_value_t value, /**< ecma value */ bool do_ref_if_object) /**< if the value is object value, increment reference counter of the object */ { @@ -408,12 +469,10 @@ ecma_copy_value (ecma_value_t value, /**< ecma-value */ } /* ecma_copy_value */ /** - * Free the ecma-value + * Free the ecma value */ void -ecma_free_value (ecma_value_t value, /**< value description */ - bool do_deref_if_object) /**< if the value is object value, - decrement reference counter of the object */ +ecma_free_value (ecma_value_t value) /**< value description */ { switch (ecma_get_value_type_field (value)) { @@ -439,414 +498,23 @@ ecma_free_value (ecma_value_t value, /**< value description */ case ECMA_TYPE_OBJECT: { - if (do_deref_if_object) - { - ecma_deref_object (ecma_get_object_from_value (value)); - } + ecma_deref_object (ecma_get_object_from_value (value)); break; } } } /* ecma_free_value */ /** - * Get type field of completion value - * - * @return type field - */ -static ecma_completion_type_t __attr_const___ -ecma_get_completion_value_type_field (ecma_completion_value_t completion_value) /**< completion value */ -{ - return (ecma_completion_type_t) jrt_extract_bit_field (completion_value, - ECMA_COMPLETION_VALUE_TYPE_POS, - ECMA_COMPLETION_VALUE_TYPE_WIDTH); -} /* ecma_get_completion_value_type_field */ - -/** - * Get value field of completion value - * - * @return value field - */ -static ecma_value_t __attr_const___ -ecma_get_completion_value_value_field (ecma_completion_value_t completion_value) /**< completion value */ -{ - return (ecma_value_t) jrt_extract_bit_field (completion_value, - ECMA_COMPLETION_VALUE_VALUE_POS, - ECMA_COMPLETION_VALUE_VALUE_WIDTH); -} /* ecma_get_completion_value_value_field */ - -/** - * Set type field of completion value - * - * @return completion value with updated field - */ -static ecma_completion_value_t __attr_const___ -ecma_set_completion_value_type_field (ecma_completion_value_t completion_value, /**< completion value - * to set field in */ - ecma_completion_type_t type_field) /**< new field value */ -{ - return (ecma_completion_value_t) jrt_set_bit_field_value (completion_value, - type_field, - ECMA_COMPLETION_VALUE_TYPE_POS, - ECMA_COMPLETION_VALUE_TYPE_WIDTH); -} /* ecma_set_completion_value_type_field */ - -/** - * Set value field of completion value - * - * @return completion value with updated field - */ -static ecma_completion_value_t __attr_pure___ -ecma_set_completion_value_value_field (ecma_completion_value_t completion_value, /**< completion value - * to set field in */ - ecma_value_t value_field) /**< new field value */ -{ - return (ecma_completion_value_t) jrt_set_bit_field_value (completion_value, - value_field, - ECMA_COMPLETION_VALUE_VALUE_POS, - ECMA_COMPLETION_VALUE_VALUE_WIDTH); -} /* ecma_set_completion_value_value_field */ - - -/** - * Normal, throw, return, exit and meta completion values constructor - * - * @return completion value - */ -ecma_completion_value_t __attr_pure___ __attr_always_inline___ -ecma_make_completion_value (ecma_completion_type_t type, /**< type */ - ecma_value_t value) /**< value */ -{ - const bool is_type_ok = (type == ECMA_COMPLETION_TYPE_NORMAL - || type == ECMA_COMPLETION_TYPE_THROW - || type == ECMA_COMPLETION_TYPE_RETURN - || (type == ECMA_COMPLETION_TYPE_META - && ecma_is_value_empty (value))); - - JERRY_ASSERT (is_type_ok); - - ecma_completion_value_t completion_value = 0; - - completion_value = ecma_set_completion_value_type_field (completion_value, - type); - completion_value = ecma_set_completion_value_value_field (completion_value, - value); - - return completion_value; -} /* ecma_make_completion_value */ - -/** - * Simple normal completion value constructor - * - * @return completion value - */ -ecma_completion_value_t __attr_const___ __attr_always_inline___ -ecma_make_simple_completion_value (ecma_simple_value_t simple_value) /**< simple ecma-value */ -{ - JERRY_ASSERT (simple_value == ECMA_SIMPLE_VALUE_UNDEFINED - || simple_value == ECMA_SIMPLE_VALUE_NULL - || simple_value == ECMA_SIMPLE_VALUE_FALSE - || simple_value == ECMA_SIMPLE_VALUE_TRUE); - - return ecma_make_completion_value (ECMA_COMPLETION_TYPE_NORMAL, - ecma_make_simple_value (simple_value)); -} /* ecma_make_simple_completion_value */ - -/** - * Normal completion value constructor - * - * @return completion value - */ -ecma_completion_value_t __attr_pure___ __attr_always_inline___ -ecma_make_normal_completion_value (ecma_value_t value) /**< value */ -{ - return ecma_make_completion_value (ECMA_COMPLETION_TYPE_NORMAL, value); -} /* ecma_make_normal_completion_value */ - -/** - * Throw completion value constructor - * - * @return completion value - */ -ecma_completion_value_t __attr_pure___ __attr_always_inline___ -ecma_make_throw_completion_value (ecma_value_t value) /**< value */ -{ - return ecma_make_completion_value (ECMA_COMPLETION_TYPE_THROW, value); -} /* ecma_make_throw_completion_value */ - -/** - * Throw completion value constructor. - * - * @return 'throw' completion value - */ -ecma_completion_value_t __attr_const___ -ecma_make_throw_obj_completion_value (ecma_object_t *exception_p) /**< an object */ -{ - JERRY_ASSERT (exception_p != NULL - && !ecma_is_lexical_environment (exception_p)); - - ecma_value_t exception = ecma_make_object_value (exception_p); - - return ecma_make_throw_completion_value (exception); -} /* ecma_make_throw_obj_completion_value */ - -/** - * Empty completion value constructor. - * - * @return (normal, empty, reserved) completion value. - */ -ecma_completion_value_t __attr_const___ __attr_always_inline___ -ecma_make_empty_completion_value (void) -{ - return ecma_make_completion_value (ECMA_COMPLETION_TYPE_NORMAL, - ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY)); -} /* ecma_make_empty_completion_value */ - -/** - * Return completion value constructor - * - * @return completion value - */ -ecma_completion_value_t __attr_pure___ __attr_always_inline___ -ecma_make_return_completion_value (ecma_value_t value) /**< value */ -{ - return ecma_make_completion_value (ECMA_COMPLETION_TYPE_RETURN, value); -} /* ecma_make_return_completion_value */ - -/** - * Meta completion value constructor - * - * @return completion value - */ -ecma_completion_value_t __attr_const___ __attr_always_inline___ -ecma_make_meta_completion_value (void) -{ - return ecma_make_completion_value (ECMA_COMPLETION_TYPE_META, - ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY)); -} /* ecma_make_meta_completion_value */ - -/** - * Get ecma-value from specified completion value - * - * @return ecma-value - */ -ecma_value_t __attr_const___ __attr_always_inline___ -ecma_get_completion_value_value (ecma_completion_value_t completion_value) /**< completion value */ -{ - const ecma_completion_type_t type = ecma_get_completion_value_type_field (completion_value); - - const bool is_type_ok = (type == ECMA_COMPLETION_TYPE_NORMAL - || type == ECMA_COMPLETION_TYPE_THROW - || type == ECMA_COMPLETION_TYPE_RETURN); - - JERRY_ASSERT (is_type_ok); - - return ecma_get_completion_value_value_field (completion_value); -} /* ecma_get_completion_value_value */ - -/** - * Get pointer to ecma-number from completion value - * - * @return pointer - */ -ecma_number_t *__attr_const___ -ecma_get_number_from_completion_value (ecma_completion_value_t completion_value) /**< completion value */ -{ - return ecma_get_number_from_value (ecma_get_completion_value_value (completion_value)); -} /* ecma_get_number_from_completion_value */ - -/** - * Get pointer to ecma-string from completion value - * - * @return pointer - */ -ecma_string_t *__attr_const___ -ecma_get_string_from_completion_value (ecma_completion_value_t completion_value) /**< completion value */ -{ - return ecma_get_string_from_value (ecma_get_completion_value_value (completion_value)); -} /* ecma_get_string_from_completion_value */ - -/** - * Get pointer to ecma-object from completion value - * - * @return pointer - */ -ecma_object_t *__attr_const___ -ecma_get_object_from_completion_value (ecma_completion_value_t completion_value) /**< completion value */ -{ - return ecma_get_object_from_value (ecma_get_completion_value_value (completion_value)); -} /* ecma_get_object_from_completion_value */ - -/** - * Copy ecma-completion value. - * - * @return (source.type, ecma_copy_value (source.value), source.target). - */ -ecma_completion_value_t -ecma_copy_completion_value (ecma_completion_value_t value) /**< completion value */ -{ - const ecma_completion_type_t type = ecma_get_completion_value_type_field (value); - const bool is_type_ok = (type == ECMA_COMPLETION_TYPE_NORMAL - || type == ECMA_COMPLETION_TYPE_THROW - || type == ECMA_COMPLETION_TYPE_RETURN - || type == ECMA_COMPLETION_TYPE_JUMP); - - JERRY_ASSERT (is_type_ok); - - return ecma_make_completion_value (type, - ecma_copy_value (ecma_get_completion_value_value_field (value), - true)); -} /* ecma_copy_completion_value */ - -/** - * Free the completion value. + * Free the ecma value if not an object */ void -ecma_free_completion_value (ecma_completion_value_t completion_value) /**< completion value */ -{ - switch (ecma_get_completion_value_type_field (completion_value)) - { - case ECMA_COMPLETION_TYPE_NORMAL: - case ECMA_COMPLETION_TYPE_THROW: - case ECMA_COMPLETION_TYPE_RETURN: - { - ecma_value_t v = ecma_get_completion_value_value_field (completion_value); - ecma_free_value (v, true); - break; - } - case ECMA_COMPLETION_TYPE_JUMP: - { - break; - } - case ECMA_COMPLETION_TYPE_META: - { - JERRY_UNREACHABLE (); - } - } -} /* ecma_free_completion_value */ - -/** - * Check if the completion value is normal value. - * - * @return true - if the completion type is normal, - * false - otherwise. - */ -bool __attr_const___ __attr_always_inline___ -ecma_is_completion_value_normal (ecma_completion_value_t value) /**< completion value */ +ecma_free_value_if_not_object (ecma_value_t value) /**< value description */ { - return (ecma_get_completion_value_type_field (value) == ECMA_COMPLETION_TYPE_NORMAL); -} /* ecma_is_completion_value_normal */ - -/** - * Check if the completion value is throw value. - * - * @return true - if the completion type is throw, - * false - otherwise. - */ -bool __attr_const___ __attr_always_inline___ -ecma_is_completion_value_throw (ecma_completion_value_t value) /**< completion value */ -{ - return (ecma_get_completion_value_type_field (value) == ECMA_COMPLETION_TYPE_THROW); -} /* ecma_is_completion_value_throw */ - -/** - * Check if the completion value is return value. - * - * @return true - if the completion type is return, - * false - otherwise. - */ -bool __attr_const___ __attr_always_inline___ -ecma_is_completion_value_return (ecma_completion_value_t value) /**< completion value */ -{ - return (ecma_get_completion_value_type_field (value) == ECMA_COMPLETION_TYPE_RETURN); -} /* ecma_is_completion_value_return */ - -/** - * Check if the completion value is meta value. - * - * @return true - if the completion type is meta, - * false - otherwise. - */ -bool __attr_const___ __attr_always_inline___ -ecma_is_completion_value_meta (ecma_completion_value_t value) /**< completion value */ -{ - if (ecma_get_completion_value_type_field (value) == ECMA_COMPLETION_TYPE_META) + if (ecma_get_value_type_field (value) != ECMA_TYPE_OBJECT) { - JERRY_ASSERT (ecma_is_value_empty (ecma_get_completion_value_value_field (value))); - - return true; + ecma_free_value (value); } - else - { - return false; - } -} /* ecma_is_completion_value_meta */ - -/** - * Check if the completion value is break / continue value. - * - * @return true - if the completion type is break / continue, - * false - otherwise. - */ -bool __attr_const___ __attr_always_inline___ -ecma_is_completion_value_jump (ecma_completion_value_t value) /**< completion value */ -{ - return (ecma_get_completion_value_type_field (value) == ECMA_COMPLETION_TYPE_JUMP); -} /* ecma_is_completion_value_jump */ - -/** - * Check if the completion value is specified normal simple value. - * - * @return true - if the completion type is normal and - * value contains specified simple ecma-value, - * false - otherwise. - */ -bool __attr_const___ __attr_always_inline___ -ecma_is_completion_value_normal_simple_value (ecma_completion_value_t value, /**< completion value */ - ecma_simple_value_t simple_value) /**< simple value to check - for equality with */ -{ - return (value == ecma_make_simple_completion_value (simple_value)); -} /* ecma_is_completion_value_normal_simple_value */ - -/** - * Check if the completion value is normal true. - * - * @return true - if the completion type is normal and - * value contains ecma-true simple value, - * false - otherwise. - */ -bool __attr_const___ __attr_always_inline___ -ecma_is_completion_value_normal_true (ecma_completion_value_t value) /**< completion value */ -{ - return ecma_is_completion_value_normal_simple_value (value, ECMA_SIMPLE_VALUE_TRUE); -} /* ecma_is_completion_value_normal_true */ - -/** - * Check if the completion value is normal false. - * - * @return true - if the completion type is normal and - * value contains ecma-false simple value, - * false - otherwise. - */ -bool __attr_const___ __attr_always_inline___ -ecma_is_completion_value_normal_false (ecma_completion_value_t value) /**< completion value */ -{ - return ecma_is_completion_value_normal_simple_value (value, ECMA_SIMPLE_VALUE_FALSE); -} /* ecma_is_completion_value_normal_false */ - -/** - * Check if the completion value is normal empty value. - * - * @return true - if the completion type is normal and - * value contains empty simple value, - * false - otherwise. - */ -bool __attr_const___ __attr_always_inline___ -ecma_is_completion_value_empty (ecma_completion_value_t value) /**< completion value */ -{ - return (ecma_is_completion_value_normal (value) - && ecma_is_value_empty (ecma_get_completion_value_value_field (value))); -} /* ecma_is_completion_value_empty */ +} /* ecma_free_value_if_not_object */ /** * @} diff --git a/jerry-core/ecma/base/ecma-helpers-values-collection.c b/jerry-core/ecma/base/ecma-helpers-values-collection.c index 8a8d4b9f..cb1e1dd0 100644 --- a/jerry-core/ecma/base/ecma-helpers-values-collection.c +++ b/jerry-core/ecma/base/ecma-helpers-values-collection.c @@ -26,13 +26,13 @@ #include "jrt.h" /** - * Allocate a collection of ecma-values. + * Allocate a collection of ecma values. * * @return pointer to the collection's header */ ecma_collection_header_t * -ecma_new_values_collection (const ecma_value_t values_buffer[], /**< ecma-values */ - ecma_length_t values_number, /**< number of ecma-values */ +ecma_new_values_collection (const ecma_value_t values_buffer[], /**< ecma values */ + ecma_length_t values_number, /**< number of ecma values */ bool do_ref_if_object) /**< if the value is object value, increase reference counter of the object */ { @@ -77,7 +77,7 @@ ecma_new_values_collection (const ecma_value_t values_buffer[], /**< ecma-values } /* ecma_new_values_collection */ /** - * Free the collection of ecma-values. + * Free the collection of ecma values. */ void ecma_free_values_collection (ecma_collection_header_t *header_p, /**< collection's header */ @@ -104,7 +104,14 @@ ecma_free_values_collection (ecma_collection_header_t *header_p, /**< collection { JERRY_ASSERT (cur_value_buf_iter_p < cur_value_buf_end_p); - ecma_free_value (*cur_value_buf_iter_p, do_deref_if_object); + if (do_deref_if_object) + { + ecma_free_value (*cur_value_buf_iter_p); + } + else + { + ecma_free_value_if_not_object (*cur_value_buf_iter_p); + } cur_value_buf_iter_p++; value_index++; @@ -120,11 +127,11 @@ ecma_free_values_collection (ecma_collection_header_t *header_p, /**< collection } /* ecma_free_values_collection */ /** - * Append new value to ecma-values collection + * Append new value to ecma values collection */ void ecma_append_to_values_collection (ecma_collection_header_t *header_p, /**< collection's header */ - ecma_value_t v, /**< ecma-value to append */ + ecma_value_t v, /**< ecma value to append */ bool do_ref_if_object) /**< if the value is object value, increase reference counter of the object */ { @@ -192,10 +199,7 @@ ecma_append_to_values_collection (ecma_collection_header_t *header_p, /**< colle * the function invalidates all iterators that are configured to access the passed collection */ void -ecma_remove_last_value_from_values_collection (ecma_collection_header_t *header_p, /**< collection's header */ - bool do_deref_if_object) /**< if the value to remove - * is object value, decrement - * reference counter of the object */ +ecma_remove_last_value_from_values_collection (ecma_collection_header_t *header_p) /**< collection's header */ { JERRY_ASSERT (header_p != NULL && header_p->unit_number > 0); @@ -211,7 +215,7 @@ ecma_remove_last_value_from_values_collection (ecma_collection_header_t *header_ ecma_value_t value_to_remove = values_p[pos_of_value_to_remove_in_chunk]; - ecma_free_value (value_to_remove, do_deref_if_object); + ecma_free_value (value_to_remove); header_p->unit_number--; diff --git a/jerry-core/ecma/base/ecma-helpers.c b/jerry-core/ecma/base/ecma-helpers.c index 5e83f4ba..bb178067 100644 --- a/jerry-core/ecma/base/ecma-helpers.c +++ b/jerry-core/ecma/base/ecma-helpers.c @@ -716,7 +716,7 @@ ecma_free_named_data_property (ecma_object_t *object_p, /**< object the property property_p->u.named_data_property.name_p)); ecma_value_t v = ecma_get_named_data_property_value (property_p); - ecma_free_value (v, false); + ecma_free_value_if_not_object (v); ecma_dealloc_property (property_p); } /* ecma_free_named_data_property */ @@ -811,7 +811,7 @@ ecma_free_internal_property (ecma_property_t *property_p) /**< the property */ case ECMA_INTERNAL_PROPERTY_BOUND_FUNCTION_BOUND_THIS: { - ecma_free_value (property_value, false); + ecma_free_value_if_not_object (property_value); break; } @@ -951,7 +951,7 @@ ecma_assert_object_contains_the_property (const ecma_object_t *object_p, /**< ec /** * Get value field of named data property * - * @return ecma-value + * @return ecma value */ ecma_value_t ecma_get_named_data_property_value (const ecma_property_t *prop_p) /**< property */ @@ -998,7 +998,7 @@ ecma_named_data_property_assign_value (ecma_object_t *obj_p, /**< object */ else { ecma_value_t v = ecma_get_named_data_property_value (prop_p); - ecma_free_value (v, false); + ecma_free_value_if_not_object (v); ecma_set_named_data_property_value (prop_p, ecma_copy_value (value, false)); } @@ -1262,7 +1262,7 @@ ecma_free_property_descriptor (ecma_property_descriptor_t *prop_desc_p) /**< pro { if (prop_desc_p->is_value_defined) { - ecma_free_value (prop_desc_p->value, true); + ecma_free_value (prop_desc_p->value); } if (prop_desc_p->is_get_defined @@ -1340,7 +1340,7 @@ ecma_bytecode_ref (ecma_compiled_code_t *bytecode_p) /**< byte code pointer */ jerry_fatal (ERR_REF_COUNT_LIMIT); } - bytecode_p->status_flags = (uint16_t) (bytecode_p->status_flags + (1 << ECMA_BYTECODE_REF_SHIFT)); + bytecode_p->status_flags = (uint16_t) (bytecode_p->status_flags + (1u << ECMA_BYTECODE_REF_SHIFT)); } /* ecma_bytecode_ref */ /** @@ -1352,9 +1352,9 @@ ecma_bytecode_deref (ecma_compiled_code_t *bytecode_p) /**< byte code pointer */ { JERRY_ASSERT ((bytecode_p->status_flags >> ECMA_BYTECODE_REF_SHIFT) > 0); - bytecode_p->status_flags = (uint16_t) (bytecode_p->status_flags - (1 << ECMA_BYTECODE_REF_SHIFT)); + bytecode_p->status_flags = (uint16_t) (bytecode_p->status_flags - (1u << ECMA_BYTECODE_REF_SHIFT)); - if (bytecode_p->status_flags >= (1 << ECMA_BYTECODE_REF_SHIFT)) + if (bytecode_p->status_flags >= (1u << ECMA_BYTECODE_REF_SHIFT)) { /* Non-zero reference counter. */ return; diff --git a/jerry-core/ecma/base/ecma-helpers.h b/jerry-core/ecma/base/ecma-helpers.h index 8e545c6a..c4664743 100644 --- a/jerry-core/ecma/base/ecma-helpers.h +++ b/jerry-core/ecma/base/ecma-helpers.h @@ -59,11 +59,13 @@ extern bool ecma_is_value_undefined (ecma_value_t); extern bool ecma_is_value_null (ecma_value_t); extern bool ecma_is_value_boolean (ecma_value_t); extern bool ecma_is_value_true (ecma_value_t); +extern bool ecma_is_value_false (ecma_value_t); extern bool ecma_is_value_array_hole (ecma_value_t); extern bool ecma_is_value_number (ecma_value_t); extern bool ecma_is_value_string (ecma_value_t); extern bool ecma_is_value_object (ecma_value_t); +extern bool ecma_is_value_error (ecma_value_t); extern void ecma_check_value_type_is_spec_defined (ecma_value_t); @@ -71,36 +73,15 @@ extern ecma_value_t ecma_make_simple_value (const ecma_simple_value_t value); extern ecma_value_t ecma_make_number_value (const ecma_number_t *); extern ecma_value_t ecma_make_string_value (const ecma_string_t *); extern ecma_value_t ecma_make_object_value (const ecma_object_t *); +extern ecma_value_t ecma_make_error_value (ecma_value_t); +extern ecma_value_t ecma_make_error_obj_value (const ecma_object_t *); extern ecma_number_t *ecma_get_number_from_value (ecma_value_t) __attr_pure___; extern ecma_string_t *ecma_get_string_from_value (ecma_value_t) __attr_pure___; extern ecma_object_t *ecma_get_object_from_value (ecma_value_t) __attr_pure___; +extern ecma_value_t ecma_get_value_from_error_value (ecma_value_t) __attr_pure___; extern ecma_value_t ecma_copy_value (ecma_value_t, bool); -extern void ecma_free_value (ecma_value_t, bool); - -extern ecma_completion_value_t ecma_make_completion_value (ecma_completion_type_t, ecma_value_t); -extern ecma_completion_value_t ecma_make_simple_completion_value (ecma_simple_value_t); -extern ecma_completion_value_t ecma_make_normal_completion_value (ecma_value_t); -extern ecma_completion_value_t ecma_make_throw_completion_value (ecma_value_t); -extern ecma_completion_value_t ecma_make_throw_obj_completion_value (ecma_object_t *); -extern ecma_completion_value_t ecma_make_empty_completion_value (void); -extern ecma_completion_value_t ecma_make_return_completion_value (ecma_value_t); -extern ecma_completion_value_t ecma_make_meta_completion_value (void); -extern ecma_value_t ecma_get_completion_value_value (ecma_completion_value_t); -extern ecma_number_t *ecma_get_number_from_completion_value (ecma_completion_value_t) __attr_const___; -extern ecma_string_t *ecma_get_string_from_completion_value (ecma_completion_value_t) __attr_const___; -extern ecma_object_t *ecma_get_object_from_completion_value (ecma_completion_value_t) __attr_const___; -extern ecma_completion_value_t ecma_copy_completion_value (ecma_completion_value_t); -extern void ecma_free_completion_value (ecma_completion_value_t); - -extern bool ecma_is_completion_value_normal (ecma_completion_value_t); -extern bool ecma_is_completion_value_throw (ecma_completion_value_t); -extern bool ecma_is_completion_value_return (ecma_completion_value_t); -extern bool ecma_is_completion_value_meta (ecma_completion_value_t); -extern bool ecma_is_completion_value_jump (ecma_completion_value_t); -extern bool ecma_is_completion_value_normal_simple_value (ecma_completion_value_t, ecma_simple_value_t); -extern bool ecma_is_completion_value_normal_true (ecma_completion_value_t); -extern bool ecma_is_completion_value_normal_false (ecma_completion_value_t); -extern bool ecma_is_completion_value_empty (ecma_completion_value_t); +extern void ecma_free_value (ecma_value_t); +extern void ecma_free_value_if_not_object (ecma_value_t); /* ecma-helpers-string.c */ extern ecma_string_t *ecma_new_ecma_string_from_utf8 (const lit_utf8_byte_t *, lit_utf8_size_t); @@ -167,11 +148,11 @@ extern void ecma_number_to_decimal (ecma_number_t, uint64_t *, int32_t *, int32_ extern ecma_collection_header_t *ecma_new_values_collection (const ecma_value_t[], ecma_length_t, bool); extern void ecma_free_values_collection (ecma_collection_header_t *, bool); extern void ecma_append_to_values_collection (ecma_collection_header_t *, ecma_value_t, bool); -extern void ecma_remove_last_value_from_values_collection (ecma_collection_header_t *, bool); +extern void ecma_remove_last_value_from_values_collection (ecma_collection_header_t *); extern ecma_collection_header_t *ecma_new_strings_collection (ecma_string_t *[], ecma_length_t); /** - * Context of ecma-values' collection iterator + * Context of ecma values' collection iterator */ typedef struct { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.c index add64ed1..13192c84 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.c @@ -1,5 +1,5 @@ -/* Copyright 2014-2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. +/* Copyright 2014-2016 Samsung Electronics Co., Ltd. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,14 +52,14 @@ /** * Helper function to set an object's length property * - * @return completion value (return value of the [[Put]] method) - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value (return value of the [[Put]] method) + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_helper_set_length (ecma_object_t *object, /**< object*/ ecma_number_t length) /**< new length */ { - ecma_completion_value_t ret_value; + ecma_value_t ret_value; ecma_string_t *magic_string_length_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH); ecma_number_t *len_p = ecma_alloc_number (); @@ -81,18 +81,18 @@ ecma_builtin_array_prototype_helper_set_length (ecma_object_t *object, /**< obje * See also: * ECMA-262 v5, 15.4.4.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_to_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t return_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this_value, ecma_op_to_object (this_arg), - return_value); + ret_value); ecma_object_t *obj_p = ecma_get_object_from_value (obj_this_value); @@ -101,19 +101,19 @@ ecma_builtin_array_prototype_object_to_string (ecma_value_t this_arg) /**< this /* 2. */ ECMA_TRY_CATCH (join_value, ecma_op_object_get (obj_p, join_magic_string_p), - return_value); + ret_value); if (!ecma_op_is_callable (join_value)) { /* 3. */ - return_value = ecma_builtin_helper_object_to_string (this_arg); + ret_value = ecma_builtin_helper_object_to_string (this_arg); } else { /* 4. */ ecma_object_t *join_func_obj_p = ecma_get_object_from_value (join_value); - return_value = ecma_op_function_call (join_func_obj_p, this_arg, NULL, 0); + ret_value = ecma_op_function_call (join_func_obj_p, this_arg, NULL, 0); } ECMA_FINALIZE (join_value); @@ -122,7 +122,7 @@ ecma_builtin_array_prototype_object_to_string (ecma_value_t this_arg) /**< this ECMA_FINALIZE (obj_this_value); - return return_value; + return ret_value; } /* ecma_builtin_array_prototype_object_to_string */ /** @@ -131,13 +131,13 @@ ecma_builtin_array_prototype_object_to_string (ecma_value_t this_arg) /**< this * See also: * ECMA-262 v5, 15.4.4.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_to_locale_string (const ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_value, @@ -167,7 +167,7 @@ ecma_builtin_array_prototype_object_to_locale_string (const ecma_value_t this_ar if (length == 0) { ecma_string_t *empty_string_p = ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (empty_string_p)); + ret_value = ecma_make_string_value (empty_string_p); } else { @@ -179,7 +179,7 @@ ecma_builtin_array_prototype_object_to_locale_string (const ecma_value_t this_ar ecma_string_t *return_string_p = ecma_copy_or_ref_ecma_string (ecma_get_string_from_value (first_value)); /* 9-10. */ - for (uint32_t k = 1; ecma_is_completion_value_empty (ret_value) && (k < length); k++) + for (uint32_t k = 1; ecma_is_value_empty (ret_value) && (k < length); k++) { ecma_string_t *part_string_p = ecma_concat_ecma_strings (return_string_p, separator_string_p); @@ -198,9 +198,9 @@ ecma_builtin_array_prototype_object_to_locale_string (const ecma_value_t this_ar ecma_deref_ecma_string (part_string_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (return_string_p)); + ret_value = ecma_make_string_value (return_string_p); } else { @@ -229,15 +229,15 @@ ecma_builtin_array_prototype_object_to_locale_string (const ecma_value_t this_ar * See also: * ECMA-262 v5, 15.4.4.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_concat (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -245,8 +245,8 @@ ecma_builtin_array_prototype_object_concat (ecma_value_t this_arg, /**< this arg ret_value); /* 2. */ - ecma_completion_value_t new_array = ecma_op_create_array_object (0, 0, false); - ecma_object_t *new_array_p = ecma_get_object_from_completion_value (new_array); + ecma_value_t new_array = ecma_op_create_array_object (0, 0, false); + ecma_object_t *new_array_p = ecma_get_object_from_value (new_array); uint32_t new_length = 0; /* 5.b - 5.c for this_arg */ @@ -256,7 +256,7 @@ ecma_builtin_array_prototype_object_concat (ecma_value_t this_arg, /**< this arg /* 5. */ for (uint32_t arg_index = 0; - arg_index < args_number && ecma_is_completion_value_empty (ret_value); + arg_index < args_number && ecma_is_value_empty (ret_value); arg_index++) { ECMA_TRY_CATCH (concat_value, @@ -267,7 +267,7 @@ ecma_builtin_array_prototype_object_concat (ecma_value_t this_arg, /**< this arg ECMA_FINALIZE (concat_this_value); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (set_length_value, ecma_builtin_array_prototype_helper_set_length (new_array_p, ecma_uint32_to_number (new_length)), @@ -277,7 +277,7 @@ ecma_builtin_array_prototype_object_concat (ecma_value_t this_arg, /**< this arg } else { - ecma_free_completion_value (new_array); + ecma_free_value (new_array); } ECMA_FINALIZE (obj_this); @@ -291,16 +291,17 @@ ecma_builtin_array_prototype_object_concat (ecma_value_t this_arg, /**< this arg * See also: * ECMA-262 v5.1, 15.4.4.2 4th step * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t + +static ecma_value_t ecma_op_array_get_separator_string (ecma_value_t separator) /**< possible separator */ { if (ecma_is_value_undefined (separator)) { ecma_string_t *comma_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_COMMA_CHAR); - return ecma_make_normal_completion_value (ecma_make_string_value (comma_string_p)); + return ecma_make_string_value (comma_string_p); } else { @@ -314,14 +315,14 @@ ecma_op_array_get_separator_string (ecma_value_t separator) /**< possible separa * See also: * ECMA-262 v5.1, 15.4.4.2 * - * @return ecma_completion_value_t value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma_value_t value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_op_array_get_to_string_at_index (ecma_object_t *obj_p, /**< this object */ uint32_t index) /**< array index */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_string_t *index_string_p = ecma_new_ecma_string_from_uint32 (index); ECMA_TRY_CATCH (index_value, @@ -332,7 +333,7 @@ ecma_op_array_get_to_string_at_index (ecma_object_t *obj_p, /**< this object */ || ecma_is_value_null (index_value)) { ecma_string_t *empty_string_p = ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (empty_string_p)); + ret_value = ecma_make_string_value (empty_string_p); } else { @@ -352,14 +353,14 @@ ecma_op_array_get_to_string_at_index (ecma_object_t *obj_p, /**< this object */ * See also: * ECMA-262 v5, 15.4.4.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_join (const ecma_value_t this_arg, /**< this argument */ const ecma_value_t separator_arg) /**< separator argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_value, @@ -391,7 +392,7 @@ ecma_builtin_array_prototype_join (const ecma_value_t this_arg, /**< this argume { /* 6. */ ecma_string_t *empty_string_p = ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (empty_string_p)); + ret_value = ecma_make_string_value (empty_string_p); } else { @@ -405,7 +406,7 @@ ecma_builtin_array_prototype_join (const ecma_value_t this_arg, /**< this argume ecma_string_t *return_string_p = ecma_copy_or_ref_ecma_string (ecma_get_string_from_value (first_value)); /* 9-10. */ - for (uint32_t k = 1; ecma_is_completion_value_empty (ret_value) && (k < length); k++) + for (uint32_t k = 1; ecma_is_value_empty (ret_value) && (k < length); k++) { /* 10.a */ ecma_string_t *part_string_p = ecma_concat_ecma_strings (return_string_p, separator_string_p); @@ -427,9 +428,9 @@ ecma_builtin_array_prototype_join (const ecma_value_t this_arg, /**< this argume ecma_deref_ecma_string (part_string_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (return_string_p)); + ret_value = ecma_make_string_value (return_string_p); } else { @@ -458,13 +459,13 @@ ecma_builtin_array_prototype_join (const ecma_value_t this_arg, /**< this argume * See also: * ECMA-262 v5, 15.4.4.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_pop (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -493,7 +494,7 @@ ecma_builtin_array_prototype_object_pop (ecma_value_t this_arg) /**< this argume ret_value); /* 4.b */ - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); ECMA_FINALIZE (set_length_value) } @@ -514,7 +515,7 @@ ecma_builtin_array_prototype_object_pop (ecma_value_t this_arg) /**< this argume ecma_builtin_array_prototype_helper_set_length (obj_p, ecma_uint32_to_number (len)), ret_value); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (get_value, true)); + ret_value = ecma_copy_value (get_value, true); ECMA_FINALIZE (set_length_value); ECMA_FINALIZE (del_value); @@ -537,15 +538,15 @@ ecma_builtin_array_prototype_object_pop (ecma_value_t this_arg) /**< this argume * See also: * ECMA-262 v5, 15.4.4.7 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_push (ecma_value_t this_arg, /**< this argument */ const ecma_value_t *argument_list_p, /**< arguments list */ ecma_length_t arguments_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this_value, ecma_op_to_object (this_arg), ret_value); @@ -564,7 +565,7 @@ ecma_builtin_array_prototype_object_push (ecma_value_t this_arg, /**< this argum /* 5. */ for (uint32_t index = 0; - index < arguments_number && ecma_is_completion_value_empty (ret_value); + index < arguments_number && ecma_is_value_empty (ret_value); index++, n++) { /* 5.a */ @@ -580,7 +581,7 @@ ecma_builtin_array_prototype_object_push (ecma_value_t this_arg, /**< this argum } /* 6. */ - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (set_length_value, ecma_builtin_array_prototype_helper_set_length (obj_p, n), @@ -589,7 +590,7 @@ ecma_builtin_array_prototype_object_push (ecma_value_t this_arg, /**< this argum ecma_number_t *ret_num_p = ecma_alloc_number (); *ret_num_p = n; - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); ECMA_FINALIZE (set_length_value) } @@ -611,13 +612,13 @@ ecma_builtin_array_prototype_object_push (ecma_value_t this_arg, /**< this argum * See also: * ECMA-262 v5, 15.4.4.8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_reverse (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -640,7 +641,7 @@ ecma_builtin_array_prototype_object_reverse (ecma_value_t this_arg) /**< this ar uint32_t middle = len / 2; /* 5-6. */ - for (uint32_t lower = 0; lower < middle && ecma_is_completion_value_empty (ret_value); lower++) + for (uint32_t lower = 0; lower < middle && ecma_is_value_empty (ret_value); lower++) { /* 6.a */ uint32_t upper = len - lower - 1; @@ -687,10 +688,10 @@ ecma_builtin_array_prototype_object_reverse (ecma_value_t this_arg) /**< this ar ecma_deref_ecma_string (upper_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 7. */ - ret_value = ecma_make_normal_completion_value (ecma_copy_value (obj_this, true)); + ret_value = ecma_copy_value (obj_this, true); } ECMA_OP_TO_NUMBER_FINALIZE (len_number); @@ -707,13 +708,13 @@ ecma_builtin_array_prototype_object_reverse (ecma_value_t this_arg) /**< this ar * See also: * ECMA-262 v5, 15.4.4.9 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_shift (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -740,7 +741,7 @@ ecma_builtin_array_prototype_object_shift (ecma_value_t this_arg) /**< this argu ecma_builtin_array_prototype_helper_set_length (obj_p, ECMA_NUMBER_ZERO), ret_value); - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); ECMA_FINALIZE (set_length_value); } @@ -752,7 +753,7 @@ ecma_builtin_array_prototype_object_shift (ecma_value_t this_arg) /**< this argu ECMA_TRY_CATCH (first_value, ecma_op_object_get (obj_p, index_str_p), ret_value); /* 6. and 7. */ - for (uint32_t k = 1; k < len && ecma_is_completion_value_empty (ret_value); k++) + for (uint32_t k = 1; k < len && ecma_is_value_empty (ret_value); k++) { /* 7.a */ ecma_string_t *from_str_p = ecma_new_ecma_string_from_uint32 (k); @@ -782,7 +783,7 @@ ecma_builtin_array_prototype_object_shift (ecma_value_t this_arg) /**< this argu ecma_deref_ecma_string (from_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { len--; ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (len); @@ -795,7 +796,7 @@ ecma_builtin_array_prototype_object_shift (ecma_value_t this_arg) /**< this argu ecma_builtin_array_prototype_helper_set_length (obj_p, ecma_uint32_to_number (len)), ret_value); /* 10. */ - ret_value = ecma_make_normal_completion_value (ecma_copy_value (first_value, true)); + ret_value = ecma_copy_value (first_value, true); ECMA_FINALIZE (set_length_value); ECMA_FINALIZE (del_value); @@ -820,15 +821,15 @@ ecma_builtin_array_prototype_object_shift (ecma_value_t this_arg) /**< this argu * See also: * ECMA-262 v5, 15.4.4.10 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_slice (ecma_value_t this_arg, /**< 'this' argument */ ecma_value_t arg1, /**< start */ ecma_value_t arg2) /**< end */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -874,14 +875,14 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t this_arg, /**< 'this' ar JERRY_ASSERT (start <= len && end <= len); - ecma_completion_value_t new_array = ecma_op_create_array_object (0, 0, false); - ecma_object_t *new_array_p = ecma_get_object_from_completion_value (new_array); + ecma_value_t new_array = ecma_op_create_array_object (0, 0, false); + ecma_object_t *new_array_p = ecma_get_object_from_value (new_array); /* 9. */ uint32_t n = 0; /* 10. */ - for (uint32_t k = start; k < end && ecma_is_completion_value_empty (ret_value); k++, n++) + for (uint32_t k = start; k < end && ecma_is_value_empty (ret_value); k++, n++) { /* 10.a */ ecma_string_t *curr_idx_str_p = ecma_new_ecma_string_from_uint32 (k); @@ -896,14 +897,14 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t this_arg, /**< 'this' ar /* 10.c.ii */ /* This will always be a simple value since 'is_throw' is false, so no need to free. */ - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, - to_idx_str_p, - get_value, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + ecma_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, + to_idx_str_p, + get_value, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); + JERRY_ASSERT (ecma_is_value_true (put_comp)); ecma_deref_ecma_string (to_idx_str_p); @@ -913,13 +914,13 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t this_arg, /**< 'this' ar ecma_deref_ecma_string (curr_idx_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ret_value = new_array; } else { - ecma_free_completion_value (new_array); + ecma_free_value (new_array); } ECMA_OP_TO_NUMBER_FINALIZE (len_number); @@ -936,10 +937,10 @@ ecma_builtin_array_prototype_object_slice (ecma_value_t this_arg, /**< 'this' ar * See also: * ECMA-262 v5, 15.4.4.11 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_sort_compare_helper (ecma_value_t j, /**< left value */ ecma_value_t k, /**< right value */ ecma_value_t comparefn) /**< compare function */ @@ -950,7 +951,7 @@ ecma_builtin_array_prototype_object_sort_compare_helper (ecma_value_t j, /**< le * compares greater than any other value, undefined property values always * sort to the end of the result, followed by non-existent property values. */ - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_number_t *result_p = ecma_alloc_number (); bool j_is_undef = ecma_is_value_undefined (j); @@ -1033,9 +1034,9 @@ ecma_builtin_array_prototype_object_sort_compare_helper (ecma_value_t j, /**< le } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (result_p)); + ret_value = ecma_make_number_value (result_p); } else { @@ -1049,23 +1050,23 @@ ecma_builtin_array_prototype_object_sort_compare_helper (ecma_value_t j, /**< le * Function used to reconstruct the ordered binary tree. * Shifts 'index' down in the tree until it is in the correct position. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_array_to_heap_helper (ecma_value_t array[], /**< heap data array */ int index, /**< current item index */ int right, /**< right index is a maximum index */ ecma_value_t comparefn) /**< compare function */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* Left child of the current index. */ int child = index * 2 + 1; ecma_value_t swap = array[index]; bool should_break = false; - while (child <= right && ecma_is_completion_value_empty (ret_value) && !should_break) + while (child <= right && ecma_is_value_empty (ret_value) && !should_break) { if (child < right) { @@ -1087,7 +1088,7 @@ ecma_builtin_array_prototype_object_array_to_heap_helper (ecma_value_t array[], ECMA_FINALIZE (child_compare_value); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { JERRY_ASSERT (child <= right); @@ -1119,7 +1120,7 @@ ecma_builtin_array_prototype_object_array_to_heap_helper (ecma_value_t array[], } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* * Loop ended, either current child does not exist, or is less than swap. @@ -1129,7 +1130,7 @@ ecma_builtin_array_prototype_object_array_to_heap_helper (ecma_value_t array[], JERRY_ASSERT (parent >= 0 && parent <= right); array[parent] = swap; - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } return ret_value; @@ -1138,18 +1139,18 @@ ecma_builtin_array_prototype_object_array_to_heap_helper (ecma_value_t array[], /** * Heapsort function * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_array_heap_sort_helper (ecma_value_t array[], /**< array to sort */ int right, /**< right index */ ecma_value_t comparefn) /**< compare function */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* First, construct the ordered binary tree from the array. */ - for (int i = right / 2; i >= 0 && ecma_is_completion_value_empty (ret_value); i--) + for (int i = right / 2; i >= 0 && ecma_is_value_empty (ret_value); i--) { ECMA_TRY_CATCH (value, ecma_builtin_array_prototype_object_array_to_heap_helper (array, @@ -1161,7 +1162,7 @@ ecma_builtin_array_prototype_object_array_heap_sort_helper (ecma_value_t array[] } /* Sorting elements. */ - for (int i = right; i > 0 && ecma_is_completion_value_empty (ret_value); i--) + for (int i = right; i > 0 && ecma_is_value_empty (ret_value); i--) { /* * The top element will always contain the largest value. @@ -1190,20 +1191,20 @@ ecma_builtin_array_prototype_object_array_heap_sort_helper (ecma_value_t array[] * See also: * ECMA-262 v5, 15.4.4.11 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1) /**< comparefn */ { /* Check if the provided compare function is callable. */ if (!ecma_is_value_undefined (arg1) && !ecma_op_is_callable (arg1)) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (obj_this, ecma_op_to_object (this_arg), @@ -1230,7 +1231,7 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum /* Count properties with name that is array index less than len */ while (ecma_collection_iterator_next (&iter) - && ecma_is_completion_value_empty (ret_value)) + && ecma_is_value_empty (ret_value)) { ecma_string_t *property_name_p = ecma_get_string_from_value (*iter.current_value_p); @@ -1250,7 +1251,7 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum /* Copy unsorted array into a native c array. */ while (ecma_collection_iterator_next (&iter) - && ecma_is_completion_value_empty (ret_value)) + && ecma_is_value_empty (ret_value)) { ecma_string_t *property_name_p = ecma_get_string_from_value (*iter.current_value_p); @@ -1271,10 +1272,10 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum } JERRY_ASSERT (copied_num == defined_prop_count - || !ecma_is_completion_value_empty (ret_value)); + || !ecma_is_value_empty (ret_value)); /* Sorting. */ - if (copied_num > 1 && ecma_is_completion_value_empty (ret_value)) + if (copied_num > 1 && ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (sort_value, ecma_builtin_array_prototype_object_array_heap_sort_helper (values_buffer, @@ -1286,7 +1287,7 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum /* Put sorted values to the front of the array. */ for (uint32_t index = 0; - index < copied_num && ecma_is_completion_value_empty (ret_value); + index < copied_num && ecma_is_value_empty (ret_value); index++) { ecma_string_t *index_string_p = ecma_new_ecma_string_from_uint32 (index); @@ -1300,7 +1301,7 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum /* Free values that were copied to the local array. */ for (uint32_t index = 0; index < copied_num; index++) { - ecma_free_value (values_buffer[index], true); + ecma_free_value (values_buffer[index]); } MEM_FINALIZE_LOCAL_ARRAY (values_buffer); @@ -1310,7 +1311,7 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum ecma_collection_iterator_init (&iter, array_index_props_p); while (ecma_collection_iterator_next (&iter) - && ecma_is_completion_value_empty (ret_value)) + && ecma_is_value_empty (ret_value)) { ecma_string_t *property_name_p = ecma_get_string_from_value (*iter.current_value_p); @@ -1327,9 +1328,9 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum ecma_free_values_collection (array_index_props_p, true); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_copy_value (this_arg, true)); + ret_value = ecma_copy_value (this_arg, true); } ECMA_OP_TO_NUMBER_FINALIZE (len_number); @@ -1346,15 +1347,15 @@ ecma_builtin_array_prototype_object_sort (ecma_value_t this_arg, /**< this argum * See also: * ECMA-262 v5, 15.4.4.12 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -1377,8 +1378,8 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg const uint32_t len = ecma_number_to_uint32 (len_number); - ecma_completion_value_t new_array = ecma_op_create_array_object (0, 0, false); - ecma_object_t *new_array_p = ecma_get_object_from_completion_value (new_array); + ecma_value_t new_array = ecma_op_create_array_object (0, 0, false); + ecma_object_t *new_array_p = ecma_get_object_from_value (new_array); uint32_t start = 0; uint32_t delete_count = 0; @@ -1438,7 +1439,7 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg uint32_t k; for (uint32_t del_item_idx, k = 0; - k < delete_count && ecma_is_completion_value_empty (ret_value); + k < delete_count && ecma_is_value_empty (ret_value); k++) { /* 9.a */ @@ -1457,14 +1458,14 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg /* 9.c.ii */ /* This will always be a simple value since 'is_throw' is false, so no need to free. */ - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, - idx_str_new_p, - get_value, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + ecma_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, + idx_str_new_p, + get_value, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); + JERRY_ASSERT (ecma_is_value_true (put_comp)); ecma_deref_ecma_string (idx_str_new_p); ECMA_FINALIZE (get_value); @@ -1495,7 +1496,7 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg if (item_count < delete_count) { /* 12.b */ - for (k = start; k < (len - delete_count) && ecma_is_completion_value_empty (ret_value); k++) + for (k = start; k < (len - delete_count) && ecma_is_value_empty (ret_value); k++) { from = k + delete_count; ecma_string_t *from_str_p = ecma_new_ecma_string_from_uint32 (from); @@ -1533,7 +1534,7 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg } /* 12.d */ - for (k = len; k > new_len && ecma_is_completion_value_empty (ret_value); k--) + for (k = len; k > new_len && ecma_is_value_empty (ret_value); k--) { ecma_string_t *str_idx_p = ecma_new_ecma_string_from_uint32 (k - 1); ECMA_TRY_CATCH (del_value, @@ -1548,7 +1549,7 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg else if (item_count > delete_count) { /* 13.b */ - for (k = len - delete_count; k > start && ecma_is_completion_value_empty (ret_value); k--) + for (k = len - delete_count; k > start && ecma_is_value_empty (ret_value); k--) { from = k + delete_count - 1; ecma_string_t *from_str_p = ecma_new_ecma_string_from_uint32 (from); @@ -1590,7 +1591,7 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg /* 15. */ ecma_length_t idx = 0; for (ecma_length_t arg_index = 2; - arg_index < args_number && ecma_is_completion_value_empty (ret_value); + arg_index < args_number && ecma_is_value_empty (ret_value); arg_index++, idx++) { ecma_string_t *str_idx_p = ecma_new_ecma_string_from_uint32 ((uint32_t) (start + idx)); @@ -1603,7 +1604,7 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg } /* 16. */ - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (set_length_value, ecma_builtin_array_prototype_helper_set_length (obj_p, ecma_uint32_to_number (new_len)), @@ -1612,13 +1613,13 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg ECMA_FINALIZE (set_length_value); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ret_value = new_array; } else { - ecma_free_completion_value (new_array); + ecma_free_value (new_array); } ECMA_OP_TO_NUMBER_FINALIZE (len_number); @@ -1635,15 +1636,15 @@ ecma_builtin_array_prototype_object_splice (ecma_value_t this_arg, /**< this arg * See also: * ECMA-262 v5, 15.4.4.13 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_unshift (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -1664,7 +1665,7 @@ ecma_builtin_array_prototype_object_unshift (ecma_value_t this_arg, /**< this ar uint32_t len = ecma_number_to_uint32 (len_number); /* 5. and 6. */ - for (uint32_t k = len; k > 0 && ecma_is_completion_value_empty (ret_value); k--) + for (uint32_t k = len; k > 0 && ecma_is_value_empty (ret_value); k--) { /* 6.a */ ecma_string_t *from_str_p = ecma_new_ecma_string_from_uint32 (k - 1); @@ -1695,7 +1696,7 @@ ecma_builtin_array_prototype_object_unshift (ecma_value_t this_arg, /**< this ar } for (uint32_t arg_index = 0; - arg_index < args_number && ecma_is_completion_value_empty (ret_value); + arg_index < args_number && ecma_is_value_empty (ret_value); arg_index++) { ecma_string_t *to_str_p = ecma_new_ecma_string_from_uint32 (arg_index); @@ -1705,7 +1706,7 @@ ecma_builtin_array_prototype_object_unshift (ecma_value_t this_arg, /**< this ar ecma_deref_ecma_string (to_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_number_t new_len = ecma_uint32_to_number (len) + ecma_uint32_to_number (args_number); /* 10. */ @@ -1714,7 +1715,7 @@ ecma_builtin_array_prototype_object_unshift (ecma_value_t this_arg, /**< this ar ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = new_len; - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_FINALIZE (set_length_value); } @@ -1733,15 +1734,15 @@ ecma_builtin_array_prototype_object_unshift (ecma_value_t this_arg, /**< this ar * See also: * ECMA-262 v5, 15.4.4.14 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_index_of (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< searchElement */ ecma_value_t arg2) /**< fromIndex */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -1766,7 +1767,7 @@ ecma_builtin_array_prototype_object_index_of (ecma_value_t this_arg, /**< this a { ecma_number_t *num_p = ecma_alloc_number (); *num_p = ecma_int32_to_number (-1); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); } else { @@ -1782,7 +1783,7 @@ ecma_builtin_array_prototype_object_index_of (ecma_value_t this_arg, /**< this a { JERRY_ASSERT (from_idx < len); - for (; from_idx < len && found_index < 0 && ecma_is_completion_value_empty (ret_value); from_idx++) + for (; from_idx < len && found_index < 0 && ecma_is_value_empty (ret_value); from_idx++) { ecma_string_t *idx_str_p = ecma_new_ecma_string_from_uint32 (from_idx); @@ -1805,11 +1806,11 @@ ecma_builtin_array_prototype_object_index_of (ecma_value_t this_arg, /**< this a } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_number_t *num_p = ecma_alloc_number (); *num_p = found_index; - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); } ECMA_OP_TO_NUMBER_FINALIZE (arg_from_idx); @@ -1832,15 +1833,15 @@ ecma_builtin_array_prototype_object_index_of (ecma_value_t this_arg, /**< this a * See also: * ECMA-262 v5, 15.4.4.15 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_value_t search_element = (args_number > 0) ? args[0] : ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); /* 1. */ @@ -1867,7 +1868,7 @@ ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< t /* 4. */ if (len == 0) { - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); } else { @@ -1936,7 +1937,7 @@ ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< t * for an underflow instead. This is safe, because from_idx will always start in [0, len - 1], * and len is in [0, UINT_MAX], so from_idx >= len means we've had an underflow, and should stop. */ - for (; from_idx < len && *num_p < 0 && ecma_is_completion_value_empty (ret_value); from_idx--) + for (; from_idx < len && *num_p < 0 && ecma_is_value_empty (ret_value); from_idx--) { /* 8.a */ ecma_string_t *idx_str_p = ecma_new_ecma_string_from_uint32 (from_idx); @@ -1959,9 +1960,9 @@ ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< t ecma_deref_ecma_string (idx_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); } else { @@ -1983,15 +1984,15 @@ ecma_builtin_array_prototype_object_last_index_of (ecma_value_t this_arg, /**< t * See also: * ECMA-262 v5, 15.4.4.16 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< callbackfn */ ecma_value_t arg2) /**< thisArg */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -2014,7 +2015,7 @@ ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argu /* 4. */ if (!ecma_op_is_callable (arg1)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -2023,13 +2024,13 @@ ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argu ecma_object_t *func_object_p; /* We already checked that arg1 is callable, so it will always coerce to an object. */ - ecma_completion_value_t to_object_comp = ecma_op_to_object (arg1); - JERRY_ASSERT (ecma_is_completion_value_normal (to_object_comp)); + ecma_value_t to_object_comp = ecma_op_to_object (arg1); + JERRY_ASSERT (!ecma_is_value_error (to_object_comp)); - func_object_p = ecma_get_object_from_completion_value (to_object_comp); + func_object_p = ecma_get_object_from_value (to_object_comp); /* 7. */ - for (uint32_t index = 0; index < len && ecma_is_completion_value_empty (ret_value); index++) + for (uint32_t index = 0; index < len && ecma_is_value_empty (ret_value); index++) { /* 7.a */ ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (index); @@ -2048,9 +2049,9 @@ ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argu ECMA_TRY_CATCH (call_value, ecma_op_function_call (func_object_p, arg2, call_args, 3), ret_value); /* 7.c.iii, ecma_op_to_boolean always returns a simple value, so no need to free. */ - if (ecma_is_completion_value_normal_false (ecma_op_to_boolean (call_value))) + if (ecma_is_value_false (ecma_op_to_boolean (call_value))) { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } ECMA_FINALIZE (call_value); @@ -2060,13 +2061,13 @@ ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argu ecma_deref_ecma_string (index_str_p); } - ecma_free_completion_value (to_object_comp); + ecma_free_value (to_object_comp); ecma_dealloc_number (num_p); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 8. */ - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } } @@ -2084,15 +2085,15 @@ ecma_builtin_array_prototype_object_every (ecma_value_t this_arg, /**< this argu * See also: * ECMA-262 v5, 15.4.4.17 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< callbackfn */ ecma_value_t arg2) /**< thisArg */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -2115,7 +2116,7 @@ ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argum /* 4. */ if (!ecma_op_is_callable (arg1)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -2124,13 +2125,13 @@ ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argum ecma_object_t *func_object_p; /* We already checked that arg1 is callable, so it will always coerce to an object. */ - ecma_completion_value_t to_object_comp = ecma_op_to_object (arg1); - JERRY_ASSERT (ecma_is_completion_value_normal (to_object_comp)); + ecma_value_t to_object_comp = ecma_op_to_object (arg1); + JERRY_ASSERT (!ecma_is_value_error (to_object_comp)); - func_object_p = ecma_get_object_from_completion_value (to_object_comp); + func_object_p = ecma_get_object_from_value (to_object_comp); /* 7. */ - for (uint32_t index = 0; index < len && ecma_is_completion_value_empty (ret_value); index++) + for (uint32_t index = 0; index < len && ecma_is_value_empty (ret_value); index++) { /* 7.a */ ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (index); @@ -2149,9 +2150,9 @@ ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argum ECMA_TRY_CATCH (call_value, ecma_op_function_call (func_object_p, arg2, call_args, 3), ret_value); /* 7.c.iii, ecma_op_to_boolean always returns a simple value, so no need to free. */ - if (ecma_is_completion_value_normal_true (ecma_op_to_boolean (call_value))) + if (ecma_is_value_true (ecma_op_to_boolean (call_value))) { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } ECMA_FINALIZE (call_value); @@ -2161,13 +2162,13 @@ ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argum ecma_deref_ecma_string (index_str_p); } - ecma_free_completion_value (to_object_comp); + ecma_free_value (to_object_comp); ecma_dealloc_number (num_p); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 8. */ - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } } @@ -2185,15 +2186,15 @@ ecma_builtin_array_prototype_object_some (ecma_value_t this_arg, /**< this argum * See also: * ECMA-262 v5, 15.4.4.18 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_for_each (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< callbackfn */ ecma_value_t arg2) /**< thisArg */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, ecma_op_to_object (this_arg), @@ -2215,7 +2216,7 @@ ecma_builtin_array_prototype_object_for_each (ecma_value_t this_arg, /**< this a /* 4. */ if (!ecma_op_is_callable (arg1)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -2224,13 +2225,13 @@ ecma_builtin_array_prototype_object_for_each (ecma_value_t this_arg, /**< this a ecma_object_t *func_object_p; /* We already checked that arg1 is callable, so it will always coerce to an object. */ - ecma_completion_value_t to_object_comp = ecma_op_to_object (arg1); - JERRY_ASSERT (ecma_is_completion_value_normal (to_object_comp)); + ecma_value_t to_object_comp = ecma_op_to_object (arg1); + JERRY_ASSERT (!ecma_is_value_error (to_object_comp)); - func_object_p = ecma_get_object_from_completion_value (to_object_comp); + func_object_p = ecma_get_object_from_value (to_object_comp); /* Iterate over array and call callbackfn on every element */ - for (uint32_t index = 0; index < len && ecma_is_completion_value_empty (ret_value); index++) + for (uint32_t index = 0; index < len && ecma_is_value_empty (ret_value); index++) { /* 7.a */ ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (index); @@ -2255,13 +2256,13 @@ ecma_builtin_array_prototype_object_for_each (ecma_value_t this_arg, /**< this a ecma_deref_ecma_string (index_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 8. */ - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } - ecma_free_completion_value (to_object_comp); + ecma_free_value (to_object_comp); ecma_dealloc_number (num_p); } @@ -2279,15 +2280,15 @@ ecma_builtin_array_prototype_object_for_each (ecma_value_t this_arg, /**< this a * See also: * ECMA-262 v5, 15.4.4.19 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< callbackfn */ ecma_value_t arg2) /**< thisArg */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -2310,7 +2311,7 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume /* 4. */ if (!ecma_op_is_callable (arg1)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -2322,14 +2323,14 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume /* 5. arg2 is simply used as T */ /* 6. */ - ecma_completion_value_t new_array = ecma_op_create_array_object (NULL, 0, false); - JERRY_ASSERT (ecma_is_completion_value_normal (new_array)); - ecma_object_t *new_array_p = ecma_get_object_from_completion_value (new_array); + ecma_value_t new_array = ecma_op_create_array_object (NULL, 0, false); + JERRY_ASSERT (!ecma_is_value_error (new_array)); + ecma_object_t *new_array_p = ecma_get_object_from_value (new_array); /* 7-8. */ ecma_value_t current_index; - for (uint32_t index = 0; index < len && ecma_is_completion_value_empty (ret_value); index++) + for (uint32_t index = 0; index < len && ecma_is_value_empty (ret_value); index++) { /* 8.a */ ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (index); @@ -2347,14 +2348,14 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume /* 8.c.iii */ /* This will always be a simple value since 'is_throw' is false, so no need to free. */ - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, - index_str_p, - mapped_value, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + ecma_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, + index_str_p, + mapped_value, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); + JERRY_ASSERT (ecma_is_value_true (put_comp)); ECMA_FINALIZE (mapped_value); ECMA_FINALIZE (current_value); @@ -2363,7 +2364,7 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume ecma_deref_ecma_string (index_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (set_length_value, ecma_builtin_array_prototype_helper_set_length (new_array_p, ecma_uint32_to_number (len)), @@ -2373,7 +2374,7 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume } else { - ecma_free_completion_value (new_array); + ecma_free_value (new_array); } ecma_dealloc_number (num_p); @@ -2393,15 +2394,15 @@ ecma_builtin_array_prototype_object_map (ecma_value_t this_arg, /**< this argume * See also: * ECMA-262 v5, 15.4.4.20 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< callbackfn */ ecma_value_t arg2) /**< thisArg */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_this, @@ -2424,7 +2425,7 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg /* 4. */ if (!ecma_op_is_callable (arg1)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -2433,9 +2434,9 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg ecma_object_t *func_object_p; /* 6. */ - ecma_completion_value_t new_array = ecma_op_create_array_object (NULL, 0, false); - JERRY_ASSERT (ecma_is_completion_value_normal (new_array)); - ecma_object_t *new_array_p = ecma_get_object_from_completion_value (new_array); + ecma_value_t new_array = ecma_op_create_array_object (NULL, 0, false); + JERRY_ASSERT (!ecma_is_value_error (new_array)); + ecma_object_t *new_array_p = ecma_get_object_from_value (new_array); /* We already checked that arg1 is callable, so it will always be an object. */ JERRY_ASSERT (ecma_is_value_object (arg1)); @@ -2445,7 +2446,7 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg uint32_t new_array_index = 0; /* 9. */ - for (uint32_t index = 0; index < len && ecma_is_completion_value_empty (ret_value); index++) + for (uint32_t index = 0; index < len && ecma_is_value_empty (ret_value); index++) { /* 9.a */ ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (index); @@ -2464,19 +2465,19 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg ECMA_TRY_CATCH (call_value, ecma_op_function_call (func_object_p, arg2, call_args, 3), ret_value); /* 9.c.iii, ecma_op_to_boolean always returns a simple value, so no need to free. */ - if (ecma_is_completion_value_normal_true (ecma_op_to_boolean (call_value))) + if (ecma_is_value_true (ecma_op_to_boolean (call_value))) { ecma_string_t *to_index_string_p = ecma_new_ecma_string_from_uint32 (new_array_index); /* This will always be a simple value since 'is_throw' is false, so no need to free. */ - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, - to_index_string_p, - get_value, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + ecma_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, + to_index_string_p, + get_value, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); + JERRY_ASSERT (ecma_is_value_true (put_comp)); ecma_deref_ecma_string (to_index_string_p); new_array_index++; @@ -2491,14 +2492,14 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg ecma_dealloc_number (num_p); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 10. */ ret_value = new_array; } else { - ecma_free_completion_value (new_array); + ecma_free_value (new_array); } } @@ -2516,15 +2517,15 @@ ecma_builtin_array_prototype_object_filter (ecma_value_t this_arg, /**< this arg * See also: * ECMA-262 v5, 15.4.4.21 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_value_t callbackfn = (args_number > 0) ? args[0] : ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); ecma_value_t initial_value = (args_number > 1) ? args[1] : ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); @@ -2549,7 +2550,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg /* 4. */ if (!ecma_op_is_callable (callbackfn)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -2563,7 +2564,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg /* 5. */ if (len_number == ECMA_NUMBER_ZERO && ecma_is_value_undefined (initial_value)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -2580,7 +2581,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg /* 8.a */ bool k_present = false; /* 8.b */ - while (!k_present && index < len && ecma_is_completion_value_empty (ret_value)) + while (!k_present && index < len && ecma_is_value_empty (ret_value)) { /* 8.b.i */ ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (index); @@ -2600,13 +2601,13 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg /* 8.c */ if (!k_present) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } } /* 9. */ ecma_value_t current_index; - for (; index < len && ecma_is_completion_value_empty (ret_value); index++) + for (; index < len && ecma_is_value_empty (ret_value); index++) { /* 9.a */ ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (index); @@ -2627,7 +2628,7 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg 4), ret_value); - ecma_free_value (accumulator, true); + ecma_free_value (accumulator); accumulator = ecma_copy_value (call_value, true); ECMA_FINALIZE (call_value); @@ -2637,13 +2638,13 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg /* 9.d in for loop */ } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_copy_value (accumulator, true)); + ret_value = ecma_copy_value (accumulator, true); } } - ecma_free_value (accumulator, true); + ecma_free_value (accumulator); ecma_dealloc_number (num_p); } @@ -2661,15 +2662,15 @@ ecma_builtin_array_prototype_object_reduce (ecma_value_t this_arg, /**< this arg * See also: * ECMA-262 v5, 15.4.4.22 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_value_t callbackfn = (args_number > 0) ? args[0] : ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); ecma_value_t initial_value = (args_number > 1) ? args[1] : ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); @@ -2694,7 +2695,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th /* 4. */ if (!ecma_op_is_callable (callbackfn)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -2706,7 +2707,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th /* 5. */ if (len_number == ECMA_NUMBER_ZERO && ecma_is_value_undefined (initial_value)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -2726,7 +2727,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th /* 8.a */ bool k_present = false; /* 8.b */ - while (!k_present && index >= 0 && ecma_is_completion_value_empty (ret_value)) + while (!k_present && index >= 0 && ecma_is_value_empty (ret_value)) { /* 8.b.i */ ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 ((uint32_t) index); @@ -2746,13 +2747,13 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th /* 8.c */ if (!k_present) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } } /* 9. */ ecma_value_t current_index; - for (; index >= 0 && ecma_is_completion_value_empty (ret_value); index--) + for (; index >= 0 && ecma_is_value_empty (ret_value); index--) { /* 9.a */ ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 ((uint32_t) index); @@ -2773,7 +2774,7 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th 4), ret_value); - ecma_free_value (accumulator, true); + ecma_free_value (accumulator); accumulator = ecma_copy_value (call_value, true); ECMA_FINALIZE (call_value); @@ -2783,12 +2784,12 @@ ecma_builtin_array_prototype_object_reduce_right (ecma_value_t this_arg, /**< th /* 9.d in for loop */ } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_copy_value (accumulator, true)); + ret_value = ecma_copy_value (accumulator, true); } - ecma_free_value (accumulator, true); + ecma_free_value (accumulator); ecma_dealloc_number (num_p); } } diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-array.c b/jerry-core/ecma/builtin-objects/ecma-builtin-array.c index 130c96c4..e15707c3 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-array.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-array.c @@ -50,10 +50,10 @@ * See also: * ECMA-262 v5, 15.4.3.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_array_object_is_array (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< first argument */ { @@ -69,15 +69,15 @@ ecma_builtin_array_object_is_array (ecma_value_t this_arg __attr_unused___, /**< } } - return ecma_make_simple_completion_value (is_array); + return ecma_make_simple_value (is_array); } /* ecma_builtin_array_object_is_array */ /** * Handle calling [[Call]] of built-in Array object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_array_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -89,9 +89,9 @@ ecma_builtin_array_dispatch_call (const ecma_value_t *arguments_list_p, /**< arg /** * Handle calling [[Construct]] of built-in Array object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_array_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean-prototype.c index 3d83b30b..c021d858 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean-prototype.c @@ -50,13 +50,13 @@ * See also: * ECMA-262 v5, 15.6.4.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_boolean_prototype_object_to_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (value_of_ret, ecma_builtin_boolean_prototype_object_value_of (this_arg), @@ -75,7 +75,7 @@ ecma_builtin_boolean_prototype_object_to_string (ecma_value_t this_arg) /**< thi ret_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_FALSE); } - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (ret_str_p)); + ret_value = ecma_make_string_value (ret_str_p); ECMA_FINALIZE (value_of_ret); @@ -88,15 +88,15 @@ ecma_builtin_boolean_prototype_object_to_string (ecma_value_t this_arg) /**< thi * See also: * ECMA-262 v5, 15.6.4.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_boolean_prototype_object_value_of (ecma_value_t this_arg) /**< this argument */ { if (ecma_is_value_boolean (this_arg)) { - return ecma_make_normal_completion_value (this_arg); + return this_arg; } else if (ecma_is_value_object (this_arg)) { @@ -115,11 +115,11 @@ ecma_builtin_boolean_prototype_object_value_of (ecma_value_t this_arg) /**< this JERRY_ASSERT (ecma_is_value_boolean (ret_boolean_value)); - return ecma_make_normal_completion_value (ret_boolean_value); + return ret_boolean_value; } } - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } /* ecma_builtin_boolean_prototype_object_value_of */ /** diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.c b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.c index d59c8fa2..e6ed2668 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.c @@ -47,9 +47,9 @@ /** * Handle calling [[Call]] of built-in Boolean object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_boolean_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -72,9 +72,9 @@ ecma_builtin_boolean_dispatch_call (const ecma_value_t *arguments_list_p, /**< a /** * Handle calling [[Construct]] of built-in Boolean object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_boolean_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-compact-profile-error.c b/jerry-core/ecma/builtin-objects/ecma-builtin-compact-profile-error.c index 74de1a0f..945baeff 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-compact-profile-error.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-compact-profile-error.c @@ -46,29 +46,29 @@ /** * Handle calling [[Call]] of built-in CompactProfileError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_compact_profile_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); - return ecma_make_throw_obj_completion_value (ecma_builtin_get (ECMA_BUILTIN_ID_COMPACT_PROFILE_ERROR)); + return ecma_make_error_value (ecma_make_object_value (ecma_builtin_get (ECMA_BUILTIN_ID_COMPACT_PROFILE_ERROR))); } /* ecma_builtin_compact_profile_error_dispatch_call */ /** * Handle calling [[Construct]] of built-in CompactProfileError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_compact_profile_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); - return ecma_make_throw_obj_completion_value (ecma_builtin_get (ECMA_BUILTIN_ID_COMPACT_PROFILE_ERROR)); + return ecma_make_error_value (ecma_make_object_value (ecma_builtin_get (ECMA_BUILTIN_ID_COMPACT_PROFILE_ERROR))); } /* ecma_builtin_compact_profile_error_dispatch_construct */ /** diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-date-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-date-prototype.c index fc14731e..1c98d0ae 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-date-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-date-prototype.c @@ -1,5 +1,5 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,13 +49,13 @@ * See also: * ECMA-262 v5, 15.9.5.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_to_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (prim_value, ecma_date_get_primitive_value (this_arg), @@ -66,7 +66,7 @@ ecma_builtin_date_prototype_to_string (ecma_value_t this_arg) /**< this argument if (ecma_number_is_nan (*prim_num_p)) { ecma_string_t *magic_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INVALID_DATE_UL); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (magic_str_p)); + ret_value = ecma_make_string_value (magic_str_p); } else { @@ -84,13 +84,13 @@ ecma_builtin_date_prototype_to_string (ecma_value_t this_arg) /**< this argument * See also: * ECMA-262 v5, 15.9.5.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_to_date_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (this_arg) || ecma_object_get_class_name (ecma_get_object_from_value (this_arg)) != LIT_MAGIC_STRING_DATE_UL) @@ -112,7 +112,7 @@ ecma_builtin_date_prototype_to_date_string (ecma_value_t this_arg) /**< this arg if (ecma_number_is_nan (*prim_value_num_p)) { ecma_string_t *magic_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INVALID_DATE_UL); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (magic_str_p)); + ret_value = ecma_make_string_value (magic_str_p); } else { @@ -131,13 +131,13 @@ ecma_builtin_date_prototype_to_date_string (ecma_value_t this_arg) /**< this arg * See also: * ECMA-262 v5, 15.9.5.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_to_time_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (this_arg) || ecma_object_get_class_name (ecma_get_object_from_value (this_arg)) != LIT_MAGIC_STRING_DATE_UL) @@ -159,7 +159,7 @@ ecma_builtin_date_prototype_to_time_string (ecma_value_t this_arg) /**< this arg if (ecma_number_is_nan (*prim_value_num_p)) { ecma_string_t *magic_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INVALID_DATE_UL); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (magic_str_p)); + ret_value = ecma_make_string_value (magic_str_p); } else { @@ -178,10 +178,10 @@ ecma_builtin_date_prototype_to_time_string (ecma_value_t this_arg) /**< this arg * See also: * ECMA-262 v5, 15.9.5.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_to_locale_string (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_date_prototype_to_string (this_arg); @@ -193,10 +193,10 @@ ecma_builtin_date_prototype_to_locale_string (ecma_value_t this_arg) /**< this a * See also: * ECMA-262 v5, 15.9.5.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_to_locale_date_string (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_date_prototype_to_date_string (this_arg); @@ -208,10 +208,10 @@ ecma_builtin_date_prototype_to_locale_date_string (ecma_value_t this_arg) /**< t * See also: * ECMA-262 v5, 15.9.5.7 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_to_locale_time_string (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_date_prototype_to_time_string (this_arg); @@ -223,10 +223,10 @@ ecma_builtin_date_prototype_to_locale_time_string (ecma_value_t this_arg) /**< t * See also: * ECMA-262 v5, 15.9.5.8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_value_of (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_date_prototype_get_time (this_arg); @@ -238,10 +238,10 @@ ecma_builtin_date_prototype_value_of (ecma_value_t this_arg) /**< this argument * See also: * ECMA-262 v5, 15.9.5.9 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_get_time (ecma_value_t this_arg) /**< this argument */ { if (ecma_is_value_object (this_arg)) @@ -258,11 +258,11 @@ ecma_builtin_date_prototype_get_time (ecma_value_t this_arg) /**< this argument ecma_number_t *ret_num_p = ecma_alloc_number (); *ret_num_p = *prim_value_num_p; - return ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + return ecma_make_number_value (ret_num_p); } } - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } /* ecma_builtin_date_prototype_get_time */ /** @@ -280,14 +280,14 @@ ecma_builtin_date_prototype_get_time (ecma_value_t this_arg) /**< this argument /** * Implementation of Data.prototype built-in's getter routines * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ #define DEFINE_GETTER(_ecma_paragraph, _routine_name, _getter_name, _timezone) \ -static ecma_completion_value_t \ +static ecma_value_t \ ecma_builtin_date_prototype_get_ ## _routine_name (ecma_value_t this_arg) /**< this argument */ \ { \ - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); \ + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); \ \ /* 1. */ \ ECMA_TRY_CATCH (value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); \ @@ -296,14 +296,14 @@ ecma_builtin_date_prototype_get_ ## _routine_name (ecma_value_t this_arg) /**< t if (ecma_number_is_nan (*this_num_p)) \ { \ ecma_string_t *nan_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_NAN); \ - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (nan_str_p)); \ + ret_value = ecma_make_string_value (nan_str_p); \ } \ else \ { \ /* 3. */ \ ecma_number_t *ret_num_p = ecma_alloc_number (); \ *ret_num_p = _getter_name (DEFINE_GETTER_ARGUMENT_ ## _timezone (*this_num_p)); \ - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); \ + ret_value = ecma_make_number_value (ret_num_p); \ } \ ECMA_FINALIZE (value); \ \ @@ -338,14 +338,14 @@ DEFINE_GETTER (ECMA-262 v5 15.9.5.26, timezone_offset, ecma_date_timezone_offset * See also: * ECMA-262 v5, 15.9.5.27 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_time (ecma_value_t this_arg, /**< this argument */ ecma_value_t time) /**< time */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (this_arg) || ecma_object_get_class_name (ecma_get_object_from_value (this_arg)) != LIT_MAGIC_STRING_DATE_UL) @@ -370,7 +370,7 @@ ecma_builtin_date_prototype_set_time (ecma_value_t this_arg, /**< this argument *prim_value_num_p = *value_p; /* 3. */ - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (value_p)); + ret_value = ecma_make_number_value (value_p); ECMA_OP_TO_NUMBER_FINALIZE (t); } @@ -383,14 +383,14 @@ ecma_builtin_date_prototype_set_time (ecma_value_t this_arg, /**< this argument * See also: * ECMA-262 v5, 15.9.5.28 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_milliseconds (ecma_value_t this_arg, /**< this argument */ ecma_value_t ms) /**< millisecond */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -420,14 +420,14 @@ ecma_builtin_date_prototype_set_milliseconds (ecma_value_t this_arg, /**< this a * See also: * ECMA-262 v5, 15.9.5.29 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_utc_milliseconds (ecma_value_t this_arg, /**< this argument */ ecma_value_t ms) /**< millisecond */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -457,15 +457,15 @@ ecma_builtin_date_prototype_set_utc_milliseconds (ecma_value_t this_arg, /**< th * See also: * ECMA-262 v5, 15.9.5.30 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_seconds (ecma_value_t this_arg, /**< this argument */ ecma_value_t sec, /**< second */ ecma_value_t ms) /**< millisecond */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -502,15 +502,15 @@ ecma_builtin_date_prototype_set_seconds (ecma_value_t this_arg, /**< this argume * See also: * ECMA-262 v5, 15.9.5.31 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_utc_seconds (ecma_value_t this_arg, /**< this argument */ ecma_value_t sec, /**< second */ ecma_value_t ms) /**< millisecond */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -547,15 +547,15 @@ ecma_builtin_date_prototype_set_utc_seconds (ecma_value_t this_arg, /**< this ar * See also: * ECMA-262 v5, 15.9.5.32 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_minutes (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -588,7 +588,7 @@ ecma_builtin_date_prototype_set_minutes (ecma_value_t this_arg, /**< this argume ECMA_OP_TO_NUMBER_FINALIZE (min); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 5-8. */ ecma_number_t hour = ecma_date_hour_from_time (t); @@ -608,15 +608,15 @@ ecma_builtin_date_prototype_set_minutes (ecma_value_t this_arg, /**< this argume * See also: * ECMA-262 v5, 15.9.5.33 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_utc_minutes (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -649,7 +649,7 @@ ecma_builtin_date_prototype_set_utc_minutes (ecma_value_t this_arg, /**< this ar ECMA_OP_TO_NUMBER_FINALIZE (min); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 5-8. */ ecma_number_t hour = ecma_date_hour_from_time (t); @@ -669,15 +669,15 @@ ecma_builtin_date_prototype_set_utc_minutes (ecma_value_t this_arg, /**< this ar * See also: * ECMA-262 v5, 15.9.5.34 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_hours (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -719,7 +719,7 @@ ecma_builtin_date_prototype_set_hours (ecma_value_t this_arg, /**< this argument ECMA_OP_TO_NUMBER_FINALIZE (hour); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 6-9. */ ret_value = ecma_date_set_internal_property (this_arg, @@ -738,15 +738,15 @@ ecma_builtin_date_prototype_set_hours (ecma_value_t this_arg, /**< this argument * See also: * ECMA-262 v5, 15.9.5.35 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_utc_hours (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -788,7 +788,7 @@ ecma_builtin_date_prototype_set_utc_hours (ecma_value_t this_arg, /**< this argu ECMA_OP_TO_NUMBER_FINALIZE (hour); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 6-9. */ ret_value = ecma_date_set_internal_property (this_arg, @@ -807,14 +807,14 @@ ecma_builtin_date_prototype_set_utc_hours (ecma_value_t this_arg, /**< this argu * See also: * ECMA-262 v5, 15.9.5.36 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_date (ecma_value_t this_arg, /**< this argument */ ecma_value_t date) /**< date */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -843,14 +843,14 @@ ecma_builtin_date_prototype_set_date (ecma_value_t this_arg, /**< this argument * See also: * ECMA-262 v5, 15.9.5.37 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_utc_date (ecma_value_t this_arg, /**< this argument */ ecma_value_t date) /**< date */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -879,15 +879,15 @@ ecma_builtin_date_prototype_set_utc_date (ecma_value_t this_arg, /**< this argum * See also: * ECMA-262 v5, 15.9.5.38 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_month (ecma_value_t this_arg, /**< this argument */ ecma_value_t month, /**< month */ ecma_value_t date) /**< date */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -923,15 +923,15 @@ ecma_builtin_date_prototype_set_month (ecma_value_t this_arg, /**< this argument * See also: * ECMA-262 v5, 15.9.5.39 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_utc_month (ecma_value_t this_arg, /**< this argument */ ecma_value_t month, /**< month */ ecma_value_t date) /**< date */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -967,15 +967,15 @@ ecma_builtin_date_prototype_set_utc_month (ecma_value_t this_arg, /**< this argu * See also: * ECMA-262 v5, 15.9.5.40 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_full_year (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -1012,7 +1012,7 @@ ecma_builtin_date_prototype_set_full_year (ecma_value_t this_arg, /**< this argu ECMA_OP_TO_NUMBER_FINALIZE (year); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 5-8. */ ret_value = ecma_date_set_internal_property (this_arg, @@ -1031,15 +1031,15 @@ ecma_builtin_date_prototype_set_full_year (ecma_value_t this_arg, /**< this argu * See also: * ECMA-262 v5, 15.9.5.41 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_utc_full_year (ecma_value_t this_arg, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -1076,7 +1076,7 @@ ecma_builtin_date_prototype_set_utc_full_year (ecma_value_t this_arg, /**< this ECMA_OP_TO_NUMBER_FINALIZE (year); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 5-8. */ ret_value = ecma_date_set_internal_property (this_arg, @@ -1095,13 +1095,13 @@ ecma_builtin_date_prototype_set_utc_full_year (ecma_value_t this_arg, /**< this * See also: * ECMA-262 v5, 15.9.5.42 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_to_utc_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (prim_value, ecma_date_get_primitive_value (this_arg), @@ -1112,7 +1112,7 @@ ecma_builtin_date_prototype_to_utc_string (ecma_value_t this_arg) /**< this argu if (ecma_number_is_nan (*prim_num_p)) { ecma_string_t *magic_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INVALID_DATE_UL); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (magic_str_p)); + ret_value = ecma_make_string_value (magic_str_p); } else { @@ -1130,13 +1130,13 @@ ecma_builtin_date_prototype_to_utc_string (ecma_value_t this_arg) /**< this argu * See also: * ECMA-262 v5, 15.9.5.43 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_to_iso_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (prim_value, ecma_date_get_primitive_value (this_arg), @@ -1146,7 +1146,7 @@ ecma_builtin_date_prototype_to_iso_string (ecma_value_t this_arg) /**< this argu if (ecma_number_is_nan (*prim_num_p) || ecma_number_is_infinity (*prim_num_p)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_RANGE)); + ret_value = ecma_raise_range_error (""); } else { @@ -1164,14 +1164,14 @@ ecma_builtin_date_prototype_to_iso_string (ecma_value_t this_arg) /**< this argu * See also: * ECMA-262 v5, 15.9.5.44 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_to_json (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg __attr_unused___) /**< key */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj, @@ -1194,7 +1194,7 @@ ecma_builtin_date_prototype_to_json (ecma_value_t this_arg, /**< this argument * } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_string_t *to_iso_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_TO_ISO_STRING_UL); ecma_object_t *value_obj_p = ecma_get_object_from_value (obj); @@ -1207,7 +1207,7 @@ ecma_builtin_date_prototype_to_json (ecma_value_t this_arg, /**< this argument * /* 5. */ if (!ecma_op_is_callable (to_iso)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } /* 6. */ else @@ -1235,13 +1235,13 @@ ecma_builtin_date_prototype_to_json (ecma_value_t this_arg, /**< this argument * * See also: * ECMA-262 v5, AnnexB.B.2.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_get_year (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -1250,14 +1250,14 @@ ecma_builtin_date_prototype_get_year (ecma_value_t this_arg) /**< this argument if (ecma_number_is_nan (*this_num_p)) { ecma_string_t *nan_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_NAN); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (nan_str_p)); + ret_value = ecma_make_string_value (nan_str_p); } else { /* 3. */ ecma_number_t *ret_num_p = ecma_alloc_number (); *ret_num_p = ecma_date_year_from_time (ecma_date_local_time (*this_num_p)) - 1900; - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); } ECMA_FINALIZE (value); @@ -1270,14 +1270,14 @@ ecma_builtin_date_prototype_get_year (ecma_value_t this_arg) /**< this argument * See also: * ECMA-262 v5, AnnexB.B.2.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_prototype_set_year (ecma_value_t this_arg, /**< this argument */ ecma_value_t year) /**< year argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_time_value, ecma_builtin_date_prototype_get_time (this_arg), ret_value); @@ -1309,7 +1309,7 @@ ecma_builtin_date_prototype_set_year (ecma_value_t this_arg, /**< this argument ECMA_OP_TO_NUMBER_FINALIZE (year_value); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 5-8. */ ecma_number_t m = ecma_date_month_from_time (t); diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-date.c b/jerry-core/ecma/builtin-objects/ecma-builtin-date.c index 0acc7cc7..07f1c3c9 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-date.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-date.c @@ -1,5 +1,5 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -75,11 +75,11 @@ ecma_date_parse_date_chars (lit_utf8_byte_t **str_p, /**< pointer to the cesu8 s * * @return result of MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli)) */ -static ecma_completion_value_t +static ecma_value_t ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to the Date constructor */ ecma_length_t args_len) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_number_t *prim_value_p = ecma_alloc_number (); *prim_value_p = ecma_number_make_nan (); @@ -95,7 +95,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t ecma_number_t milliseconds = ECMA_NUMBER_ZERO; /* 3. */ - if (args_len >= 3 && ecma_is_completion_value_empty (ret_value)) + if (args_len >= 3 && ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (date_value, ecma_op_to_number (args[2]), ret_value); date = *ecma_get_number_from_value (date_value); @@ -103,7 +103,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t } /* 4. */ - if (args_len >= 4 && ecma_is_completion_value_empty (ret_value)) + if (args_len >= 4 && ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (hours_value, ecma_op_to_number (args[3]), ret_value); hours = *ecma_get_number_from_value (hours_value); @@ -111,7 +111,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t } /* 5. */ - if (args_len >= 5 && ecma_is_completion_value_empty (ret_value)) + if (args_len >= 5 && ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (minutes_value, ecma_op_to_number (args[4]), ret_value); minutes = *ecma_get_number_from_value (minutes_value); @@ -119,7 +119,7 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t } /* 6. */ - if (args_len >= 6 && ecma_is_completion_value_empty (ret_value)) + if (args_len >= 6 && ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (seconds_value, ecma_op_to_number (args[5]), ret_value); seconds = *ecma_get_number_from_value (seconds_value); @@ -127,14 +127,14 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t } /* 7. */ - if (args_len >= 7 && ecma_is_completion_value_empty (ret_value)) + if (args_len >= 7 && ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (milliseconds_value, ecma_op_to_number (args[6]), ret_value); milliseconds = *ecma_get_number_from_value (milliseconds_value); ECMA_FINALIZE (milliseconds_value); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { if (!ecma_number_is_nan (year) && !ecma_number_is_infinity (year)) { @@ -163,9 +163,9 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t ECMA_FINALIZE (month_value); ECMA_FINALIZE (year_value); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (prim_value_p)); + ret_value = ecma_make_number_value (prim_value_p); } else { @@ -182,14 +182,14 @@ ecma_date_construct_helper (const ecma_value_t *args, /**< arguments passed to t * ECMA-262 v5, 15.9.4.2 * ECMA-262 v5, 15.9.1.15 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_parse (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t arg) /**< string */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_number_t *date_num_p = ecma_alloc_number (); *date_num_p = ecma_number_make_nan (); @@ -389,7 +389,7 @@ ecma_builtin_date_parse (ecma_value_t this_arg __attr_unused___, /**< this argum } } - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (date_num_p)); + ret_value = ecma_make_number_value (date_num_p); MEM_FINALIZE_LOCAL_ARRAY (date_start_p); ECMA_FINALIZE (date_str_value); @@ -403,15 +403,15 @@ ecma_builtin_date_parse (ecma_value_t this_arg __attr_unused___, /**< this argum * See also: * ECMA-262 v5, 15.9.4.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_utc (ecma_value_t this_arg __attr_unused___, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (args_number < 2) { @@ -421,7 +421,7 @@ ecma_builtin_date_utc (ecma_value_t this_arg __attr_unused___, /**< this argumen */ ecma_number_t *nan_p = ecma_alloc_number (); *nan_p = ecma_number_make_nan (); - return ecma_make_normal_completion_value (ecma_make_number_value (nan_p)); + return ecma_make_number_value (nan_p); } ECMA_TRY_CATCH (time_value, ecma_date_construct_helper (args, args_number), ret_value); @@ -429,7 +429,7 @@ ecma_builtin_date_utc (ecma_value_t this_arg __attr_unused___, /**< this argumen ecma_number_t *time_p = ecma_get_number_from_value (time_value); ecma_number_t *time_clip_p = ecma_alloc_number (); *time_clip_p = ecma_date_time_clip (*time_p); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (time_clip_p)); + ret_value = ecma_make_number_value (time_clip_p); ECMA_FINALIZE (time_value); @@ -442,10 +442,10 @@ ecma_builtin_date_utc (ecma_value_t this_arg __attr_unused___, /**< this argumen * See also: * ECMA-262 v5, 15.9.4.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_date_now (ecma_value_t this_arg __attr_unused___) /**< this argument */ { /* @@ -455,7 +455,7 @@ ecma_builtin_date_now (ecma_value_t this_arg __attr_unused___) /**< this argumen */ ecma_number_t *now_num_p = ecma_alloc_number (); *now_num_p = ECMA_NUMBER_ZERO; - return ecma_make_normal_completion_value (ecma_make_number_value (now_num_p)); + return ecma_make_number_value (now_num_p); } /* ecma_builtin_date_now */ /** @@ -464,13 +464,13 @@ ecma_builtin_date_now (ecma_value_t this_arg __attr_unused___) /**< this argumen * See also: * ECMA-262 v5, 15.9.2.1 * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_date_dispatch_call (const ecma_value_t *arguments_list_p __attr_unused___, /**< arguments list */ ecma_length_t arguments_list_len __attr_unused___) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (now_val, ecma_builtin_date_now (ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED)), @@ -489,13 +489,13 @@ ecma_builtin_date_dispatch_call (const ecma_value_t *arguments_list_p __attr_unu * See also: * ECMA-262 v5, 15.9.3.1 * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_number_t *prim_value_num_p = NULL; ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_DATE_PROTOTYPE); @@ -562,7 +562,7 @@ ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**< *prim_value_num_p = ecma_number_make_nan (); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { if (!ecma_number_is_nan (*prim_value_num_p) && ecma_number_is_infinity (*prim_value_num_p)) { @@ -577,11 +577,11 @@ ecma_builtin_date_dispatch_construct (const ecma_value_t *arguments_list_p, /**< ECMA_INTERNAL_PROPERTY_PRIMITIVE_NUMBER_VALUE); ECMA_SET_POINTER (prim_value_prop_p->u.internal_property.value, prim_value_num_p); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (obj_p)); + ret_value = ecma_make_object_value (obj_p); } else { - JERRY_ASSERT (ecma_is_completion_value_throw (ret_value)); + JERRY_ASSERT (ecma_is_value_error (ret_value)); ecma_deref_object (obj_p); } diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-error-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-error-prototype.c index 9ecfb5e6..9dc49c2d 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-error-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-error-prototype.c @@ -51,18 +51,18 @@ * See also: * ECMA-262 v5, 15.11.4.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_error_prototype_object_to_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 2. if (!ecma_is_value_object (this_arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -73,22 +73,22 @@ ecma_builtin_error_prototype_object_to_string (ecma_value_t this_arg) /**< this ecma_op_object_get (obj_p, name_magic_string_p), ret_value); - ecma_completion_value_t name_to_str_completion; + ecma_value_t name_to_str_completion; if (ecma_is_value_undefined (name_get_ret_value)) { ecma_string_t *error_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_ERROR_UL); - name_to_str_completion = ecma_make_normal_completion_value (ecma_make_string_value (error_magic_string_p)); + name_to_str_completion = ecma_make_string_value (error_magic_string_p); } else { name_to_str_completion = ecma_op_to_string (name_get_ret_value); } - if (unlikely (!ecma_is_completion_value_normal (name_to_str_completion))) + if (unlikely (ecma_is_value_error (name_to_str_completion))) { - ret_value = ecma_copy_completion_value (name_to_str_completion); + ret_value = ecma_copy_value (name_to_str_completion, true); } else { @@ -98,27 +98,27 @@ ecma_builtin_error_prototype_object_to_string (ecma_value_t this_arg) /**< this ecma_op_object_get (obj_p, message_magic_string_p), ret_value); - ecma_completion_value_t msg_to_str_completion; + ecma_value_t msg_to_str_completion; if (ecma_is_value_undefined (msg_get_ret_value)) { ecma_string_t *empty_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY); - msg_to_str_completion = ecma_make_normal_completion_value (ecma_make_string_value (empty_magic_string_p)); + msg_to_str_completion = ecma_make_string_value (empty_magic_string_p); } else { msg_to_str_completion = ecma_op_to_string (msg_get_ret_value); } - if (unlikely (!ecma_is_completion_value_normal (msg_to_str_completion))) + if (unlikely (ecma_is_value_error (msg_to_str_completion))) { - ret_value = ecma_copy_completion_value (msg_to_str_completion); + ret_value = ecma_copy_value (msg_to_str_completion, true); } else { - ecma_string_t *name_string_p = ecma_get_string_from_completion_value (name_to_str_completion); - ecma_string_t *msg_string_p = ecma_get_string_from_completion_value (msg_to_str_completion); + ecma_string_t *name_string_p = ecma_get_string_from_value (name_to_str_completion); + ecma_string_t *msg_string_p = ecma_get_string_from_value (msg_to_str_completion); ecma_string_t *ret_str_p; @@ -173,17 +173,17 @@ ecma_builtin_error_prototype_object_to_string (ecma_value_t this_arg) /**< this MEM_FINALIZE_LOCAL_ARRAY (ret_str_buffer); } - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (ret_str_p)); + ret_value = ecma_make_string_value (ret_str_p); } - ecma_free_completion_value (msg_to_str_completion); + ecma_free_value (msg_to_str_completion); ECMA_FINALIZE (msg_get_ret_value); ecma_deref_ecma_string (message_magic_string_p); } - ecma_free_completion_value (name_to_str_completion); + ecma_free_value (name_to_str_completion); ECMA_FINALIZE (name_get_ret_value); diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-error.c b/jerry-core/ecma/builtin-objects/ecma-builtin-error.c index 62c095af..c50543f0 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-error.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-error.c @@ -46,9 +46,9 @@ /** * Handle calling [[Call]] of built-in Error object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -57,7 +57,7 @@ ecma_builtin_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arg if (arguments_list_len != 0 && !ecma_is_value_undefined (arguments_list_p[0])) { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (msg_str_value, ecma_op_to_string (arguments_list_p[0]), @@ -66,7 +66,7 @@ ecma_builtin_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arg ecma_string_t *message_string_p = ecma_get_string_from_value (msg_str_value); ecma_object_t *new_error_object_p = ecma_new_standard_error_with_message (ECMA_ERROR_COMMON, message_string_p); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + ret_value = ecma_make_object_value (new_error_object_p); ECMA_FINALIZE (msg_str_value); @@ -76,16 +76,16 @@ ecma_builtin_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arg { ecma_object_t *new_error_object_p = ecma_new_standard_error (ECMA_ERROR_COMMON); - return ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + return ecma_make_object_value (new_error_object_p); } } /* ecma_builtin_error_dispatch_call */ /** * Handle calling [[Construct]] of built-in Error object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.c b/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.c index 1a75ee9c..279ba678 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.c @@ -46,9 +46,9 @@ /** * Handle calling [[Call]] of built-in EvalError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_eval_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -57,7 +57,7 @@ ecma_builtin_eval_error_dispatch_call (const ecma_value_t *arguments_list_p, /** if (arguments_list_len != 0 && !ecma_is_value_undefined (arguments_list_p[0])) { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (msg_str_value, ecma_op_to_string (arguments_list_p[0]), @@ -66,7 +66,7 @@ ecma_builtin_eval_error_dispatch_call (const ecma_value_t *arguments_list_p, /** ecma_string_t *message_string_p = ecma_get_string_from_value (msg_str_value); ecma_object_t *new_error_object_p = ecma_new_standard_error_with_message (ECMA_ERROR_EVAL, message_string_p); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + ret_value = ecma_make_object_value (new_error_object_p); ECMA_FINALIZE (msg_str_value); @@ -76,16 +76,16 @@ ecma_builtin_eval_error_dispatch_call (const ecma_value_t *arguments_list_p, /** { ecma_object_t *new_error_object_p = ecma_new_standard_error (ECMA_ERROR_EVAL); - return ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + return ecma_make_object_value (new_error_object_p); } } /* ecma_builtin_eval_error_dispatch_call */ /** * Handle calling [[Construct]] of built-in EvalError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_eval_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c index 9dcfc416..34e6add0 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-function-prototype.c @@ -1,5 +1,5 @@ /* Copyright 2014-2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,22 +50,22 @@ * See also: * ECMA-262 v5, 15.3.4.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_function_prototype_object_to_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_op_is_callable (this_arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { ecma_string_t *function_to_string_p = ecma_get_magic_string (LIT_MAGIC_STRING__FUNCTION_TO_STRING); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (function_to_string_p)); + ret_value = ecma_make_string_value (function_to_string_p); } return ret_value; } /* ecma_builtin_function_prototype_object_to_string */ @@ -76,20 +76,20 @@ ecma_builtin_function_prototype_object_to_string (ecma_value_t this_arg) /**< th * See also: * ECMA-262 v5, 15.3.4.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_function_prototype_object_apply (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< first argument */ ecma_value_t arg2) /**< second argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ if (!ecma_op_is_callable (this_arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -105,7 +105,7 @@ ecma_builtin_function_prototype_object_apply (ecma_value_t this_arg, /**< this a /* 3. */ if (!ecma_is_value_object (arg2)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -130,7 +130,7 @@ ecma_builtin_function_prototype_object_apply (ecma_value_t this_arg, /**< this a /* 7. */ for (uint32_t index = 0; - index < length && ecma_is_completion_value_empty (ret_value); + index < length && ecma_is_value_empty (ret_value); index++) { ecma_string_t *curr_idx_str_p = ecma_new_ecma_string_from_uint32 (index); @@ -146,7 +146,7 @@ ecma_builtin_function_prototype_object_apply (ecma_value_t this_arg, /**< this a ecma_deref_ecma_string (curr_idx_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { JERRY_ASSERT (last_index == length); ret_value = ecma_op_function_call (func_obj_p, @@ -157,7 +157,7 @@ ecma_builtin_function_prototype_object_apply (ecma_value_t this_arg, /**< this a for (uint32_t index = 0; index < last_index; index++) { - ecma_free_value (arguments_list_p[index], true); + ecma_free_value (arguments_list_p[index]); } MEM_FINALIZE_LOCAL_ARRAY (arguments_list_p); @@ -178,17 +178,17 @@ ecma_builtin_function_prototype_object_apply (ecma_value_t this_arg, /**< this a * See also: * ECMA-262 v5, 15.3.4.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_function_prototype_object_call (ecma_value_t this_arg, /**< this argument */ const ecma_value_t *arguments_list_p, /**< list of arguments */ ecma_length_t arguments_number) /**< number of arguments */ { if (!ecma_op_is_callable (this_arg)) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } else { @@ -218,20 +218,20 @@ ecma_builtin_function_prototype_object_call (ecma_value_t this_arg, /**< this ar * See also: * ECMA-262 v5, 15.3.4.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this argument */ const ecma_value_t *arguments_list_p, /**< list of arguments */ ecma_length_t arguments_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 2. */ if (!ecma_op_is_callable (this_arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -285,18 +285,15 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar /* 15. */ if (ecma_object_get_class_name (this_arg_obj_p) == LIT_MAGIC_STRING_FUNCTION_UL) { - ecma_completion_value_t get_len_completion = ecma_op_object_get (this_arg_obj_p, - magic_string_length_p); - JERRY_ASSERT (ecma_is_completion_value_normal (get_len_completion)); - - ecma_value_t len_value = ecma_get_completion_value_value (get_len_completion); - JERRY_ASSERT (ecma_is_value_number (len_value)); + ecma_value_t get_len_value = ecma_op_object_get (this_arg_obj_p, magic_string_length_p); + JERRY_ASSERT (!ecma_is_value_error (get_len_value)); + JERRY_ASSERT (ecma_is_value_number (get_len_value)); const ecma_length_t bound_arg_count = arg_count > 1 ? arg_count - 1 : 0; /* 15.a */ - *length_p = *ecma_get_number_from_value (len_value) - ecma_uint32_to_number (bound_arg_count); - ecma_free_completion_value (get_len_completion); + *length_p = *ecma_get_number_from_value (get_len_value) - ecma_uint32_to_number (bound_arg_count); + ecma_free_value (get_len_value); /* 15.b */ if (ecma_number_is_negative (*length_p)) @@ -311,16 +308,15 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar } /* 17. */ - ecma_completion_value_t completion = ecma_builtin_helper_def_prop (function_p, - magic_string_length_p, - ecma_make_number_value (length_p), - false, /* Writable */ - false, /* Enumerable */ - false, /* Configurable */ - false); /* Failure handling */ + ecma_value_t completion = ecma_builtin_helper_def_prop (function_p, + magic_string_length_p, + ecma_make_number_value (length_p), + false, /* Writable */ + false, /* Enumerable */ + false, /* Configurable */ + false); /* Failure handling */ - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion) - || ecma_is_completion_value_normal_false (completion)); + JERRY_ASSERT (ecma_is_value_boolean (completion)); ecma_deref_ecma_string (magic_string_length_p); ecma_dealloc_number (length_p); @@ -349,8 +345,7 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar &prop_desc, false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion) - || ecma_is_completion_value_normal_false (completion)); + JERRY_ASSERT (ecma_is_value_boolean (completion)); ecma_deref_ecma_string (magic_string_caller_p); @@ -360,14 +355,13 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar &prop_desc, false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion) - || ecma_is_completion_value_normal_false (completion)); + JERRY_ASSERT (ecma_is_value_boolean (completion)); ecma_deref_ecma_string (magic_string_arguments_p); ecma_deref_object (thrower_p); /* 22. */ - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (function_p)); + ret_value = ecma_make_object_value (function_p); } return ret_value; @@ -376,29 +370,29 @@ ecma_builtin_function_prototype_object_bind (ecma_value_t this_arg, /**< this ar /** * Handle calling [[Call]] of built-in Function.prototype object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_function_prototype_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } /* ecma_builtin_function_prototype_dispatch_call */ /** * Handle calling [[Construct]] of built-in Function.prototype object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_function_prototype_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } /* ecma_builtin_function_prototype_dispatch_construct */ /** diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-function.c b/jerry-core/ecma/builtin-objects/ecma-builtin-function.c index d0f450b0..1638773d 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-function.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-function.c @@ -44,9 +44,9 @@ /** * Handle calling [[Call]] of built-in Function object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_function_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -61,16 +61,16 @@ ecma_builtin_function_dispatch_call (const ecma_value_t *arguments_list_p, /**< * Performs the operation described in ECMA 262 v5.1 15.3.2.1 steps 5.a-d * * - * @return completion value - concatenated arguments as a string. - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value - concatenated arguments as a string. + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_function_helper_get_function_expression (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_string_t *left_parenthesis_str_p, *right_parenthesis_str_p; ecma_string_t *left_brace_str_p, *right_brace_str_p; @@ -99,7 +99,7 @@ ecma_builtin_function_helper_get_function_expression (const ecma_value_t *argume expr_str_p = concated_str_p; for (ecma_length_t idx = 0; - idx < number_of_function_args && ecma_is_completion_value_empty (ret_value); + idx < number_of_function_args && ecma_is_value_empty (ret_value); idx++) { ECMA_TRY_CATCH (str_arg_value, @@ -122,7 +122,7 @@ ecma_builtin_function_helper_get_function_expression (const ecma_value_t *argume ECMA_FINALIZE (str_arg_value); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { concated_str_p = ecma_concat_ecma_strings (expr_str_p, right_parenthesis_str_p); ecma_deref_ecma_string (expr_str_p); @@ -164,9 +164,9 @@ ecma_builtin_function_helper_get_function_expression (const ecma_value_t *argume ecma_deref_ecma_string (function_kw_str_p); ecma_deref_ecma_string (empty_str_p); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (expr_str_p)); + ret_value = ecma_make_string_value (expr_str_p); } else { @@ -182,15 +182,15 @@ ecma_builtin_function_helper_get_function_expression (const ecma_value_t *argume * See also: * ECMA-262 v5, 15.3. * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_function_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (arguments_value, ecma_builtin_function_helper_get_function_expression (arguments_list_p, diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-global.c b/jerry-core/ecma/builtin-objects/ecma-builtin-global.c index 28f7e84b..785dacca 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-global.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-global.c @@ -1,5 +1,5 @@ /* Copyright 2014-2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged + * Copyright 2015-2016 University of Szeged * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -57,15 +57,15 @@ * are outputted as is, using "%c" format argument, and other code points are outputted as "\uhhll", * where hh and ll are values of code point's high and low bytes, correspondingly. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_print (ecma_value_t this_arg __attr_unused___, /**< this argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* * TODO: @@ -73,7 +73,7 @@ ecma_builtin_global_object_print (ecma_value_t this_arg __attr_unused___, /**< t */ for (ecma_length_t arg_index = 0; - ecma_is_completion_value_empty (ret_value) && arg_index < args_number; + ecma_is_value_empty (ret_value) && arg_index < args_number; arg_index++) { ECMA_TRY_CATCH (str_value, @@ -133,9 +133,9 @@ ecma_builtin_global_object_print (ecma_value_t this_arg __attr_unused___, /**< t printf ("\n"); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED)); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } return ret_value; @@ -147,14 +147,14 @@ ecma_builtin_global_object_print (ecma_value_t this_arg __attr_unused___, /**< t * See also: * ECMA-262 v5, 15.1.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_eval (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t x) /**< routine's first argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); bool is_direct_eval = vm_is_direct_eval_form_call (); @@ -172,7 +172,7 @@ ecma_builtin_global_object_eval (ecma_value_t this_arg __attr_unused___, /**< th if (!ecma_is_value_string (x)) { /* step 1 */ - ret_value = ecma_make_normal_completion_value (ecma_copy_value (x, true)); + ret_value = ecma_copy_value (x, true); } else { @@ -191,15 +191,15 @@ ecma_builtin_global_object_eval (ecma_value_t this_arg __attr_unused___, /**< th * See also: * ECMA-262 v5, 15.1.2.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t string, /**< routine's first argument */ ecma_value_t radix) /**< routine's second argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (string_var, ecma_op_to_string (string), ret_value); @@ -273,7 +273,7 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /* { ecma_number_t *ret_num_p = ecma_alloc_number (); *ret_num_p = ecma_number_make_nan (); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); } /* 8.b */ else if (rad != 16) @@ -287,7 +287,7 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /* rad = 10; } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 10. */ if (strip_prefix) @@ -341,11 +341,11 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /* { ecma_number_t *ret_num_p = ecma_alloc_number (); *ret_num_p = ecma_number_make_nan (); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_number_t *value_p = ecma_alloc_number (); *value_p = 0; @@ -386,7 +386,7 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /* *value_p *= (ecma_number_t) sign; } - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (value_p)); + ret_value = ecma_make_number_value (value_p); } ECMA_OP_TO_NUMBER_FINALIZE (radix_num); @@ -395,7 +395,7 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /* { ecma_number_t *ret_num_p = ecma_alloc_number (); *ret_num_p = ecma_number_make_nan (); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); } MEM_FINALIZE_LOCAL_ARRAY (string_buff); @@ -404,7 +404,7 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /* { ecma_number_t *ret_num_p = ecma_alloc_number (); *ret_num_p = ecma_number_make_nan (); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); } ECMA_FINALIZE (string_var); @@ -417,14 +417,14 @@ ecma_builtin_global_object_parse_int (ecma_value_t this_arg __attr_unused___, /* * See also: * ECMA-262 v5, 15.1.2.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t string) /**< routine's first argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (string_var, ecma_op_to_string (string), ret_value); @@ -494,7 +494,7 @@ ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___, { /* String matched Infinity. */ *ret_num_p = ecma_number_make_infinity (sign); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); break; } } @@ -502,7 +502,7 @@ ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___, /* Reset to starting position. */ str_curr_p = start_p; - if (ecma_is_completion_value_empty (ret_value) && str_curr_p < str_end_p) + if (ecma_is_value_empty (ret_value) && str_curr_p < str_end_p) { current = *str_curr_p; @@ -606,7 +606,7 @@ ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___, if (start_p == end_p) { *ret_num_p = ecma_number_make_nan (); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); } else { @@ -619,14 +619,14 @@ ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___, *ret_num_p *= -1; } - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); } } /* String ended after sign character, or was empty after removing leading whitespace. */ - else if (ecma_is_completion_value_empty (ret_value)) + else if (ecma_is_value_empty (ret_value)) { *ret_num_p = ecma_number_make_nan (); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); } MEM_FINALIZE_LOCAL_ARRAY (string_buff); } @@ -635,7 +635,7 @@ ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___, { ecma_number_t *ret_num_p = ecma_alloc_number (); *ret_num_p = ecma_number_make_nan (); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); } ECMA_FINALIZE (string_var); @@ -649,21 +649,21 @@ ecma_builtin_global_object_parse_float (ecma_value_t this_arg __attr_unused___, * See also: * ECMA-262 v5, 15.1.2.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_is_nan (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t arg) /**< routine's first argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); bool is_nan = ecma_number_is_nan (arg_num); - ret_value = ecma_make_simple_completion_value (is_nan ? ECMA_SIMPLE_VALUE_TRUE - : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_nan ? ECMA_SIMPLE_VALUE_TRUE + : ECMA_SIMPLE_VALUE_FALSE); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); @@ -676,22 +676,22 @@ ecma_builtin_global_object_is_nan (ecma_value_t this_arg __attr_unused___, /**< * See also: * ECMA-262 v5, 15.1.2.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_is_finite (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t arg) /**< routine's first argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); bool is_finite = !(ecma_number_is_nan (arg_num) || ecma_number_is_infinity (arg_num)); - ret_value = ecma_make_simple_completion_value (is_finite ? ECMA_SIMPLE_VALUE_TRUE - : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_finite ? ECMA_SIMPLE_VALUE_TRUE + : ECMA_SIMPLE_VALUE_FALSE); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); @@ -708,7 +708,7 @@ ecma_builtin_global_object_character_is_in (uint32_t character, /**< character * const uint8_t *bitset) /**< character set */ { JERRY_ASSERT (character < 128); - return (bitset[character >> 3] & (1 << (character & 0x7))) != 0; + return (bitset[character >> 3] & (1u << (character & 0x7))) != 0; } /* ecma_builtin_global_object_character_is_in */ /* @@ -748,14 +748,14 @@ static const uint8_t unescaped_uri_component_set[16] = /** * Helper function to decode URI. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_decode_uri_helper (ecma_value_t uri __attr_unused___, /**< uri argument */ const uint8_t *reserved_uri_bitset) /**< reserved characters bitset */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (string, ecma_op_to_string (uri), @@ -804,7 +804,7 @@ ecma_builtin_global_object_decode_uri_helper (ecma_value_t uri __attr_unused___, if (!lit_read_code_point_from_hex (input_char_p + 1, 2, &decoded_byte)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_URI)); + ret_value = ecma_raise_uri_error (""); break; } @@ -836,7 +836,7 @@ ecma_builtin_global_object_decode_uri_helper (ecma_value_t uri __attr_unused___, } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { MEM_DEFINE_LOCAL_ARRAY (output_start_p, output_size, @@ -860,7 +860,7 @@ ecma_builtin_global_object_decode_uri_helper (ecma_value_t uri __attr_unused___, if (!lit_read_code_point_from_hex (input_char_p + 1, 2, &decoded_byte)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_URI)); + ret_value = ecma_raise_uri_error (""); break; } @@ -898,7 +898,7 @@ ecma_builtin_global_object_decode_uri_helper (ecma_value_t uri __attr_unused___, } else { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_URI)); + ret_value = ecma_raise_uri_error (""); break; } @@ -932,7 +932,7 @@ ecma_builtin_global_object_decode_uri_helper (ecma_value_t uri __attr_unused___, if (!is_valid || !lit_is_utf8_string_valid (octets, bytes_count)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_URI)); + ret_value = ecma_raise_uri_error (""); break; } @@ -942,7 +942,7 @@ ecma_builtin_global_object_decode_uri_helper (ecma_value_t uri __attr_unused___, if (lit_is_code_point_utf16_high_surrogate (cp) || lit_is_code_point_utf16_low_surrogate (cp)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_URI)); + ret_value = ecma_raise_uri_error (""); break; } @@ -950,18 +950,18 @@ ecma_builtin_global_object_decode_uri_helper (ecma_value_t uri __attr_unused___, } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { JERRY_ASSERT (output_start_p + output_size == output_char_p); if (lit_is_cesu8_string_valid (output_start_p, output_size)) { ecma_string_t *output_string_p = ecma_new_ecma_string_from_utf8 (output_start_p, output_size); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (output_string_p)); + ret_value = ecma_make_string_value (output_string_p); } else { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_URI)); + ret_value = ecma_raise_uri_error (""); } } @@ -980,10 +980,10 @@ ecma_builtin_global_object_decode_uri_helper (ecma_value_t uri __attr_unused___, * See also: * ECMA-262 v5, 15.1.3.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_decode_uri (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t encoded_uri) /**< routine's first argument */ { @@ -996,10 +996,10 @@ ecma_builtin_global_object_decode_uri (ecma_value_t this_arg __attr_unused___, / * See also: * ECMA-262 v5, 15.1.3.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_decode_uri_component (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t encoded_uri_component) /**< routine's * first argument */ @@ -1026,14 +1026,14 @@ ecma_builtin_global_object_byte_to_hex (lit_utf8_byte_t *dest_p, /**< destinatio /** * Helper function to encode URI. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_encode_uri_helper (ecma_value_t uri, /**< uri argument */ const uint8_t *unescaped_uri_bitset_p) /**< unescaped bitset */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (string, ecma_op_to_string (uri), @@ -1073,7 +1073,7 @@ ecma_builtin_global_object_encode_uri_helper (ecma_value_t uri, /**< uri argumen if (lit_is_code_point_utf16_low_surrogate (ch)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_URI)); + ret_value = ecma_raise_uri_error (""); break; } @@ -1083,7 +1083,7 @@ ecma_builtin_global_object_encode_uri_helper (ecma_value_t uri, /**< uri argumen { if (input_char_p == input_end_p) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_URI)); + ret_value = ecma_raise_uri_error (""); break; } @@ -1097,7 +1097,7 @@ ecma_builtin_global_object_encode_uri_helper (ecma_value_t uri, /**< uri argumen } else { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_URI)); + ret_value = ecma_raise_uri_error (""); break; } } @@ -1121,7 +1121,7 @@ ecma_builtin_global_object_encode_uri_helper (ecma_value_t uri, /**< uri argumen } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { MEM_DEFINE_LOCAL_ARRAY (output_start_p, output_length, @@ -1176,7 +1176,7 @@ ecma_builtin_global_object_encode_uri_helper (ecma_value_t uri, /**< uri argumen ecma_string_t *output_string_p = ecma_new_ecma_string_from_utf8 (output_start_p, output_length); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (output_string_p)); + ret_value = ecma_make_string_value (output_string_p); MEM_FINALIZE_LOCAL_ARRAY (output_start_p); } @@ -1193,10 +1193,10 @@ ecma_builtin_global_object_encode_uri_helper (ecma_value_t uri, /**< uri argumen * See also: * ECMA-262 v5, 15.1.3.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_encode_uri (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t uri) /**< routine's first argument */ { @@ -1209,10 +1209,10 @@ ecma_builtin_global_object_encode_uri (ecma_value_t this_arg __attr_unused___, / * See also: * ECMA-262 v5, 15.1.3.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_encode_uri_component (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t uri_component) /**< routine's first argument */ { @@ -1249,14 +1249,14 @@ static const uint8_t ecma_escape_set[16] = * See also: * ECMA-262 v5, B.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_escape (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t arg) /**< routine's first argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (string, ecma_op_to_string (arg), @@ -1356,7 +1356,7 @@ ecma_builtin_global_object_escape (ecma_value_t this_arg __attr_unused___, /**< ecma_string_t *output_string_p = ecma_new_ecma_string_from_utf8 (output_start_p, output_length); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (output_string_p)); + ret_value = ecma_make_string_value (output_string_p); MEM_FINALIZE_LOCAL_ARRAY (output_start_p); @@ -1372,14 +1372,14 @@ ecma_builtin_global_object_escape (ecma_value_t this_arg __attr_unused___, /**< * See also: * ECMA-262 v5, B.2.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_global_object_unescape (ecma_value_t this_arg __attr_unused___, /**< this argument */ ecma_value_t arg) /**< routine's first argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (string, ecma_op_to_string (arg), ret_value); @@ -1455,7 +1455,7 @@ ecma_builtin_global_object_unescape (ecma_value_t this_arg __attr_unused___, /** lit_utf8_size_t output_length = (lit_utf8_size_t) (output_char_p - input_start_p); ecma_string_t *output_string_p = ecma_new_ecma_string_from_utf8 (input_start_p, output_length); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (output_string_p)); + ret_value = ecma_make_string_value (output_string_p); MEM_FINALIZE_LOCAL_ARRAY (input_start_p); diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-date.c b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-date.c index 9dd2a525..edcc234d 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-date.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-date.c @@ -1,5 +1,5 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -875,10 +875,10 @@ ecma_date_timezone_offset (ecma_number_t time) /**< time value */ * Used by: * - All Date.prototype.set *routine except Date.prototype.setTime. * - * @return completion value containing the new internal time value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value containing the new internal time value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_date_set_internal_property (ecma_value_t this_arg, /**< this argument */ ecma_number_t day, /**< day */ ecma_number_t time, /**< time */ @@ -903,7 +903,7 @@ ecma_date_set_internal_property (ecma_value_t this_arg, /**< this argument */ prim_value_prop_p->u.internal_property.value); *prim_value_num_p = *value_p; - return ecma_make_normal_completion_value (ecma_make_number_value (value_p)); + return ecma_make_number_value (value_p); } /* ecma_date_set_internal_property */ /** @@ -1053,10 +1053,10 @@ ecma_date_value_to_string_common (lit_utf8_byte_t *dest_p, /**< destination buff * - The Date routine. * - The Date.prototype.toString routine. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_date_value_to_string (ecma_number_t datetime_number) /**< datetime */ { /* @@ -1092,7 +1092,7 @@ ecma_date_value_to_string (ecma_number_t datetime_number) /**< datetime */ ecma_string_t *date_string_p = ecma_new_ecma_string_from_utf8 (character_buffer, result_string_length); - return ecma_make_normal_completion_value (ecma_make_string_value (date_string_p)); + return ecma_make_string_value (date_string_p); } /* ecma_date_value_to_string */ /** @@ -1101,10 +1101,10 @@ ecma_date_value_to_string (ecma_number_t datetime_number) /**< datetime */ * Used by: * - The Date.prototype.toUTCString routine. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_date_value_to_utc_string (ecma_number_t datetime_number) /**< datetime */ { /* @@ -1133,7 +1133,7 @@ ecma_date_value_to_utc_string (ecma_number_t datetime_number) /**< datetime */ ecma_string_t *date_string_p = ecma_new_ecma_string_from_utf8 (character_buffer, result_string_length); - return ecma_make_normal_completion_value (ecma_make_string_value (date_string_p)); + return ecma_make_string_value (date_string_p); } /* ecma_date_value_to_utc_string */ /** @@ -1142,10 +1142,10 @@ ecma_date_value_to_utc_string (ecma_number_t datetime_number) /**< datetime */ * Used by: * - The Date.prototype.toISOString routine. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_date_value_to_iso_string (ecma_number_t datetime_number) /**<datetime */ { /* @@ -1194,7 +1194,7 @@ ecma_date_value_to_iso_string (ecma_number_t datetime_number) /**<datetime */ ecma_string_t *date_string_p = ecma_new_ecma_string_from_utf8 (character_buffer, result_string_length); - return ecma_make_normal_completion_value (ecma_make_string_value (date_string_p)); + return ecma_make_string_value (date_string_p); } /* ecma_date_value_to_iso_string */ /** @@ -1203,10 +1203,10 @@ ecma_date_value_to_iso_string (ecma_number_t datetime_number) /**<datetime */ * Used by: * - The Date.prototype.toDateString routine. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_date_value_to_date_string (ecma_number_t datetime_number) /**<datetime */ { /* @@ -1238,7 +1238,7 @@ ecma_date_value_to_date_string (ecma_number_t datetime_number) /**<datetime */ ecma_string_t *date_string_p = ecma_new_ecma_string_from_utf8 (character_buffer, result_string_length); - return ecma_make_normal_completion_value (ecma_make_string_value (date_string_p)); + return ecma_make_string_value (date_string_p); } /* ecma_date_value_to_date_string */ /** @@ -1247,10 +1247,10 @@ ecma_date_value_to_date_string (ecma_number_t datetime_number) /**<datetime */ * Used by: * - The Date.prototype.toTimeString routine. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_date_value_to_time_string (ecma_number_t datetime_number) /**<datetime */ { /* @@ -1281,7 +1281,7 @@ ecma_date_value_to_time_string (ecma_number_t datetime_number) /**<datetime */ ecma_string_t *time_string_p = ecma_new_ecma_string_from_utf8 (character_buffer, result_string_length); - return ecma_make_normal_completion_value (ecma_make_string_value (time_string_p)); + return ecma_make_string_value (time_string_p); } /* ecma_date_value_to_time_string */ /** @@ -1292,13 +1292,13 @@ ecma_date_value_to_time_string (ecma_number_t datetime_number) /**<datetime */ * - The Date.prototype.toISOString routine. * - The Date.prototype.toUTCString routine. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_date_get_primitive_value (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (this_arg) || ecma_object_get_class_name (ecma_get_object_from_value (this_arg)) != LIT_MAGIC_STRING_DATE_UL) @@ -1315,7 +1315,7 @@ ecma_date_get_primitive_value (ecma_value_t this_arg) /**< this argument */ ecma_number_t *prim_value_num_p = ecma_alloc_number (); *prim_value_num_p = *ECMA_GET_NON_NULL_POINTER (ecma_number_t, prim_value_prop_p->u.internal_property.value); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (prim_value_num_p)); + ret_value = ecma_make_number_value (prim_value_num_p); } return ret_value; diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-json.c b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-json.c index d16dc4c2..37c63404 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-json.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers-json.c @@ -1,5 +1,5 @@ /* Copyright 2014-2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -155,10 +155,10 @@ ecma_builtin_helper_json_create_separated_properties (ecma_collection_header_t * * - ecma_builtin_json_object step 10.b * - ecma_builtin_json_array step 10.b * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_builtin_helper_json_create_formatted_json (ecma_string_t *left_bracket_p, /**< left bracket*/ ecma_string_t *right_bracket_p, /**< right bracket*/ ecma_string_t *stepback_p, /**< stepback*/ @@ -212,7 +212,7 @@ ecma_builtin_helper_json_create_formatted_json (ecma_string_t *left_bracket_p, / ecma_deref_ecma_string (final_str_p); final_str_p = tmp_str_p; - return ecma_make_normal_completion_value (ecma_make_string_value (final_str_p)); + return ecma_make_string_value (final_str_p); } /* ecma_builtin_helper_json_create_formatted_json */ /** @@ -225,10 +225,10 @@ ecma_builtin_helper_json_create_formatted_json (ecma_string_t *left_bracket_p, / * - ecma_builtin_json_object step 10.a * - ecma_builtin_json_array step 10.a * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_builtin_helper_json_create_non_formatted_json (ecma_string_t *left_bracket_p, /**< left bracket*/ ecma_string_t *right_bracket_p, /**< right bracket*/ ecma_collection_header_t *partial_p) /**< key-value pairs*/ @@ -251,7 +251,7 @@ ecma_builtin_helper_json_create_non_formatted_json (ecma_string_t *left_bracket_ ecma_deref_ecma_string (properties_str_p); properties_str_p = tmp_str_p; - return ecma_make_normal_completion_value (ecma_make_string_value (properties_str_p)); + return ecma_make_string_value (properties_str_p); } /* ecma_builtin_helper_json_create_non_formatted_json */ /** diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c index 8cf6e50b..d3b0cad0 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.c @@ -1,5 +1,5 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,11 +44,11 @@ * - The Object.prototype.toString routine. * - The Array.prototype.toString routine as fallback. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this argument */ { lit_magic_string_id_t type_string; @@ -63,20 +63,20 @@ ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this arg } else { - ecma_completion_value_t obj_this = ecma_op_to_object (this_arg); + ecma_value_t obj_this = ecma_op_to_object (this_arg); - if (!ecma_is_completion_value_normal (obj_this)) + if (ecma_is_value_error (obj_this)) { return obj_this; } - JERRY_ASSERT (ecma_is_value_object (ecma_get_completion_value_value (obj_this))); + JERRY_ASSERT (ecma_is_value_object (obj_this)); - ecma_object_t *obj_p = ecma_get_object_from_completion_value (obj_this); + ecma_object_t *obj_p = ecma_get_object_from_value (obj_this); type_string = ecma_object_get_class_name (obj_p); - ecma_free_completion_value (obj_this); + ecma_free_value (obj_this); } ecma_string_t *ret_string_p; @@ -111,7 +111,7 @@ ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this arg MEM_FINALIZE_LOCAL_ARRAY (str_buffer); - return ecma_make_normal_completion_value (ecma_make_string_value (ret_string_p)); + return ecma_make_string_value (ret_string_p); } /* ecma_builtin_helper_object_to_string */ /** @@ -120,14 +120,14 @@ ecma_builtin_helper_object_to_string (const ecma_value_t this_arg) /**< this arg * See also: * ECMA-262 v5, 15.4.4.3 steps 6-8 and 10.b-d * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_builtin_helper_get_to_locale_string_at_index (ecma_object_t *obj_p, /**< this object */ - uint32_t index) /**< array index */ + uint32_t index) /** <array index */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_string_t *index_string_p = ecma_new_ecma_string_from_uint32 (index); ECMA_TRY_CATCH (index_value, @@ -137,7 +137,7 @@ ecma_builtin_helper_get_to_locale_string_at_index (ecma_object_t *obj_p, /**< th if (ecma_is_value_undefined (index_value) || ecma_is_value_null (index_value)) { ecma_string_t *return_string_p = ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (return_string_p)); + ret_value = ecma_make_string_value (return_string_p); } else { @@ -167,7 +167,7 @@ ecma_builtin_helper_get_to_locale_string_at_index (ecma_object_t *obj_p, /**< th } else { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } ECMA_FINALIZE (to_locale_value); @@ -192,18 +192,18 @@ ecma_builtin_helper_get_to_locale_string_at_index (ecma_object_t *obj_p, /**< th * ECMA-262 v5, 15.2.3.4 steps 2-5 * ECMA-262 v5, 15.2.3.14 steps 3-6 * - * @return completion value - Array of property names. - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value - Array of property names. + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_builtin_helper_object_get_properties (ecma_object_t *obj_p, /**< object */ bool only_enumerable_properties) /**< list enumerable properties? */ { JERRY_ASSERT (obj_p != NULL); - ecma_completion_value_t new_array = ecma_op_create_array_object (NULL, 0, false); - JERRY_ASSERT (ecma_is_completion_value_normal (new_array)); - ecma_object_t *new_array_p = ecma_get_object_from_completion_value (new_array); + ecma_value_t new_array = ecma_op_create_array_object (NULL, 0, false); + JERRY_ASSERT (!ecma_is_value_error (new_array)); + ecma_object_t *new_array_p = ecma_get_object_from_value (new_array); uint32_t index = 0; @@ -219,15 +219,15 @@ ecma_builtin_helper_object_get_properties (ecma_object_t *obj_p, /**< object */ { ecma_string_t *index_string_p = ecma_new_ecma_string_from_uint32 (index); - ecma_completion_value_t completion = ecma_builtin_helper_def_prop (new_array_p, - index_string_p, - *iter.current_value_p, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); /* Failure handling */ + ecma_value_t completion = ecma_builtin_helper_def_prop (new_array_p, + index_string_p, + *iter.current_value_p, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); /* Failure handling */ - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); ecma_deref_ecma_string (index_string_p); @@ -323,15 +323,15 @@ ecma_builtin_helper_array_index_normalize (ecma_number_t index, /**< index */ * Used by: * - The Array.prototype.concat routine. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_builtin_helper_array_concat_value (ecma_object_t *obj_p, /**< array */ uint32_t *length_p, /**< in-out: array's length */ ecma_value_t value) /**< value to concat */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 5.b */ if (ecma_is_value_object (value) @@ -349,7 +349,7 @@ ecma_builtin_helper_array_concat_value (ecma_object_t *obj_p, /**< array */ /* 5.b.iii */ for (uint32_t array_index = 0; - array_index < arg_len && ecma_is_completion_value_empty (ret_value); + array_index < arg_len && ecma_is_value_empty (ret_value); array_index++) { ecma_string_t *array_index_string_p = ecma_new_ecma_string_from_uint32 (array_index); @@ -368,15 +368,15 @@ ecma_builtin_helper_array_concat_value (ecma_object_t *obj_p, /**< array */ /* 5.b.iii.3.b */ /* This will always be a simple value since 'is_throw' is false, so no need to free. */ - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (obj_p, - new_array_index_string_p, - get_value, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); /* Failure handling */ + ecma_value_t put_comp = ecma_builtin_helper_def_prop (obj_p, + new_array_index_string_p, + get_value, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); /* Failure handling */ - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + JERRY_ASSERT (ecma_is_value_true (put_comp)); ECMA_FINALIZE (get_value); ecma_deref_ecma_string (new_array_index_string_p); @@ -397,22 +397,22 @@ ecma_builtin_helper_array_concat_value (ecma_object_t *obj_p, /**< array */ /* 5.c.i */ /* This will always be a simple value since 'is_throw' is false, so no need to free. */ - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (obj_p, - new_array_index_string_p, - value, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); /* Failure handling */ + ecma_value_t put_comp = ecma_builtin_helper_def_prop (obj_p, + new_array_index_string_p, + value, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); /* Failure handling */ - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + JERRY_ASSERT (ecma_is_value_true (put_comp)); ecma_deref_ecma_string (new_array_index_string_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } return ret_value; @@ -484,13 +484,13 @@ ecma_builtin_helper_string_index_normalize (ecma_number_t index, /**< index */ * * @return uint32_t - (last)index of search string */ -ecma_completion_value_t +ecma_value_t ecma_builtin_helper_string_prototype_object_index_of (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< routine's first argument */ ecma_value_t arg2, /**< routine's second argument */ bool first_index) /**< routine's third argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1 */ ECMA_TRY_CATCH (check_coercible_val, @@ -532,7 +532,7 @@ ecma_builtin_helper_string_prototype_object_index_of (ecma_value_t this_arg, /** *ret_num_p = ecma_uint32_to_number (index_of); } - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + ret_value = ecma_make_number_value (ret_num_p); ECMA_OP_TO_NUMBER_FINALIZE (pos_num); ECMA_FINALIZE (search_str_val); @@ -684,10 +684,10 @@ ecma_builtin_helper_string_find_index (ecma_string_t *original_str_p, /**< index * ECMA-262 v5, 8.12.9 * ECMA-262 v5, 15.4.5.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_builtin_helper_def_prop (ecma_object_t *obj_p, /**< object */ ecma_string_t *index_p, /**< index string */ ecma_value_t value, /**< value */ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.h b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.h index eccba178..de910a7a 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-helpers.h @@ -1,5 +1,5 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,24 +26,24 @@ * @{ */ -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_helper_object_to_string (const ecma_value_t); -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_helper_get_to_locale_string_at_index (ecma_object_t *, uint32_t); -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_helper_object_get_properties (ecma_object_t *, bool); -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_helper_array_concat_value (ecma_object_t *, uint32_t *, ecma_value_t); extern uint32_t ecma_builtin_helper_array_index_normalize (ecma_number_t, uint32_t); extern uint32_t ecma_builtin_helper_string_index_normalize (ecma_number_t, uint32_t, bool); -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_helper_string_prototype_object_index_of (ecma_value_t, ecma_value_t, ecma_value_t, bool); extern bool ecma_builtin_helper_string_find_index (ecma_string_t *, ecma_string_t *, bool, ecma_length_t, ecma_length_t *); -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_helper_def_prop (ecma_object_t *, ecma_string_t *, ecma_value_t, bool, bool, bool, bool); @@ -108,16 +108,16 @@ extern ecma_number_t ecma_date_make_day (ecma_number_t, ecma_number_t, ecma_numb extern ecma_number_t ecma_date_make_date (ecma_number_t, ecma_number_t); extern ecma_number_t ecma_date_time_clip (ecma_number_t); extern ecma_number_t ecma_date_timezone_offset (ecma_number_t); -extern ecma_completion_value_t ecma_date_set_internal_property (ecma_value_t, ecma_number_t, +extern ecma_value_t ecma_date_set_internal_property (ecma_value_t, ecma_number_t, ecma_number_t, ecma_date_timezone_t); extern void ecma_date_insert_leading_zeros (ecma_string_t **, ecma_number_t, uint32_t); -extern ecma_completion_value_t ecma_date_value_to_string (ecma_number_t); -extern ecma_completion_value_t ecma_date_value_to_utc_string (ecma_number_t); -extern ecma_completion_value_t ecma_date_value_to_iso_string (ecma_number_t); -extern ecma_completion_value_t ecma_date_value_to_date_string (ecma_number_t); -extern ecma_completion_value_t ecma_date_value_to_time_string (ecma_number_t); -extern ecma_completion_value_t ecma_date_get_primitive_value (ecma_value_t); +extern ecma_value_t ecma_date_value_to_string (ecma_number_t); +extern ecma_value_t ecma_date_value_to_utc_string (ecma_number_t); +extern ecma_value_t ecma_date_value_to_iso_string (ecma_number_t); +extern ecma_value_t ecma_date_value_to_date_string (ecma_number_t); +extern ecma_value_t ecma_date_value_to_time_string (ecma_number_t); +extern ecma_value_t ecma_date_get_primitive_value (ecma_value_t); #endif /* !CONFIG_ECMA_COMPACT_PROFILE_DISABLE_DATE_BUILTIN */ @@ -147,14 +147,14 @@ typedef struct extern bool ecma_has_object_value_in_collection (ecma_collection_header_t *, ecma_value_t); extern bool ecma_has_string_value_in_collection (ecma_collection_header_t *, ecma_value_t); -extern ecma_string_t *ecma_builtin_helper_json_create_hex_digit_ecma_string (uint8_t); - +extern ecma_string_t * +ecma_builtin_helper_json_create_hex_digit_ecma_string (uint8_t); extern ecma_string_t * ecma_builtin_helper_json_create_separated_properties (ecma_collection_header_t *, ecma_string_t *); -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_helper_json_create_formatted_json (ecma_string_t *, ecma_string_t *, ecma_string_t *, ecma_collection_header_t *, ecma_json_stringify_context_t *); -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_helper_json_create_non_formatted_json (ecma_string_t *, ecma_string_t *, ecma_collection_header_t *); /** diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-internal-routines-template.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-internal-routines-template.inc.h index 92e15a67..9fc1f8a2 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-internal-routines-template.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-internal-routines-template.inc.h @@ -44,7 +44,7 @@ #define ROUTINE_ARG_LIST_NON_FIXED ROUTINE_ARG_LIST_0, \ const ecma_value_t *arguments_list_p, ecma_length_t arguments_list_len #define ROUTINE(name, c_function_name, args_number, length_prop_value) \ - static ecma_completion_value_t c_function_name (ROUTINE_ARG_LIST_ ## args_number); + static ecma_value_t c_function_name (ROUTINE_ARG_LIST_ ## args_number); #include BUILTIN_INC_HEADER_NAME #undef ROUTINE_ARG_LIST_NON_FIXED #undef ROUTINE_ARG_LIST_3 @@ -270,7 +270,7 @@ TRY_TO_INSTANTIATE_PROPERTY_ROUTINE_NAME (BUILTIN_UNDERSCORED_ID) (ecma_object_t ecma_named_data_property_assign_value (obj_p, prop_p, value); - ecma_free_value (value, true); + ecma_free_value (value); return prop_p; } /* TRY_TO_INSTANTIATE_PROPERTY_ROUTINE_NAME */ @@ -394,10 +394,10 @@ LIST_LAZY_PROPERTY_NAMES_ROUTINE_NAME (BUILTIN_UNDERSCORED_ID) (ecma_object_t *o /** * Dispatcher of the built-in's routines * - * @return completion-value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t DISPATCH_ROUTINE_ROUTINE_NAME (BUILTIN_UNDERSCORED_ID) (uint16_t builtin_routine_id, /**< built-in wide routine identifier */ ecma_value_t this_arg_value, /**< 'this' argument diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-json.c b/jerry-core/ecma/builtin-objects/ecma-builtin-json.c index cb2b71f0..5f382be9 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-json.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-json.c @@ -1,5 +1,5 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -423,16 +423,15 @@ ecma_builtin_json_define_value_property (ecma_object_t *obj_p, /**< this object ecma_string_t *property_name_p, /**< property name */ ecma_value_t value) /**< value */ { - ecma_completion_value_t completion_value = ecma_builtin_helper_def_prop (obj_p, - property_name_p, - value, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); /* Failure handling */ - - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion_value) - || ecma_is_completion_value_normal_false (completion_value)); + ecma_value_t completion_value = ecma_builtin_helper_def_prop (obj_p, + property_name_p, + value, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); /* Failure handling */ + + JERRY_ASSERT (ecma_is_value_boolean (completion_value)); } /* ecma_builtin_json_define_value_property */ /** @@ -520,7 +519,7 @@ ecma_builtin_json_parse_value (ecma_json_token_t *token_p) /**< token argument * ecma_string_t *name_p = ecma_new_ecma_string_from_utf8 (string_start_p, string_size); ecma_builtin_json_define_value_property (object_p, name_p, value); ecma_deref_ecma_string (name_p); - ecma_free_value (value, true); + ecma_free_value (value); parse_comma = true; } @@ -535,10 +534,10 @@ ecma_builtin_json_parse_value (ecma_json_token_t *token_p) /**< token argument * bool parse_comma = false; uint32_t length = 0; - ecma_completion_value_t array_construction = ecma_op_create_array_object (NULL, 0, false); - JERRY_ASSERT (ecma_is_completion_value_normal (array_construction)); + ecma_value_t array_construction = ecma_op_create_array_object (NULL, 0, false); + JERRY_ASSERT (!ecma_is_value_error (array_construction)); - ecma_object_t *array_p = ecma_get_object_from_value (ecma_get_completion_value_value (array_construction)); + ecma_object_t *array_p = ecma_get_object_from_value (array_construction); while (true) { @@ -565,19 +564,19 @@ ecma_builtin_json_parse_value (ecma_json_token_t *token_p) /**< token argument * ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (length); - ecma_completion_value_t completion = ecma_builtin_helper_def_prop (array_p, - index_str_p, - value, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); /* Failure handling */ + ecma_value_t completion = ecma_builtin_helper_def_prop (array_p, + index_str_p, + value, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); /* Failure handling */ - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); ecma_deref_ecma_string (index_str_p); - ecma_free_value (value, true); + ecma_free_value (value); length++; parse_comma = true; @@ -602,10 +601,10 @@ ecma_builtin_json_parse_value (ecma_json_token_t *token_p) /**< token argument * * See also: * ECMA-262 v5, 15.12.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_walk (ecma_object_t *reviver_p, /**< reviver function */ ecma_object_t *holder_p, /**< holder object */ ecma_string_t *name_p) /**< property name */ @@ -614,7 +613,7 @@ ecma_builtin_json_walk (ecma_object_t *reviver_p, /**< reviver function */ JERRY_ASSERT (holder_p); JERRY_ASSERT (name_p); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (value_get, ecma_op_object_get (holder_p, name_p), @@ -630,7 +629,7 @@ ecma_builtin_json_walk (ecma_object_t *reviver_p, /**< reviver function */ ecma_collection_iterator_init (&iter, props_p); while (ecma_collection_iterator_next (&iter) - && ecma_is_completion_value_empty (ret_value)) + && ecma_is_value_empty (ret_value)) { ecma_string_t *property_name_p = ecma_get_string_from_value (*iter.current_value_p); @@ -646,11 +645,10 @@ ecma_builtin_json_walk (ecma_object_t *reviver_p, /**< reviver function */ */ if (ecma_is_value_undefined (value_walk)) { - ecma_completion_value_t delete_val = ecma_op_general_object_delete (object_p, - property_name_p, - false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (delete_val) - || ecma_is_completion_value_normal_false (delete_val)); + ecma_value_t delete_val = ecma_op_general_object_delete (object_p, + property_name_p, + false); + JERRY_ASSERT (ecma_is_value_boolean (delete_val)); } else { @@ -665,7 +663,7 @@ ecma_builtin_json_walk (ecma_object_t *reviver_p, /**< reviver function */ ecma_free_values_collection (props_p, true); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_value_t arguments_list[2]; @@ -682,7 +680,7 @@ ecma_builtin_json_walk (ecma_object_t *reviver_p, /**< reviver function */ } else { - JERRY_ASSERT (ecma_is_completion_value_throw (ret_value)); + JERRY_ASSERT (ecma_is_value_error (ret_value)); } ECMA_FINALIZE (value_get); @@ -696,15 +694,15 @@ ecma_builtin_json_walk (ecma_object_t *reviver_p, /**< reviver function */ * See also: * ECMA-262 v5, 15.12.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_parse (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg1, /**< string argument */ ecma_value_t arg2) /**< reviver argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (string, ecma_op_to_string (arg1), @@ -733,14 +731,14 @@ ecma_builtin_json_parse (ecma_value_t this_arg __attr_unused___, /**< 'this' arg if (token.type != end_token) { - ecma_free_value (final_result, true); + ecma_free_value (final_result); final_result = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } } if (ecma_is_value_undefined (final_result)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_SYNTAX)); + ret_value = ecma_raise_syntax_error (""); } else { @@ -755,7 +753,7 @@ ecma_builtin_json_parse (ecma_value_t this_arg __attr_unused___, /**< 'this' arg true); ecma_named_data_property_assign_value (object_p, property_p, final_result); - ecma_free_value (final_result, true); + ecma_free_value (final_result); ret_value = ecma_builtin_json_walk (ecma_get_object_from_value (arg2), object_p, @@ -765,7 +763,7 @@ ecma_builtin_json_parse (ecma_value_t this_arg __attr_unused___, /**< 'this' arg } else { - ret_value = ecma_make_normal_completion_value (final_result); + ret_value = final_result; } } @@ -775,13 +773,13 @@ ecma_builtin_json_parse (ecma_value_t this_arg __attr_unused___, /**< 'this' arg return ret_value; } /* ecma_builtin_json_parse */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_str (ecma_string_t *key_p, ecma_object_t *holder_p, ecma_json_stringify_context_t *context_p); -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_object (ecma_object_t *obj_p, ecma_json_stringify_context_t *context_p); -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_array (ecma_object_t *obj_p, ecma_json_stringify_context_t *context_p); /** @@ -790,16 +788,16 @@ ecma_builtin_json_array (ecma_object_t *obj_p, ecma_json_stringify_context_t *co * See also: * ECMA-262 v5, 15.12.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg1, /**< value */ ecma_value_t arg2, /**< replacer */ ecma_value_t arg3) /**< space */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_json_stringify_context_t context; @@ -841,7 +839,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this' uint32_t index = 0; /* 4.b.ii */ - while ((index < array_length) && ecma_is_completion_value_empty (ret_value)) + while ((index < array_length) && ecma_is_value_empty (ret_value)) { ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (index); @@ -898,7 +896,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this' } else { - ecma_free_value (item, true); + ecma_free_value (item); } } @@ -916,7 +914,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this' } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_value_t space = ecma_copy_value (arg3, true); @@ -933,7 +931,7 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this' ecma_op_to_number (arg3), ret_value); - ecma_free_value (space, true); + ecma_free_value (space); space = ecma_copy_value (val, true); ECMA_FINALIZE (val); @@ -945,14 +943,14 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this' ecma_op_to_string (arg3), ret_value); - ecma_free_value (space, true); + ecma_free_value (space); space = ecma_copy_value (val, true); ECMA_FINALIZE (val); } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 6. */ if (ecma_is_value_number (space)) @@ -1008,29 +1006,29 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this' } } - ecma_free_value (space, true); + ecma_free_value (space); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 9. */ ecma_object_t *obj_wrapper_p = ecma_op_create_object_object_noarg (); ecma_string_t *empty_str_p = ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY); /* 10. */ - ecma_completion_value_t put_comp_val = ecma_op_object_put (obj_wrapper_p, - empty_str_p, - arg1, - false); + ecma_value_t put_comp_val = ecma_op_object_put (obj_wrapper_p, + empty_str_p, + arg1, + false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp_val)); - ecma_free_completion_value (put_comp_val); + JERRY_ASSERT (ecma_is_value_true (put_comp_val)); + ecma_free_value (put_comp_val); /* 11. */ ECMA_TRY_CATCH (str_val, ecma_builtin_json_str (empty_str_p, obj_wrapper_p, &context), ret_value); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (str_val, true)); + ret_value = ecma_copy_value (str_val, true); ECMA_FINALIZE (str_val); @@ -1055,10 +1053,10 @@ ecma_builtin_json_stringify (ecma_value_t this_arg __attr_unused___, /**< 'this' * See also: * ECMA-262 v5, 15.12.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_quote (ecma_string_t *string_p) /**< string that should be quoted*/ { /* 1. */ @@ -1207,7 +1205,7 @@ ecma_builtin_json_quote (ecma_string_t *string_p) /**< string that should be quo product_str_p = tmp_str_p; /* 4. */ - return ecma_make_normal_completion_value (ecma_make_string_value (product_str_p)); + return ecma_make_string_value (product_str_p); } /* ecma_builtin_json_quote */ /** @@ -1216,15 +1214,15 @@ ecma_builtin_json_quote (ecma_string_t *string_p) /**< string that should be quo * See also: * ECMA-262 v5, 15.12.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ ecma_object_t *holder_p, /**< the object*/ ecma_json_stringify_context_t *context_p) /**< context*/ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (value, @@ -1255,7 +1253,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ ecma_op_function_call (toJSON_obj_p, my_val, call_args, 1), ret_value); - ecma_free_value (my_val, true); + ecma_free_value (my_val); my_val = ecma_copy_value (func_ret_val, true); ECMA_FINALIZE (func_ret_val); @@ -1267,7 +1265,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ } /* 3. */ - if (context_p->replacer_function_p && ecma_is_completion_value_empty (ret_value)) + if (context_p->replacer_function_p && ecma_is_value_empty (ret_value)) { ecma_value_t holder_value = ecma_make_object_value (holder_p); ecma_value_t key_value = ecma_make_string_value (key_p); @@ -1277,14 +1275,14 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ ecma_op_function_call (context_p->replacer_function_p, holder_value, call_args, 2), ret_value); - ecma_free_value (my_val, true); + ecma_free_value (my_val); my_val = ecma_copy_value (func_ret_val, true); ECMA_FINALIZE (func_ret_val); } /* 4. */ - if (ecma_is_value_object (my_val) && ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_object (my_val) && ecma_is_value_empty (ret_value)) { ecma_object_t *obj_p = ecma_get_object_from_value (my_val); lit_magic_string_id_t class_name = ecma_object_get_class_name (obj_p); @@ -1296,7 +1294,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ ecma_op_to_number (my_val), ret_value); - ecma_free_value (my_val, true); + ecma_free_value (my_val); my_val = ecma_copy_value (val, true); ECMA_FINALIZE (val); @@ -1308,7 +1306,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ ecma_op_to_string (my_val), ret_value); - ecma_free_value (my_val, true); + ecma_free_value (my_val); my_val = ecma_copy_value (val, true); ECMA_FINALIZE (val); @@ -1320,20 +1318,20 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ ecma_op_to_primitive (my_val, ECMA_PREFERRED_TYPE_NO), ret_value); - ecma_free_value (my_val, true); + ecma_free_value (my_val); my_val = ecma_copy_value (val, true); ECMA_FINALIZE (val); } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 5. - 7. */ if (ecma_is_value_null (my_val) || ecma_is_value_boolean (my_val)) { ret_value = ecma_op_to_string (my_val); - JERRY_ASSERT (ecma_is_completion_value_normal (ret_value)); + JERRY_ASSERT (!ecma_is_value_error (ret_value)); } /* 8. */ else if (ecma_is_value_string (my_val)) @@ -1350,13 +1348,13 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ if (!ecma_number_is_nan (num_value_p) && !ecma_number_is_infinity (num_value_p)) { ret_value = ecma_op_to_string (my_val); - JERRY_ASSERT (ecma_is_completion_value_normal (ret_value)); + JERRY_ASSERT (!ecma_is_value_error (ret_value)); } else { /* 9.b */ ecma_string_t *null_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_NULL); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (null_str_p)); + ret_value = ecma_make_string_value (null_str_p); } } /* 10. */ @@ -1372,7 +1370,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ ecma_builtin_json_array (obj_p, context_p), ret_value); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (val, true)); + ret_value = ecma_copy_value (val, true); ECMA_FINALIZE (val); } @@ -1383,7 +1381,7 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ ecma_builtin_json_object (obj_p, context_p), ret_value); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (val, true)); + ret_value = ecma_copy_value (val, true); ECMA_FINALIZE (val); } @@ -1391,11 +1389,11 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ else { /* 11. */ - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } } - ecma_free_value (my_val, true); + ecma_free_value (my_val); ECMA_FINALIZE (value); return ret_value; @@ -1407,10 +1405,10 @@ ecma_builtin_json_str (ecma_string_t *key_p, /**< property key*/ * See also: * ECMA-262 v5, 15.12.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_object (ecma_object_t *obj_p, /**< the object*/ ecma_json_stringify_context_t *context_p) /**< context*/ { @@ -1419,10 +1417,10 @@ ecma_builtin_json_object (ecma_object_t *obj_p, /**< the object*/ /* 1. */ if (ecma_has_object_value_in_collection (context_p->occurence_stack_p, obj_value)) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 2. */ ecma_append_to_values_collection (context_p->occurence_stack_p, obj_value, true); @@ -1473,7 +1471,7 @@ ecma_builtin_json_object (ecma_object_t *obj_p, /**< the object*/ ecma_collection_iterator_t iterator; ecma_collection_iterator_init (&iterator, property_keys_p); - while (ecma_collection_iterator_next (&iterator) && ecma_is_completion_value_empty (ret_value)) + while (ecma_collection_iterator_next (&iterator) && ecma_is_value_empty (ret_value)) { ecma_value_t value = *iterator.current_value_p; ecma_string_t *key_p = ecma_get_string_from_value (value); @@ -1491,14 +1489,14 @@ ecma_builtin_json_object (ecma_object_t *obj_p, /**< the object*/ ecma_string_t *tmp_str_p; /* 8.b.i */ - ecma_completion_value_t str_comp_val = ecma_builtin_json_quote (key_p); - JERRY_ASSERT (ecma_is_completion_value_normal (str_comp_val)); + ecma_value_t str_comp_val = ecma_builtin_json_quote (key_p); + JERRY_ASSERT (!ecma_is_value_error (str_comp_val)); ecma_string_t *member_str_p = ecma_get_string_from_value (str_comp_val); /* 8.b.ii */ tmp_str_p = ecma_concat_ecma_strings (member_str_p, colon_p); - ecma_free_completion_value (str_comp_val); + ecma_free_value (str_comp_val); ecma_deref_ecma_string (colon_p); member_str_p = tmp_str_p; @@ -1534,7 +1532,7 @@ ecma_builtin_json_object (ecma_object_t *obj_p, /**< the object*/ ecma_free_values_collection (property_keys_p, true); } - if (!ecma_is_completion_value_empty (ret_value)) + if (!ecma_is_value_empty (ret_value)) { ecma_free_values_collection (partial_p, true); ecma_deref_ecma_string (stepback_p); @@ -1548,7 +1546,7 @@ ecma_builtin_json_object (ecma_object_t *obj_p, /**< the object*/ ecma_string_t *right_brace_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_RIGHT_BRACE_CHAR); ecma_string_t *final_str_p = ecma_concat_ecma_strings (left_brace_str_p, right_brace_str_p); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (final_str_p)); + ret_value = ecma_make_string_value (final_str_p); ecma_deref_ecma_string (left_brace_str_p); ecma_deref_ecma_string (right_brace_str_p); @@ -1591,7 +1589,7 @@ ecma_builtin_json_object (ecma_object_t *obj_p, /**< the object*/ ecma_free_values_collection (partial_p, true); /* 11. */ - ecma_remove_last_value_from_values_collection (context_p->occurence_stack_p, true); + ecma_remove_last_value_from_values_collection (context_p->occurence_stack_p); /* 12. */ ecma_deref_ecma_string (context_p->indent_str_p); @@ -1607,10 +1605,10 @@ ecma_builtin_json_object (ecma_object_t *obj_p, /**< the object*/ * See also: * ECMA-262 v5, 15.12.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_json_array (ecma_object_t *obj_p, /**< the array object*/ ecma_json_stringify_context_t *context_p) /**< context*/ { @@ -1619,10 +1617,10 @@ ecma_builtin_json_array (ecma_object_t *obj_p, /**< the array object*/ /* 1. */ if (ecma_has_object_value_in_collection (context_p->occurence_stack_p, obj_value)) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 2. */ ecma_append_to_values_collection (context_p->occurence_stack_p, obj_value, true); @@ -1651,7 +1649,7 @@ ecma_builtin_json_array (ecma_object_t *obj_p, /**< the array object*/ /* 7. - 8. */ for (uint32_t index = 0; - index < array_length && ecma_is_completion_value_empty (ret_value); + index < array_length && ecma_is_value_empty (ret_value); index++) { @@ -1679,7 +1677,7 @@ ecma_builtin_json_array (ecma_object_t *obj_p, /**< the array object*/ ecma_deref_ecma_string (index_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 9. */ if (partial_p->unit_number == 0) @@ -1688,7 +1686,7 @@ ecma_builtin_json_array (ecma_object_t *obj_p, /**< the array object*/ ecma_string_t *right_square_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_RIGHT_SQUARE_CHAR); ecma_string_t *final_str_p = ecma_concat_ecma_strings (left_square_str_p, right_square_str_p); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (final_str_p)); + ret_value = ecma_make_string_value (final_str_p); ecma_deref_ecma_string (left_square_str_p); ecma_deref_ecma_string (right_square_str_p); @@ -1735,7 +1733,7 @@ ecma_builtin_json_array (ecma_object_t *obj_p, /**< the array object*/ ecma_free_values_collection (partial_p, true); /* 11. */ - ecma_remove_last_value_from_values_collection (context_p->occurence_stack_p, true); + ecma_remove_last_value_from_values_collection (context_p->occurence_stack_p); /* 12. */ ecma_deref_ecma_string (context_p->indent_str_p); diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-math.c b/jerry-core/ecma/builtin-objects/ecma-builtin-math.c index 1317f78f..78af3754 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-math.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-math.c @@ -1,5 +1,5 @@ /* Copyright 2014-2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -54,14 +54,14 @@ * See also: * ECMA-262 v5, 15.8.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_abs (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); @@ -69,7 +69,7 @@ ecma_builtin_math_object_abs (ecma_value_t this_arg __attr_unused___, /**< 'this *num_p = DOUBLE_TO_ECMA_NUMBER_T (fabs (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); @@ -82,21 +82,21 @@ ecma_builtin_math_object_abs (ecma_value_t this_arg __attr_unused___, /**< 'this * See also: * ECMA-262 v5, 15.8.2.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_acos (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (acos (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); return ret_value; @@ -108,21 +108,21 @@ ecma_builtin_math_object_acos (ecma_value_t this_arg __attr_unused___, /**< 'thi * See also: * ECMA-262 v5, 15.8.2.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_asin (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (asin (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); return ret_value; @@ -134,21 +134,21 @@ ecma_builtin_math_object_asin (ecma_value_t this_arg __attr_unused___, /**< 'thi * See also: * ECMA-262 v5, 15.8.2.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_atan (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (atan (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); return ret_value; @@ -160,15 +160,15 @@ ecma_builtin_math_object_atan (ecma_value_t this_arg __attr_unused___, /**< 'thi * See also: * ECMA-262 v5, 15.8.2.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_atan2 (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg1, /**< first routine's argument */ ecma_value_t arg2) /**< second routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (x, arg1, ret_value); ECMA_OP_TO_NUMBER_TRY_CATCH (y, arg2, ret_value); @@ -176,7 +176,7 @@ ecma_builtin_math_object_atan2 (ecma_value_t this_arg __attr_unused___, /**< 'th ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (atan2 (x, y)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (y); ECMA_OP_TO_NUMBER_FINALIZE (x); @@ -189,20 +189,20 @@ ecma_builtin_math_object_atan2 (ecma_value_t this_arg __attr_unused___, /**< 'th * See also: * ECMA-262 v5, 15.8.2.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_ceil (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (ceil (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); return ret_value; @@ -214,20 +214,20 @@ ecma_builtin_math_object_ceil (ecma_value_t this_arg __attr_unused___, /**< 'thi * See also: * ECMA-262 v5, 15.8.2.7 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_cos (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (cos (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); return ret_value; @@ -239,14 +239,14 @@ ecma_builtin_math_object_cos (ecma_value_t this_arg __attr_unused___, /**< 'this * See also: * ECMA-262 v5, 15.8.2.8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_exp (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); @@ -254,7 +254,7 @@ ecma_builtin_math_object_exp (ecma_value_t this_arg __attr_unused___, /**< 'this *num_p = DOUBLE_TO_ECMA_NUMBER_T (exp (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); @@ -267,20 +267,20 @@ ecma_builtin_math_object_exp (ecma_value_t this_arg __attr_unused___, /**< 'this * See also: * ECMA-262 v5, 15.8.2.9 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_floor (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (floor (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); return ret_value; @@ -292,14 +292,14 @@ ecma_builtin_math_object_floor (ecma_value_t this_arg __attr_unused___, /**< 'th * See also: * ECMA-262 v5, 15.8.2.10 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_log (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); @@ -307,7 +307,7 @@ ecma_builtin_math_object_log (ecma_value_t this_arg __attr_unused___, /**< 'this *num_p = DOUBLE_TO_ECMA_NUMBER_T (log (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); @@ -320,22 +320,22 @@ ecma_builtin_math_object_log (ecma_value_t this_arg __attr_unused___, /**< 'this * See also: * ECMA-262 v5, 15.8.2.11 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_max (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_number_t ret_num = ecma_number_make_infinity (true); bool is_NaN = false; for (ecma_length_t arg_index = 0; - arg_index < args_number && ecma_is_completion_value_empty (ret_value); + arg_index < args_number && ecma_is_value_empty (ret_value); arg_index++) { ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, args[arg_index], ret_value); @@ -386,11 +386,11 @@ ecma_builtin_math_object_max (ecma_value_t this_arg __attr_unused___, /**< 'this ECMA_OP_TO_NUMBER_FINALIZE (arg_num); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_number_t *num_p = ecma_alloc_number (); *num_p = ret_num; - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); } return ret_value; @@ -402,22 +402,22 @@ ecma_builtin_math_object_max (ecma_value_t this_arg __attr_unused___, /**< 'this * See also: * ECMA-262 v5, 15.8.2.12 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_min (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_number_t ret_num = ecma_number_make_infinity (false); bool is_NaN = false; for (ecma_length_t arg_index = 0; - arg_index < args_number && ecma_is_completion_value_empty (ret_value); + arg_index < args_number && ecma_is_value_empty (ret_value); arg_index++) { ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, args[arg_index], ret_value); @@ -468,11 +468,11 @@ ecma_builtin_math_object_min (ecma_value_t this_arg __attr_unused___, /**< 'this ECMA_OP_TO_NUMBER_FINALIZE (arg_num); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_number_t *num_p = ecma_alloc_number (); *num_p = ret_num; - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); } return ret_value; @@ -484,22 +484,22 @@ ecma_builtin_math_object_min (ecma_value_t this_arg __attr_unused___, /**< 'this * See also: * ECMA-262 v5, 15.8.2.13 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_pow (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg1, /**< first routine's argument */ ecma_value_t arg2) /**< second routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (x, arg1, ret_value); ECMA_OP_TO_NUMBER_TRY_CATCH (y, arg2, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (pow (x, y)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (y); ECMA_OP_TO_NUMBER_FINALIZE (x); @@ -513,10 +513,10 @@ ecma_builtin_math_object_pow (ecma_value_t this_arg __attr_unused___, /**< 'this * See also: * ECMA-262 v5, 15.8.2.14 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_random (ecma_value_t this_arg __attr_unused___) /**< 'this' argument */ { uint32_t rnd = 1; @@ -543,7 +543,7 @@ ecma_builtin_math_object_random (ecma_value_t this_arg __attr_unused___) /**< 't ecma_number_t *rand_p = ecma_alloc_number (); *rand_p = rand; - return ecma_make_normal_completion_value (ecma_make_number_value (rand_p)); + return ecma_make_number_value (rand_p); } /* ecma_builtin_math_object_random */ /** @@ -552,14 +552,14 @@ ecma_builtin_math_object_random (ecma_value_t this_arg __attr_unused___) /**< 't * See also: * ECMA-262 v5, 15.8.2.15 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_round (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); @@ -593,7 +593,7 @@ ecma_builtin_math_object_round (ecma_value_t this_arg __attr_unused___, /**< 'th } } - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); @@ -606,20 +606,20 @@ ecma_builtin_math_object_round (ecma_value_t this_arg __attr_unused___, /**< 'th * See also: * ECMA-262 v5, 15.8.2.16 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_sin (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (sin (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); return ret_value; @@ -631,20 +631,20 @@ ecma_builtin_math_object_sin (ecma_value_t this_arg __attr_unused___, /**< 'this * See also: * ECMA-262 v5, 15.8.2.17 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_sqrt (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (sqrt (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); return ret_value; @@ -656,21 +656,21 @@ ecma_builtin_math_object_sqrt (ecma_value_t this_arg __attr_unused___, /**< 'thi * See also: * ECMA-262 v5, 15.8.2.18 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_math_object_tan (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, arg, ret_value); ecma_number_t *num_p = ecma_alloc_number (); *num_p = DOUBLE_TO_ECMA_NUMBER_T (tan (arg_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + ret_value = ecma_make_number_value (num_p); ECMA_OP_TO_NUMBER_FINALIZE (arg_num); return ret_value; diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.c index fdc2dd0e..a3f7118e 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.c @@ -1,5 +1,5 @@ /* Copyright 2014-2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -81,15 +81,15 @@ ecma_builtin_number_prototype_helper_round (uint64_t digits, /**< actual number * See also: * ECMA-262 v5, 15.7.4.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_number_prototype_object_to_string (ecma_value_t this_arg, /**< this argument */ const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (this_value, ecma_builtin_number_prototype_object_value_of (this_arg), ret_value); ecma_number_t this_arg_number = *ecma_get_number_from_value (this_value); @@ -102,7 +102,7 @@ ecma_builtin_number_prototype_object_to_string (ecma_value_t this_arg, /**< this { ecma_string_t *ret_str_p = ecma_new_ecma_string_from_number (this_arg_number); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (ret_str_p)); + ret_value = ecma_make_string_value (ret_str_p); } else { @@ -120,13 +120,13 @@ ecma_builtin_number_prototype_object_to_string (ecma_value_t this_arg, /**< this if (radix < 2 || radix > 36) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_RANGE)); + ret_value = ecma_raise_range_error (""); } else if (radix == 10) { ecma_string_t *ret_str_p = ecma_new_ecma_string_from_number (this_arg_number); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (ret_str_p)); + ret_value = ecma_make_string_value (ret_str_p); } else { @@ -308,7 +308,7 @@ ecma_builtin_number_prototype_object_to_string (ecma_value_t this_arg, /**< this JERRY_ASSERT (buff_index <= buff_size); ecma_string_t *str_p = ecma_new_ecma_string_from_utf8 (buff, (lit_utf8_size_t) buff_index); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (str_p)); + ret_value = ecma_make_string_value (str_p); MEM_FINALIZE_LOCAL_ARRAY (buff); } ECMA_OP_TO_NUMBER_FINALIZE (arg_num); @@ -323,10 +323,10 @@ ecma_builtin_number_prototype_object_to_string (ecma_value_t this_arg, /**< this * See also: * ECMA-262 v5, 15.7.4.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_number_prototype_object_to_locale_string (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_number_prototype_object_to_string (this_arg, NULL, 0); @@ -338,15 +338,15 @@ ecma_builtin_number_prototype_object_to_locale_string (ecma_value_t this_arg) /* * See also: * ECMA-262 v5, 15.7.4.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_number_prototype_object_value_of (ecma_value_t this_arg) /**< this argument */ { if (ecma_is_value_number (this_arg)) { - return ecma_make_normal_completion_value (ecma_copy_value (this_arg, true)); + return ecma_copy_value (this_arg, true); } else if (ecma_is_value_object (this_arg)) { @@ -363,11 +363,11 @@ ecma_builtin_number_prototype_object_value_of (ecma_value_t this_arg) /**< this ecma_number_t *ret_num_p = ecma_alloc_number (); *ret_num_p = *prim_value_num_p; - return ecma_make_normal_completion_value (ecma_make_number_value (ret_num_p)); + return ecma_make_number_value (ret_num_p); } } - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } /* ecma_builtin_number_prototype_object_value_of */ /** @@ -376,14 +376,14 @@ ecma_builtin_number_prototype_object_value_of (ecma_value_t this_arg) /**< this * See also: * ECMA-262 v5, 15.7.4.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_number_prototype_object_to_fixed (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (this_value, ecma_builtin_number_prototype_object_value_of (this_arg), ret_value); ecma_number_t this_num = *ecma_get_number_from_value (this_value); @@ -393,7 +393,7 @@ ecma_builtin_number_prototype_object_to_fixed (ecma_value_t this_arg, /**< this /* 2. */ if (arg_num <= -1 || arg_num >= 21) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_RANGE)); + ret_value = ecma_raise_range_error (""); } else { @@ -401,7 +401,7 @@ ecma_builtin_number_prototype_object_to_fixed (ecma_value_t this_arg, /**< this if (ecma_number_is_nan (this_num)) { ecma_string_t *nan_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_NAN); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (nan_str_p)); + ret_value = ecma_make_string_value (nan_str_p); } else { @@ -425,11 +425,11 @@ ecma_builtin_number_prototype_object_to_fixed (ecma_value_t this_arg, /**< this ecma_string_t *neg_inf_str_p = ecma_concat_ecma_strings (neg_str_p, infinity_str_p); ecma_deref_ecma_string (infinity_str_p); ecma_deref_ecma_string (neg_str_p); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (neg_inf_str_p)); + ret_value = ecma_make_string_value (neg_inf_str_p); } else { - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (infinity_str_p)); + ret_value = ecma_make_string_value (infinity_str_p); } } else @@ -561,7 +561,7 @@ ecma_builtin_number_prototype_object_to_fixed (ecma_value_t this_arg, /**< this *p = 0; ecma_string_t *str = ecma_new_ecma_string_from_utf8 (buff, (lit_utf8_size_t) (p - buff)); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (str)); + ret_value = ecma_make_string_value (str); MEM_FINALIZE_LOCAL_ARRAY (buff); } } @@ -579,14 +579,14 @@ ecma_builtin_number_prototype_object_to_fixed (ecma_value_t this_arg, /**< this * See also: * ECMA-262 v5, 15.7.4.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_number_prototype_object_to_exponential (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_value, ecma_builtin_number_prototype_object_value_of (this_arg), ret_value); @@ -597,7 +597,7 @@ ecma_builtin_number_prototype_object_to_exponential (ecma_value_t this_arg, /**< /* 7. */ if (arg_num <= -1.0 || arg_num >= 21.0) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_RANGE)); + ret_value = ecma_raise_range_error (""); } else { @@ -605,7 +605,7 @@ ecma_builtin_number_prototype_object_to_exponential (ecma_value_t this_arg, /**< if (ecma_number_is_nan (this_num)) { ecma_string_t *nan_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_NAN); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (nan_str_p)); + ret_value = ecma_make_string_value (nan_str_p); } else { @@ -629,11 +629,11 @@ ecma_builtin_number_prototype_object_to_exponential (ecma_value_t this_arg, /**< ecma_string_t *neg_inf_str_p = ecma_concat_ecma_strings (neg_str_p, infinity_str_p); ecma_deref_ecma_string (infinity_str_p); ecma_deref_ecma_string (neg_str_p); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (neg_inf_str_p)); + ret_value = ecma_make_string_value (neg_inf_str_p); } else { - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (infinity_str_p)); + ret_value = ecma_make_string_value (infinity_str_p); } } else @@ -747,7 +747,7 @@ ecma_builtin_number_prototype_object_to_exponential (ecma_value_t this_arg, /**< JERRY_ASSERT (actual_char_p - buff < buffer_size); *actual_char_p = '\0'; ecma_string_t *str = ecma_new_ecma_string_from_utf8 (buff, (lit_utf8_size_t) (actual_char_p - buff)); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (str)); + ret_value = ecma_make_string_value (str); MEM_FINALIZE_LOCAL_ARRAY (buff); } } @@ -764,14 +764,14 @@ ecma_builtin_number_prototype_object_to_exponential (ecma_value_t this_arg, /**< * See also: * ECMA-262 v5, 15.7.4.7 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_number_prototype_object_to_precision (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_value, ecma_builtin_number_prototype_object_value_of (this_arg), ret_value); @@ -791,7 +791,7 @@ ecma_builtin_number_prototype_object_to_precision (ecma_value_t this_arg, /**< t if (ecma_number_is_nan (this_num)) { ecma_string_t *nan_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_NAN); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (nan_str_p)); + ret_value = ecma_make_string_value (nan_str_p); } else { @@ -815,17 +815,17 @@ ecma_builtin_number_prototype_object_to_precision (ecma_value_t this_arg, /**< t ecma_string_t *neg_inf_str_p = ecma_concat_ecma_strings (neg_str_p, infinity_str_p); ecma_deref_ecma_string (infinity_str_p); ecma_deref_ecma_string (neg_str_p); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (neg_inf_str_p)); + ret_value = ecma_make_string_value (neg_inf_str_p); } else { - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (infinity_str_p)); + ret_value = ecma_make_string_value (infinity_str_p); } } /* 8. */ else if (arg_num < 1.0 || arg_num >= 22.0) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_RANGE)); + ret_value = ecma_raise_range_error (""); } else { @@ -980,7 +980,7 @@ ecma_builtin_number_prototype_object_to_precision (ecma_value_t this_arg, /**< t *actual_char_p = '\0'; ecma_string_t *str_p = ecma_new_ecma_string_from_utf8 (buff, (lit_utf8_size_t) (actual_char_p - buff)); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (str_p)); + ret_value = ecma_make_string_value (str_p); MEM_FINALIZE_LOCAL_ARRAY (buff); } } diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-number.c b/jerry-core/ecma/builtin-objects/ecma-builtin-number.c index 835277c3..c3f4a4a8 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-number.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-number.c @@ -47,22 +47,22 @@ /** * Handle calling [[Call]] of built-in Number object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_number_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (arguments_list_len == 0) { ecma_number_t *zero_num_p = ecma_alloc_number (); *zero_num_p = ECMA_NUMBER_ZERO; - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (zero_num_p)); + ret_value = ecma_make_number_value (zero_num_p); } else { @@ -75,9 +75,9 @@ ecma_builtin_number_dispatch_call (const ecma_value_t *arguments_list_p, /**< ar /** * Handle calling [[Construct]] of built-in Number object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_number_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -88,7 +88,7 @@ ecma_builtin_number_dispatch_construct (const ecma_value_t *arguments_list_p, /* ecma_number_t *zero_num_p = ecma_alloc_number (); *zero_num_p = ECMA_NUMBER_ZERO; - ecma_completion_value_t completion = ecma_op_create_number_object (ecma_make_number_value (zero_num_p)); + ecma_value_t completion = ecma_op_create_number_object (ecma_make_number_value (zero_num_p)); ecma_dealloc_number (zero_num_p); diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-object-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-object-prototype.c index b9e9f756..7563480e 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-object-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-object-prototype.c @@ -1,5 +1,5 @@ /* Copyright 2014-2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,10 +51,10 @@ * See also: * ECMA-262 v5, 15.2.4.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_prototype_object_to_string (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_helper_object_to_string (this_arg); @@ -66,10 +66,10 @@ ecma_builtin_object_prototype_object_to_string (ecma_value_t this_arg) /**< this * See also: * ECMA-262 v5, 15.2.4.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_prototype_object_value_of (ecma_value_t this_arg) /**< this argument */ { return ecma_op_to_object (this_arg); @@ -81,13 +81,13 @@ ecma_builtin_object_prototype_object_value_of (ecma_value_t this_arg) /**< this * See also: * ECMA-262 v5, 15.2.4.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_prototype_object_to_locale_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t return_value = ecma_make_empty_completion_value (); + ecma_value_t return_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (obj_val, ecma_op_to_object (this_arg), @@ -104,7 +104,7 @@ ecma_builtin_object_prototype_object_to_locale_string (ecma_value_t this_arg) /* /* 3. */ if (!ecma_op_is_callable (to_string_val)) { - return_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return_value = ecma_raise_type_error (""); } else { @@ -127,14 +127,14 @@ ecma_builtin_object_prototype_object_to_locale_string (ecma_value_t this_arg) /* * See also: * ECMA-262 v5, 15.2.4.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_prototype_object_has_own_property (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< first argument */ { - ecma_completion_value_t return_value = ecma_make_empty_completion_value (); + ecma_value_t return_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (to_string_val, @@ -155,11 +155,11 @@ ecma_builtin_object_prototype_object_has_own_property (ecma_value_t this_arg, /* if (property_p != NULL) { - return_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + return_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } else { - return_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + return_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } ECMA_FINALIZE (obj_val); @@ -174,20 +174,20 @@ ecma_builtin_object_prototype_object_has_own_property (ecma_value_t this_arg, /* * See also: * ECMA-262 v5, 15.2.4.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_prototype_object_is_prototype_of (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's first argument */ { /* 1. Is the argument an object? */ if (!ecma_is_value_object (arg)) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } - ecma_completion_value_t return_value = ecma_make_empty_completion_value (); + ecma_value_t return_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 2. ToObject(this) */ ECMA_TRY_CATCH (obj_value, @@ -204,9 +204,8 @@ ecma_builtin_object_prototype_object_is_prototype_of (ecma_value_t this_arg, /** ecma_object_t *v_obj_p = ecma_get_object_from_value (v_obj_value); bool is_prototype_of = ecma_op_object_is_prototype_of (obj_p, v_obj_p); - return_value = ecma_make_simple_completion_value (is_prototype_of - ? ECMA_SIMPLE_VALUE_TRUE - : ECMA_SIMPLE_VALUE_FALSE); + return_value = ecma_make_simple_value (is_prototype_of ? ECMA_SIMPLE_VALUE_TRUE + : ECMA_SIMPLE_VALUE_FALSE); ECMA_FINALIZE (v_obj_value); ECMA_FINALIZE (obj_value); @@ -220,14 +219,14 @@ ecma_builtin_object_prototype_object_is_prototype_of (ecma_value_t this_arg, /** * See also: * ECMA-262 v5, 15.2.4.7 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_prototype_object_property_is_enumerable (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's first argument */ { - ecma_completion_value_t return_value = ecma_make_empty_completion_value (); + ecma_value_t return_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (to_string_val, @@ -251,13 +250,12 @@ ecma_builtin_object_prototype_object_property_is_enumerable (ecma_value_t this_a { bool is_enumerable = ecma_is_property_enumerable (property_p); - return_value = ecma_make_simple_completion_value (is_enumerable - ? ECMA_SIMPLE_VALUE_TRUE - : ECMA_SIMPLE_VALUE_FALSE); + return_value = ecma_make_simple_value (is_enumerable ? ECMA_SIMPLE_VALUE_TRUE + : ECMA_SIMPLE_VALUE_FALSE); } else { - return_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + return_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } ECMA_FINALIZE (obj_val); diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-object.c b/jerry-core/ecma/builtin-objects/ecma-builtin-object.c index d73bde3d..dfd31ec7 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-object.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-object.c @@ -1,5 +1,5 @@ /* Copyright 2014-2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,15 +48,15 @@ /** * Handle calling [[Call]] of built-in Object object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_object_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (arguments_list_len == 0 || ecma_is_value_undefined (arguments_list_p[0]) @@ -75,9 +75,9 @@ ecma_builtin_object_dispatch_call (const ecma_value_t *arguments_list_p, /**< ar /** * Handle calling [[Construct]] of built-in Object object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_object_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -87,20 +87,11 @@ ecma_builtin_object_dispatch_construct (const ecma_value_t *arguments_list_p, /* { ecma_object_t *obj_p = ecma_op_create_object_object_noarg (); - return ecma_make_normal_completion_value (ecma_make_object_value (obj_p)); + return ecma_make_object_value (obj_p); } else { - ecma_completion_value_t new_obj_value = ecma_op_create_object_object_arg (arguments_list_p[0]); - - if (!ecma_is_completion_value_normal (new_obj_value)) - { - return new_obj_value; - } - else - { - return ecma_make_normal_completion_value (ecma_get_completion_value_value (new_obj_value)); - } + return ecma_op_create_object_object_arg (arguments_list_p[0]); } } /* ecma_builtin_object_dispatch_construct */ @@ -110,19 +101,19 @@ ecma_builtin_object_dispatch_construct (const ecma_value_t *arguments_list_p, /* * See also: * ECMA-262 v5, 15.2.3.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_get_prototype_of (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ if (!ecma_is_value_object (arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -132,12 +123,12 @@ ecma_builtin_object_object_get_prototype_of (ecma_value_t this_arg __attr_unused if (prototype_p) { - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (prototype_p)); + ret_value = ecma_make_object_value (prototype_p); ecma_ref_object (prototype_p); } else { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_NULL); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_NULL); } } @@ -150,19 +141,19 @@ ecma_builtin_object_object_get_prototype_of (ecma_value_t this_arg __attr_unused * See also: * ECMA-262 v5, 15.2.3.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_get_own_property_names (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (arg)) { /* 1. */ - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -180,19 +171,19 @@ ecma_builtin_object_object_get_own_property_names (ecma_value_t this_arg __attr_ * See also: * ECMA-262 v5, 15.2.3.8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_seal (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 1. if (!ecma_is_value_object (arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -205,7 +196,7 @@ ecma_builtin_object_object_seal (ecma_value_t this_arg __attr_unused___, /**< 't ecma_collection_iterator_init (&iter, props_p); while (ecma_collection_iterator_next (&iter) - && ecma_is_completion_value_empty (ret_value)) + && ecma_is_value_empty (ret_value)) { ecma_string_t *property_name_p = ecma_get_string_from_value (*iter.current_value_p); ecma_property_t *property_p = ecma_op_object_get_own_property (obj_p, property_name_p); @@ -233,13 +224,13 @@ ecma_builtin_object_object_seal (ecma_value_t this_arg __attr_unused___, /**< 't ecma_free_values_collection (props_p, true); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { // 3. ecma_set_object_extensible (obj_p, false); // 4. - ret_value = ecma_make_normal_completion_value (ecma_copy_value (arg, true)); + ret_value = ecma_copy_value (arg, true); } } @@ -252,19 +243,19 @@ ecma_builtin_object_object_seal (ecma_value_t this_arg __attr_unused___, /**< 't * See also: * ECMA-262 v5, 15.2.3.9 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_freeze (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 1. if (!ecma_is_value_object (arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -278,7 +269,7 @@ ecma_builtin_object_object_freeze (ecma_value_t this_arg __attr_unused___, /**< ecma_collection_iterator_init (&iter, props_p); while (ecma_collection_iterator_next (&iter) - && ecma_is_completion_value_empty (ret_value)) + && ecma_is_value_empty (ret_value)) { ecma_string_t *property_name_p = ecma_get_string_from_value (*iter.current_value_p); ecma_property_t *property_p = ecma_op_object_get_own_property (obj_p, property_name_p); @@ -312,13 +303,13 @@ ecma_builtin_object_object_freeze (ecma_value_t this_arg __attr_unused___, /**< ecma_free_values_collection (props_p, true); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { // 3. ecma_set_object_extensible (obj_p, false); // 4. - ret_value = ecma_make_normal_completion_value (ecma_copy_value (arg, true)); + ret_value = ecma_copy_value (arg, true); } } @@ -331,25 +322,25 @@ ecma_builtin_object_object_freeze (ecma_value_t this_arg __attr_unused___, /**< * See also: * ECMA-262 v5, 15.2.3.10 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_prevent_extensions (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { ecma_object_t *obj_p = ecma_get_object_from_value (arg); ecma_set_object_extensible (obj_p, false); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (arg, true)); + ret_value = ecma_copy_value (arg, true); } return ret_value; @@ -361,19 +352,19 @@ ecma_builtin_object_object_prevent_extensions (ecma_value_t this_arg __attr_unus * See also: * ECMA-262 v5, 15.2.3.11 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_is_sealed (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 1. if (!ecma_is_value_object (arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -416,9 +407,8 @@ ecma_builtin_object_object_is_sealed (ecma_value_t this_arg __attr_unused___, /* } // 4. - ret_value = ecma_make_simple_completion_value (is_sealed - ? ECMA_SIMPLE_VALUE_TRUE - : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_sealed ? ECMA_SIMPLE_VALUE_TRUE + : ECMA_SIMPLE_VALUE_FALSE); } return ret_value; @@ -430,19 +420,19 @@ ecma_builtin_object_object_is_sealed (ecma_value_t this_arg __attr_unused___, /* * See also: * ECMA-262 v5, 15.2.3.12 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_is_frozen (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 1. if (!ecma_is_value_object (arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -493,9 +483,8 @@ ecma_builtin_object_object_is_frozen (ecma_value_t this_arg __attr_unused___, /* } // 4. - ret_value = ecma_make_simple_completion_value (is_frozen - ? ECMA_SIMPLE_VALUE_TRUE - : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_frozen ? ECMA_SIMPLE_VALUE_TRUE + : ECMA_SIMPLE_VALUE_FALSE); } return ret_value; @@ -507,18 +496,18 @@ ecma_builtin_object_object_is_frozen (ecma_value_t this_arg __attr_unused___, /* * See also: * ECMA-262 v5, 15.2.3.13 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_is_extensible (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (arg)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -526,8 +515,7 @@ ecma_builtin_object_object_is_extensible (ecma_value_t this_arg __attr_unused___ bool extensible = ecma_get_object_extensible (obj_p); - ret_value = ecma_make_simple_completion_value (extensible - ? ECMA_SIMPLE_VALUE_TRUE + ret_value = ecma_make_simple_value (extensible ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); } @@ -540,19 +528,19 @@ ecma_builtin_object_object_is_extensible (ecma_value_t this_arg __attr_unused___ * See also: * ECMA-262 v5, 15.2.3.14 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_keys (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (arg)) { /* 1. */ - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -570,20 +558,20 @@ ecma_builtin_object_object_keys (ecma_value_t this_arg __attr_unused___, /**< 't * See also: * ECMA-262 v5, 15.2.3.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_get_own_property_descriptor (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg1, /**< routine's first argument */ ecma_value_t arg2) /**< routine's second argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 1. if (!ecma_is_value_object (arg1)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); return ret_value; } @@ -608,11 +596,11 @@ ecma_builtin_object_object_get_own_property_descriptor (ecma_value_t this_arg __ ecma_free_property_descriptor (&prop_desc); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (desc_obj_p)); + ret_value = ecma_make_object_value (desc_obj_p); } else { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } ECMA_FINALIZE (name_str_value); @@ -626,20 +614,20 @@ ecma_builtin_object_object_get_own_property_descriptor (ecma_value_t this_arg __ * See also: * ECMA-262 v5, 15.2.3.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_create (ecma_value_t this_arg, /**< 'this' argument */ ecma_value_t arg1, /**< routine's first argument */ ecma_value_t arg2) /**< routine's second argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 1. if (!ecma_is_value_object (arg1) && !ecma_is_value_null (arg1)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -664,10 +652,9 @@ ecma_builtin_object_object_create (ecma_value_t this_arg, /**< 'this' argument * } // 5. - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_copy_value (ecma_make_object_value (result_obj_p), - true)); + ret_value = ecma_copy_value (ecma_make_object_value (result_obj_p), true); } ecma_deref_object (result_obj_p); @@ -682,20 +669,20 @@ ecma_builtin_object_object_create (ecma_value_t this_arg, /**< 'this' argument * * See also: * ECMA-262 v5, 15.2.3.7 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_define_properties (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg1, /**< routine's first argument */ ecma_value_t arg2) /**< routine's second argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 1. if (!ecma_is_value_object (arg1)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -720,7 +707,7 @@ ecma_builtin_object_object_define_properties (ecma_value_t this_arg __attr_unuse uint32_t property_descriptor_number = 0; while (ecma_collection_iterator_next (&iter) - && ecma_is_completion_value_empty (ret_value)) + && ecma_is_value_empty (ret_value)) { // 5.a ECMA_TRY_CATCH (desc_obj, @@ -742,7 +729,7 @@ ecma_builtin_object_object_define_properties (ecma_value_t this_arg __attr_unuse // 6. ecma_collection_iterator_init (&iter, prop_names_p); for (uint32_t index = 0; - index < property_number && ecma_is_completion_value_empty (ret_value); + index < property_number && ecma_is_value_empty (ret_value); index++) { bool is_next = ecma_collection_iterator_next (&iter); @@ -771,9 +758,9 @@ ecma_builtin_object_object_define_properties (ecma_value_t this_arg __attr_unuse ecma_free_values_collection (prop_names_p, true); // 7. - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_copy_value (arg1, true)); + ret_value = ecma_copy_value (arg1, true); } ECMA_FINALIZE (props); @@ -788,20 +775,20 @@ ecma_builtin_object_object_define_properties (ecma_value_t this_arg __attr_unuse * See also: * ECMA-262 v5, 15.2.3.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_object_object_define_property (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ ecma_value_t arg1, /**< routine's first argument */ ecma_value_t arg2, /**< routine's second argument */ ecma_value_t arg3) /**< routine's third argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (arg1)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -826,7 +813,7 @@ ecma_builtin_object_object_define_property (ecma_value_t this_arg __attr_unused_ true), ret_value); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (arg1, true)); + ret_value = ecma_copy_value (arg1, true); ECMA_FINALIZE (define_own_prop_ret); ecma_free_property_descriptor (&prop_desc); diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.c b/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.c index 9723ff95..6530d905 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.c @@ -46,9 +46,9 @@ /** * Handle calling [[Call]] of built-in RangeError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_range_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -57,7 +57,7 @@ ecma_builtin_range_error_dispatch_call (const ecma_value_t *arguments_list_p, /* if (arguments_list_len != 0 && !ecma_is_value_undefined (arguments_list_p[0])) { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (msg_str_value, ecma_op_to_string (arguments_list_p[0]), @@ -66,7 +66,7 @@ ecma_builtin_range_error_dispatch_call (const ecma_value_t *arguments_list_p, /* ecma_string_t *message_string_p = ecma_get_string_from_value (msg_str_value); ecma_object_t *new_error_object_p = ecma_new_standard_error_with_message (ECMA_ERROR_RANGE, message_string_p); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + ret_value = ecma_make_object_value (new_error_object_p); ECMA_FINALIZE (msg_str_value); @@ -76,16 +76,16 @@ ecma_builtin_range_error_dispatch_call (const ecma_value_t *arguments_list_p, /* { ecma_object_t *new_error_object_p = ecma_new_standard_error (ECMA_ERROR_RANGE); - return ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + return ecma_make_object_value (new_error_object_p); } } /* ecma_builtin_range_error_dispatch_call */ /** * Handle calling [[Construct]] of built-in RangeError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_range_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.c b/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.c index d8bc2261..294f078e 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.c @@ -46,9 +46,9 @@ /** * Handle calling [[Call]] of built-in ReferenceError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_reference_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -57,7 +57,7 @@ ecma_builtin_reference_error_dispatch_call (const ecma_value_t *arguments_list_p if (arguments_list_len != 0 && !ecma_is_value_undefined (arguments_list_p[0])) { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (msg_str_value, ecma_op_to_string (arguments_list_p[0]), @@ -66,7 +66,7 @@ ecma_builtin_reference_error_dispatch_call (const ecma_value_t *arguments_list_p ecma_string_t *message_string_p = ecma_get_string_from_value (msg_str_value); ecma_object_t *new_error_object_p = ecma_new_standard_error_with_message (ECMA_ERROR_REFERENCE, message_string_p); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + ret_value = ecma_make_object_value (new_error_object_p); ECMA_FINALIZE (msg_str_value); @@ -76,16 +76,16 @@ ecma_builtin_reference_error_dispatch_call (const ecma_value_t *arguments_list_p { ecma_object_t *new_error_object_p = ecma_new_standard_error (ECMA_ERROR_REFERENCE); - return ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + return ecma_make_object_value (new_error_object_p); } } /* ecma_builtin_reference_error_dispatch_call */ /** * Handle calling [[Construct]] of built-in ReferenceError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_reference_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp-prototype.c index 35c1bbb9..d8ab76db 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp-prototype.c @@ -53,15 +53,15 @@ * See also: * ECMA-262 v5, B.2.5.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_regexp_prototype_compile (ecma_value_t this_arg, /**< this argument */ ecma_value_t pattern_arg, /**< pattern or RegExp object */ ecma_value_t flags_arg) /**< flags */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (this_arg) || ecma_object_get_class_name (ecma_get_object_from_value (this_arg)) != LIT_MAGIC_STRING_REGEXP_UL) @@ -131,9 +131,9 @@ ecma_builtin_regexp_prototype_compile (ecma_value_t this_arg, /**< this argument * we can't copy it without knowing its length." */ re_compiled_code_t *new_bc_p = NULL; - ecma_completion_value_t bc_comp = re_compile_bytecode (&new_bc_p, pattern_string_p, flags); + ecma_value_t bc_comp = re_compile_bytecode (&new_bc_p, pattern_string_p, flags); /* Should always succeed, since we're compiling from a source that has been compiled previously. */ - JERRY_ASSERT (ecma_is_completion_value_empty (bc_comp)); + JERRY_ASSERT (ecma_is_value_empty (bc_comp)); re_compiled_code_t *old_bc_p = ECMA_GET_POINTER (re_compiled_code_t, bc_prop_p->u.internal_property.value); @@ -147,7 +147,7 @@ ecma_builtin_regexp_prototype_compile (ecma_value_t this_arg, /**< this argument re_initialize_props (this_obj_p, pattern_string_p, flags); - ret_value = ecma_make_normal_completion_value (ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED)); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); ECMA_FINALIZE (obj_this); } @@ -178,7 +178,7 @@ ecma_builtin_regexp_prototype_compile (ecma_value_t this_arg, /**< this argument } /* Parse flags. */ - if (ecma_is_completion_value_empty (ret_value) && !ecma_is_value_undefined (flags_arg)) + if (ecma_is_value_empty (ret_value) && !ecma_is_value_undefined (flags_arg)) { ECMA_TRY_CATCH (flags_str_value, ecma_op_to_string (flags_arg), @@ -191,7 +191,7 @@ ecma_builtin_regexp_prototype_compile (ecma_value_t this_arg, /**< this argument ECMA_FINALIZE (flags_str_value); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (obj_this, ecma_op_to_object (this_arg), ret_value); ecma_object_t *this_obj_p = ecma_get_object_from_value (obj_this); @@ -215,7 +215,7 @@ ecma_builtin_regexp_prototype_compile (ecma_value_t this_arg, /**< this argument ECMA_SET_POINTER (bc_prop_p->u.internal_property.value, new_bc_p); re_initialize_props (this_obj_p, pattern_string_p, flags); - ret_value = ecma_make_normal_completion_value (ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED)); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); ECMA_FINALIZE (bc_dummy); @@ -240,14 +240,14 @@ ecma_builtin_regexp_prototype_compile (ecma_value_t this_arg, /**< this argument * See also: * ECMA-262 v5, 15.10.6.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_regexp_prototype_exec (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (this_arg) || ecma_object_get_class_name (ecma_get_object_from_value (this_arg)) != LIT_MAGIC_STRING_REGEXP_UL) @@ -271,8 +271,8 @@ ecma_builtin_regexp_prototype_exec (ecma_value_t this_arg, /**< this argument */ if (bytecode_p == NULL) { /* Missing bytecode means empty RegExp: '/(?:)/', so always return empty string. */ - ecma_completion_value_t result_array = ecma_op_create_array_object (0, 0, false); - ecma_object_t *result_array_obj_p = ecma_get_object_from_completion_value (result_array); + ecma_value_t result_array = ecma_op_create_array_object (0, 0, false); + ecma_object_t *result_array_obj_p = ecma_get_object_from_value (result_array); ecma_string_t *input_str_p = ecma_get_string_from_value (input_str_value); re_set_result_array_properties (result_array_obj_p, input_str_p, @@ -314,14 +314,14 @@ ecma_builtin_regexp_prototype_exec (ecma_value_t this_arg, /**< this argument */ * See also: * ECMA-262 v5, 15.10.6.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_regexp_prototype_test (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (match_value, ecma_builtin_regexp_prototype_exec (this_arg, arg), @@ -329,11 +329,11 @@ ecma_builtin_regexp_prototype_test (ecma_value_t this_arg, /**< this argument */ if (ecma_is_value_null (match_value)) { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } else { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } ECMA_FINALIZE (match_value); @@ -347,13 +347,13 @@ ecma_builtin_regexp_prototype_test (ecma_value_t this_arg, /**< this argument */ * See also: * ECMA-262 v5, 15.10.6.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_regexp_prototype_to_string (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (this_arg) || ecma_object_get_class_name (ecma_get_object_from_value (this_arg)) != LIT_MAGIC_STRING_REGEXP_UL) @@ -425,7 +425,7 @@ ecma_builtin_regexp_prototype_to_string (ecma_value_t this_arg) /**< this argume output_str_p = concat_p; } - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (output_str_p)); + ret_value = ecma_make_string_value (output_str_p); ECMA_FINALIZE (obj_this); } diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.c b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.c index 4bfed938..bcc0ac18 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.c @@ -1,5 +1,5 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -45,9 +45,9 @@ /** * Handle calling [[Call]] of built-in RegExp object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_regexp_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -57,13 +57,13 @@ ecma_builtin_regexp_dispatch_call (const ecma_value_t *arguments_list_p, /**< ar /** * Handle calling [[Construct]] of built-in RegExp object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_regexp_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_value_t pattern_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); ecma_value_t flags_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); @@ -83,7 +83,7 @@ ecma_builtin_regexp_dispatch_construct (const ecma_value_t *arguments_list_p, /* { if (ecma_is_value_undefined (flags_value)) { - ret_value = ecma_make_normal_completion_value (ecma_copy_value (pattern_value, true)); + ret_value = ecma_copy_value (pattern_value, true); } else { @@ -117,7 +117,7 @@ ecma_builtin_regexp_dispatch_construct (const ecma_value_t *arguments_list_p, /* pattern_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_EMPTY_NON_CAPTURE_GROUP); } - if (ecma_is_completion_value_empty (ret_value) && !ecma_is_value_undefined (flags_value)) + if (ecma_is_value_empty (ret_value) && !ecma_is_value_undefined (flags_value)) { ECMA_TRY_CATCH (flags_str_value, ecma_op_to_string (flags_value), @@ -127,7 +127,7 @@ ecma_builtin_regexp_dispatch_construct (const ecma_value_t *arguments_list_p, /* ECMA_FINALIZE (flags_str_value); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ret_value = ecma_op_create_regexp_object (pattern_string_p, flags_string_p); } diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-string-prototype.c b/jerry-core/ecma/builtin-objects/ecma-builtin-string-prototype.c index b92c1328..b34b1417 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-string-prototype.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-string-prototype.c @@ -1,5 +1,5 @@ /* Copyright 2014-2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -60,15 +60,15 @@ * See also: * ECMA-262 v5, 15.5.4.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_to_string (ecma_value_t this_arg) /**< this argument */ { if (ecma_is_value_string (this_arg)) { - return ecma_make_normal_completion_value (ecma_copy_value (this_arg, true)); + return ecma_copy_value (this_arg, true); } else if (ecma_is_value_object (this_arg)) { @@ -84,11 +84,11 @@ ecma_builtin_string_prototype_object_to_string (ecma_value_t this_arg) /**< this prim_value_str_p = ecma_copy_or_ref_ecma_string (prim_value_str_p); - return ecma_make_normal_completion_value (ecma_make_string_value (prim_value_str_p)); + return ecma_make_string_value (prim_value_str_p); } } - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } /* ecma_builtin_string_prototype_object_to_string */ /** @@ -97,10 +97,10 @@ ecma_builtin_string_prototype_object_to_string (ecma_value_t this_arg) /**< this * See also: * ECMA-262 v5, 15.5.4.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_value_of (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_string_prototype_object_to_string (this_arg); @@ -112,14 +112,14 @@ ecma_builtin_string_prototype_object_value_of (ecma_value_t this_arg) /**< this * See also: * ECMA-262 v5, 15.5.4.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_char_at (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1 */ ECMA_TRY_CATCH (check_coercible_val, @@ -143,15 +143,13 @@ ecma_builtin_string_prototype_object_char_at (ecma_value_t this_arg, /**< this a /* 5 */ if (index_num < 0 || index_num >= len || !len) { - ret_value = ecma_make_normal_completion_value (ecma_make_string_value ( - ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY))); + ret_value = ecma_make_string_value (ecma_get_magic_string (LIT_MAGIC_STRING__EMPTY)); } else { /* 6 */ ecma_char_t new_ecma_char = ecma_string_get_char_at_pos (original_string_p, ecma_number_to_uint32 (index_num)); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value ( - ecma_new_ecma_string_from_code_unit (new_ecma_char))); + ret_value = ecma_make_string_value (ecma_new_ecma_string_from_code_unit (new_ecma_char)); } ECMA_OP_TO_NUMBER_FINALIZE (index_num); @@ -168,14 +166,14 @@ ecma_builtin_string_prototype_object_char_at (ecma_value_t this_arg, /**< this a * See also: * ECMA-262 v5, 15.5.4.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_char_code_at (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1 */ ECMA_TRY_CATCH (check_coercible_val, @@ -220,7 +218,7 @@ ecma_builtin_string_prototype_object_char_code_at (ecma_value_t this_arg, /**< t } ecma_value_t new_value = ecma_make_number_value (ret_num_p); - ret_value = ecma_make_normal_completion_value (new_value); + ret_value = new_value; ECMA_OP_TO_NUMBER_FINALIZE (index_num); @@ -236,15 +234,15 @@ ecma_builtin_string_prototype_object_char_code_at (ecma_value_t this_arg, /**< t * See also: * ECMA-262 v5, 15.5.4.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_concat (ecma_value_t this_arg, /**< this argument */ const ecma_value_t *argument_list_p, /**< arguments list */ ecma_length_t arguments_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1 */ ECMA_TRY_CATCH (check_coercible_val, @@ -264,7 +262,7 @@ ecma_builtin_string_prototype_object_concat (ecma_value_t this_arg, /**< this ar /* 5 */ for (uint32_t arg_index = 0; - arg_index < arguments_number && ecma_is_completion_value_empty (ret_value); + arg_index < arguments_number && ecma_is_value_empty (ret_value); ++arg_index) { /* 5a */ @@ -283,9 +281,9 @@ ecma_builtin_string_prototype_object_concat (ecma_value_t this_arg, /**< this ar } /* 6 */ - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (string_to_return)); + ret_value = ecma_make_string_value (string_to_return); } else { @@ -304,10 +302,10 @@ ecma_builtin_string_prototype_object_concat (ecma_value_t this_arg, /**< this ar * See also: * ECMA-262 v5, 15.5.4.7 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_index_of (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< routine's first argument */ ecma_value_t arg2) /**< routine's second argument */ @@ -321,10 +319,10 @@ ecma_builtin_string_prototype_object_index_of (ecma_value_t this_arg, /**< this * See also: * ECMA-262 v5, 15.5.4.8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_last_index_of (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< routine's first argument */ ecma_value_t arg2) /**< routine's second argument */ @@ -338,14 +336,14 @@ ecma_builtin_string_prototype_object_last_index_of (ecma_value_t this_arg, /**< * See also: * ECMA-262 v5, 15.5.4.9 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_locale_compare (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_check_coercible_val, @@ -380,7 +378,7 @@ ecma_builtin_string_prototype_object_locale_compare (ecma_value_t this_arg, /**< *result_p = ecma_int32_to_number (0); } - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (result_p)); + ret_value = ecma_make_number_value (result_p); ECMA_FINALIZE (arg_to_string_val); ECMA_FINALIZE (this_to_string_val); @@ -397,14 +395,14 @@ ecma_builtin_string_prototype_object_locale_compare (ecma_value_t this_arg, /**< * See also: * ECMA-262 v5, 15.5.4.10 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_check_coercible_value, @@ -436,7 +434,7 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg ECMA_FINALIZE (new_regexp_value); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { JERRY_ASSERT (!ecma_is_value_empty (regexp_value)); ecma_object_t *regexp_obj_p = ecma_get_object_from_value (regexp_value); @@ -449,7 +447,7 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg JERRY_ASSERT (ecma_is_value_boolean (global_value)); - if (!ecma_is_value_true (global_value)) + if (ecma_is_value_false (global_value)) { /* 7. */ ret_value = ecma_regexp_exec_helper (regexp_value, this_to_string_value, false); @@ -485,10 +483,8 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg /* 8.e. */ bool last_match = true; - //ecma_completion_value_t exec_result = ecma_make_empty_completion_value (); - /* 8.f. */ - while (last_match && ecma_is_completion_value_empty (ret_value)) + while (last_match && ecma_is_value_empty (ret_value)) { /* 8.f.i. */ ECMA_TRY_CATCH (exec_value, @@ -539,7 +535,7 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg previous_last_index = this_index; } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 8.f.iii.4. */ JERRY_ASSERT (ecma_is_value_object (exec_value)); @@ -552,15 +548,15 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg ecma_string_t *current_index_str_p = ecma_new_ecma_string_from_uint32 (n); /* 8.f.iii.5. */ - ecma_completion_value_t completion = ecma_builtin_helper_def_prop (new_array_obj_p, - current_index_str_p, - match_string_value, - true, /* Writable */ - true, /* Enumerable */ - true, /* Configurable */ - false); /* Failure handling */ + ecma_value_t completion = ecma_builtin_helper_def_prop (new_array_obj_p, + current_index_str_p, + match_string_value, + true, /* Writable */ + true, /* Enumerable */ + true, /* Configurable */ + false); /* Failure handling */ - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); ecma_deref_ecma_string (current_index_str_p); @@ -578,17 +574,17 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg ECMA_FINALIZE (exec_value); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { if (n == 0) { /* 8.g. */ - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_NULL); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_NULL); } else { /* 8.h. */ - ret_value = ecma_make_normal_completion_value (ecma_copy_value (new_array_value, true)); + ret_value = ecma_copy_value (new_array_value, true); } } @@ -605,7 +601,7 @@ ecma_builtin_string_prototype_object_match (ecma_value_t this_arg, /**< this arg ecma_deref_ecma_string (global_string_p); - ecma_free_value (regexp_value, true); + ecma_free_value (regexp_value); } ECMA_FINALIZE (this_to_string_value); @@ -685,14 +681,14 @@ ecma_builtin_string_prototype_object_replace_append_substr (ecma_string_t *base_ /** * Generic helper function to perform the find the next match * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_replace_match (ecma_builtin_replace_search_ctx_t *context_p) /**< search * context */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); context_p->match_start = 0; context_p->match_end = 0; @@ -737,7 +733,7 @@ ecma_builtin_string_prototype_object_replace_match (ecma_builtin_replace_search_ JERRY_ASSERT ((ecma_length_t) ecma_number_to_uint32 (*index_number_p) == context_p->match_start); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (match_value, true)); + ret_value = ecma_copy_value (match_value, true); ECMA_FINALIZE (result_string_value); ECMA_FINALIZE (index_value); @@ -746,7 +742,7 @@ ecma_builtin_string_prototype_object_replace_match (ecma_builtin_replace_search_ } else { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_NULL); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_NULL); } ECMA_FINALIZE (match_value); @@ -769,13 +765,13 @@ ecma_builtin_string_prototype_object_replace_match (ecma_builtin_replace_search_ context_p->match_start = index_of; context_p->match_end = index_of + ecma_string_get_length (search_string_p); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (new_array_value, true)); + ret_value = ecma_copy_value (new_array_value, true); ECMA_FINALIZE (new_array_value); } else { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_NULL); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_NULL); } } @@ -785,15 +781,15 @@ ecma_builtin_string_prototype_object_replace_match (ecma_builtin_replace_search_ /** * Generic helper function to construct the string which replaces the matched part * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_search_ctx_t *context_p, /**< search * context */ ecma_value_t match_value) /**< returned match value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_string_t *length_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH); ecma_object_t *match_object_p = ecma_get_object_from_value (match_value); @@ -820,7 +816,7 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se ecma_length_t values_copied = 0; for (ecma_length_t i = 0; - (i < match_length) && ecma_is_completion_value_empty (ret_value); + (i < match_length) && ecma_is_value_empty (ret_value); i++) { ecma_string_t *index_p = ecma_new_ecma_string_from_uint32 (i); @@ -835,7 +831,7 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se ecma_deref_ecma_string (index_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_number_t *index_number_p = ecma_alloc_number (); @@ -854,18 +850,18 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se ecma_op_to_string (result_value), ret_value); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (to_string_value, true)); + ret_value = ecma_copy_value (to_string_value, true); ECMA_FINALIZE (to_string_value); ECMA_FINALIZE (result_value); - ecma_free_value (arguments_list[match_length + 1], true); + ecma_free_value (arguments_list[match_length + 1]); ecma_dealloc_number (index_number_p); } for (ecma_length_t i = 0; i < values_copied; i++) { - ecma_free_value (arguments_list[i], true); + ecma_free_value (arguments_list[i]); } MEM_FINALIZE_LOCAL_ARRAY (arguments_list); @@ -1031,7 +1027,7 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se ECMA_FINALIZE (submatch_value); ecma_deref_ecma_string (index_string_p); - if (!ecma_is_completion_value_empty (ret_value)) + if (!ecma_is_value_empty (ret_value)) { break; } @@ -1044,7 +1040,7 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se current_position++; } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { result_string_p = ecma_builtin_string_prototype_object_replace_append_substr (result_string_p, context_p->replace_string_p, @@ -1052,7 +1048,7 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se current_position, true); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (result_string_p)); + ret_value = ecma_make_string_value (result_string_p); } } @@ -1065,14 +1061,14 @@ ecma_builtin_string_prototype_object_replace_get_string (ecma_builtin_replace_se /** * Generic helper function to do the string replace * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_replace_loop (ecma_builtin_replace_search_ctx_t *context_p) /**< search * context */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_length_t previous_start = 0; bool continue_match = true; @@ -1111,7 +1107,7 @@ ecma_builtin_string_prototype_object_replace_loop (ecma_builtin_replace_search_c previous_start = context_p->match_end; if (context_p->is_global - && ecma_is_completion_value_empty (ret_value) + && ecma_is_value_empty (ret_value) && context_p->match_start == context_p->match_end) { JERRY_ASSERT (context_p->is_regexp); @@ -1143,7 +1139,7 @@ ecma_builtin_string_prototype_object_replace_loop (ecma_builtin_replace_search_c } } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { if (!context_p->is_global || ecma_is_value_null (match_value)) { @@ -1155,7 +1151,7 @@ ecma_builtin_string_prototype_object_replace_loop (ecma_builtin_replace_search_c context_p->input_length, false); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (appended_string_p)); + ret_value = ecma_make_string_value (appended_string_p); } else { @@ -1176,15 +1172,15 @@ ecma_builtin_string_prototype_object_replace_loop (ecma_builtin_replace_search_c * appropriate fields of the context were filled as well and the search * loop is run afterwards. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_replace_main (ecma_builtin_replace_search_ctx_t *context_p, /**< search * context */ ecma_value_t replace_value) /**< replacement for a match */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (ecma_op_is_callable (replace_value)) { @@ -1254,15 +1250,15 @@ ecma_builtin_string_prototype_object_replace_main (ecma_builtin_replace_search_c * See also: * ECMA-262 v5, 15.5.4.11 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_replace (ecma_value_t this_arg, /**< this argument */ ecma_value_t search_value, /**< routine's first argument */ ecma_value_t replace_value) /**< routine's second argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (check_coercible_val, @@ -1312,7 +1308,7 @@ ecma_builtin_string_prototype_object_replace (ecma_value_t this_arg, /**< this a ecma_deref_ecma_string (last_index_string_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ret_value = ecma_builtin_string_prototype_object_replace_main (&context, replace_value); } @@ -1349,14 +1345,14 @@ ecma_builtin_string_prototype_object_replace (ecma_value_t this_arg, /**< this a * See also: * ECMA-262 v5, 15.5.4.12 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_search (ecma_value_t this_arg, /**< this argument */ ecma_value_t regexp_arg) /**< routine's argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (check_coercible_value, @@ -1391,7 +1387,7 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_arg, /**< this ar } /* 5. */ - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ECMA_TRY_CATCH (match_result, ecma_regexp_exec_helper (regexp_value, to_string_value, true), @@ -1418,16 +1414,16 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_arg, /**< this ar ecma_deref_ecma_string (index_string_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ecma_number_t *offset_number_p = ecma_alloc_number (); *offset_number_p = offset; - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (offset_number_p)); + ret_value = ecma_make_number_value (offset_number_p); } ECMA_FINALIZE (match_result); - ecma_free_value (regexp_value, true); + ecma_free_value (regexp_value); } ECMA_FINALIZE (to_string_value); @@ -1445,15 +1441,15 @@ ecma_builtin_string_prototype_object_search (ecma_value_t this_arg, /**< this ar * See also: * ECMA-262 v5, 15.5.4.13 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_slice (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< routine's first argument */ ecma_value_t arg2) /**< routine's second argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (check_coercible_val, @@ -1499,11 +1495,11 @@ ecma_builtin_string_prototype_object_slice (ecma_value_t this_arg, /**< this arg JERRY_ASSERT (start <= len && end <= len); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 8-9. */ ecma_string_t *new_str_p = ecma_string_substr (get_string_val, start, end); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (new_str_p)); + ret_value = ecma_make_string_value (new_str_p); } ECMA_FINALIZE (to_string_val); @@ -1523,18 +1519,18 @@ ecma_builtin_string_prototype_object_slice (ecma_value_t this_arg, /**< this arg * Used by: * - The String.prototype.split routine. * - * @return completion value - contains the value of the match + * @return ecma value - contains the value of the match * - the index property of the completion value indicates the position of the * first character in the input_string that matched * - * Returned value must be freed with ecma_free_completion_value. + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument */ ecma_length_t start_idx, /**< second argument */ ecma_value_t separator) /**< third argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ if (ecma_is_value_object (separator) @@ -1551,9 +1547,9 @@ ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument ret_value = ecma_regexp_exec_helper (regexp_value, ecma_make_string_value (substr_str_p), true); - if (!ecma_is_value_null (ecma_get_completion_value_value (ret_value))) + if (!ecma_is_value_null (ret_value)) { - ecma_object_t *obj_p = ecma_get_object_from_completion_value (ret_value); + ecma_object_t *obj_p = ecma_get_object_from_value (ret_value); ecma_string_t *magic_index_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INDEX); ecma_property_t *index_prop_p = ecma_get_named_property (obj_p, magic_index_str_p); @@ -1581,7 +1577,7 @@ ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument /* 4. */ if (start_idx + separator_length > string_length) { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_NULL); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_NULL); } else { @@ -1602,8 +1598,8 @@ ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument if (!is_different) { /* 6-7. */ - ecma_completion_value_t match_array = ecma_op_create_array_object (0, 0, false); - ecma_object_t *match_array_p = ecma_get_object_from_completion_value (match_array); + ecma_value_t match_array = ecma_op_create_array_object (0, 0, false); + ecma_object_t *match_array_p = ecma_get_object_from_value (match_array); ecma_string_t *zero_str_p = ecma_new_ecma_string_from_number (ECMA_NUMBER_ZERO); ecma_op_object_put (match_array_p, zero_str_p, ecma_make_string_value (separator_str_p), true); @@ -1626,7 +1622,7 @@ ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument } else { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_NULL); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_NULL); } } } @@ -1640,15 +1636,15 @@ ecma_builtin_helper_split_match (ecma_value_t input_string, /**< first argument * See also: * ECMA-262 v5, 15.5.4.14 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< separator */ ecma_value_t arg2) /**< limit */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (this_check_coercible_val, @@ -1661,7 +1657,7 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg ret_value); /* 3. */ - ecma_completion_value_t new_array = ecma_op_create_array_object (0, 0, false); + ecma_value_t new_array = ecma_op_create_array_object (0, 0, false); /* 5. */ ecma_length_t limit = 0; @@ -1679,7 +1675,7 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg ECMA_OP_TO_NUMBER_FINALIZE (limit_num); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* This variable indicates that we should return with the current array, to avoid another operation. */ bool should_return = false; @@ -1691,22 +1687,22 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg } else /* if (limit != 0) */ { - ecma_object_t *new_array_p = ecma_get_object_from_completion_value (new_array); + ecma_object_t *new_array_p = ecma_get_object_from_value (new_array); /* 10. */ if (ecma_is_value_undefined (arg1)) { ecma_string_t *zero_str_p = ecma_new_ecma_string_from_number (ECMA_NUMBER_ZERO); - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, - zero_str_p, - this_to_string_val, - true, - true, - true, - false); + ecma_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, + zero_str_p, + this_to_string_val, + true, + true, + true, + false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + JERRY_ASSERT (ecma_is_value_true (put_comp)); should_return = true; @@ -1737,15 +1733,15 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg } /* 11. */ - if (string_length == 0 && ecma_is_completion_value_empty (ret_value)) + if (string_length == 0 && ecma_is_value_empty (ret_value)) { /* 11.a */ - ecma_completion_value_t match_result = ecma_builtin_helper_split_match (this_to_string_val, - 0, - separator); + ecma_value_t match_result = ecma_builtin_helper_split_match (this_to_string_val, + 0, + separator); /* 11.b */ - if (!ecma_is_value_null (ecma_get_completion_value_value (match_result))) + if (!ecma_is_value_null (match_result)) { should_return = true; } @@ -1754,15 +1750,15 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg /* 11.c */ ecma_string_t *zero_str_p = ecma_new_ecma_string_from_number (ECMA_NUMBER_ZERO); - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, - zero_str_p, - this_to_string_val, - true, - true, - true, - false); + ecma_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, + zero_str_p, + this_to_string_val, + true, + true, + true, + false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + JERRY_ASSERT (ecma_is_value_true (put_comp)); /* 11.d */ should_return = true; @@ -1770,9 +1766,9 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg ecma_deref_ecma_string (zero_str_p); } - ecma_free_completion_value (match_result); + ecma_free_value (match_result); } - else /* if (string_length != 0) || !ecma_is_completion_value_empty (ret_value) */ + else /* if (string_length != 0) || !ecma_is_value_empty (ret_value) */ { /* 4. */ ecma_length_t new_array_length = 0; @@ -1786,34 +1782,34 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg bool separator_is_empty = false; /* 13. */ - while (curr_pos < string_length && !should_return && ecma_is_completion_value_empty (ret_value)) + while (curr_pos < string_length && !should_return && ecma_is_value_empty (ret_value)) { - ecma_completion_value_t match_result = ecma_builtin_helper_split_match (this_to_string_val, - curr_pos, - separator); + ecma_value_t match_result = ecma_builtin_helper_split_match (this_to_string_val, + curr_pos, + separator); /* 13.b */ - if (ecma_is_value_null (ecma_get_completion_value_value (match_result))) + if (ecma_is_value_null (match_result)) { curr_pos++; } - else /* if (!ecma_is_value_null (ecma_get_completion_value_value (match_result))) */ + else /* if (!ecma_is_value_null (match_result)) */ { - ecma_object_t *match_array_obj_p = ecma_get_object_from_completion_value (match_result); + ecma_object_t *match_array_obj_p = ecma_get_object_from_value (match_result); ecma_string_t *zero_str_p = ecma_new_ecma_string_from_number (ECMA_NUMBER_ZERO); - ecma_completion_value_t match_comp_value = ecma_op_object_get (match_array_obj_p, zero_str_p); + ecma_value_t match_comp_value = ecma_op_object_get (match_array_obj_p, zero_str_p); - JERRY_ASSERT (ecma_is_completion_value_normal (match_comp_value)); + JERRY_ASSERT (!ecma_is_value_error (match_comp_value)); - ecma_string_t *match_str_p = ecma_get_string_from_completion_value (match_comp_value); + ecma_string_t *match_str_p = ecma_get_string_from_value (match_comp_value); ecma_length_t match_str_length = ecma_string_get_length (match_str_p); ecma_string_t *magic_empty_str_p = ecma_new_ecma_string_from_magic_string_id (LIT_MAGIC_STRING__EMPTY); separator_is_empty = ecma_compare_ecma_strings (magic_empty_str_p, match_str_p); ecma_deref_ecma_string (magic_empty_str_p); - ecma_free_completion_value (match_comp_value); + ecma_free_value (match_comp_value); ecma_deref_ecma_string (zero_str_p); ecma_string_t *magic_index_str_p = ecma_get_magic_string (LIT_MAGIC_STRING_INDEX); @@ -1836,21 +1832,21 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg ecma_string_t *array_length_str_p = ecma_new_ecma_string_from_uint32 (new_array_length); - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, - array_length_str_p, - ecma_make_string_value (substr_str_p), - true, - true, - true, - false); + ecma_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, + array_length_str_p, + ecma_make_string_value (substr_str_p), + true, + true, + true, + false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + JERRY_ASSERT (ecma_is_value_true (put_comp)); /* 13.c.iii.3 */ new_array_length++; /* 13.c.iii.4 */ - if (new_array_length == limit && ecma_is_completion_value_empty (ret_value)) + if (new_array_length == limit && ecma_is_value_empty (ret_value)) { should_return = true; } @@ -1873,40 +1869,38 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg uint32_t i = 0; /* 13.c.iii.7 */ - while (i < match_result_array_length && ecma_is_completion_value_empty (ret_value)) + while (i < match_result_array_length && ecma_is_value_empty (ret_value)) { /* 13.c.iii.7.a */ i++; ecma_string_t *idx_str_p = ecma_new_ecma_string_from_uint32 (i); ecma_string_t *new_array_idx_str_p = ecma_new_ecma_string_from_uint32 (new_array_length); - ecma_completion_value_t match_comp_value = ecma_op_object_get (match_array_obj_p, idx_str_p); - - JERRY_ASSERT (ecma_is_completion_value_normal (match_comp_value)); + ecma_value_t match_comp_value = ecma_op_object_get (match_array_obj_p, idx_str_p); - ecma_value_t match_result_value = ecma_get_completion_value_value (match_comp_value); + JERRY_ASSERT (!ecma_is_value_error (match_comp_value)); /* 13.c.iii.7.b */ - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, - new_array_idx_str_p, - match_result_value, - true, - true, - true, - false); + ecma_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, + new_array_idx_str_p, + match_comp_value, + true, + true, + true, + false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + JERRY_ASSERT (ecma_is_value_true (put_comp)); /* 13.c.iii.7.c */ new_array_length++; /* 13.c.iii.7.d */ - if (new_array_length == limit && ecma_is_completion_value_empty (ret_value)) + if (new_array_length == limit && ecma_is_value_empty (ret_value)) { should_return = true; } - ecma_free_completion_value (match_comp_value); + ecma_free_value (match_comp_value); ecma_deref_ecma_string (new_array_idx_str_p); ecma_deref_ecma_string (idx_str_p); } @@ -1920,13 +1914,13 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg ecma_deref_ecma_string (array_length_str_p); ecma_deref_ecma_string (substr_str_p); ecma_deref_ecma_string (magic_index_str_p); - } /* if (!ecma_is_value_null (ecma_get_completion_value_value (match_result))) */ + } /* if (!ecma_is_value_null (match_result)) */ - ecma_free_completion_value (match_result); + ecma_free_value (match_result); - } /* while (curr_pos < string_length && !should_return && ecma_is_completion_value_empty (ret_value)) */ + } /* while (curr_pos < string_length && !should_return && ecma_is_value_empty (ret_value)) */ - if (!should_return && !separator_is_empty && ecma_is_completion_value_empty (ret_value)) + if (!should_return && !separator_is_empty && ecma_is_value_empty (ret_value)) { /* 14. */ ecma_string_t *substr_str_p; @@ -1937,33 +1931,33 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg /* 15. */ ecma_string_t *array_length_string_p = ecma_new_ecma_string_from_uint32 (new_array_length); - ecma_completion_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, - array_length_string_p, - ecma_make_string_value (substr_str_p), - true, - true, - true, - false); + ecma_value_t put_comp = ecma_builtin_helper_def_prop (new_array_p, + array_length_string_p, + ecma_make_string_value (substr_str_p), + true, + true, + true, + false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (put_comp)); + JERRY_ASSERT (ecma_is_value_true (put_comp)); ecma_deref_ecma_string (array_length_string_p); ecma_deref_ecma_string (substr_str_p); } - } /* if (string_length != 0) || !ecma_is_completion_value_empty (ret_value) */ + } /* if (string_length != 0) || !ecma_is_value_empty (ret_value) */ - ecma_free_value (separator, true); + ecma_free_value (separator); } /* if (!ecma_is_value_undefined (arg1)) */ } /* if (limit != 0) */ - } /* if (ecma_is_completion_value_empty (ret_value)) */ + } /* if (ecma_is_value_empty (ret_value)) */ - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ret_value = new_array; } else { - ecma_free_completion_value (new_array); + ecma_free_value (new_array); } ECMA_FINALIZE (this_to_string_val); @@ -1980,15 +1974,15 @@ ecma_builtin_string_prototype_object_split (ecma_value_t this_arg, /**< this arg * See also: * ECMA-262 v5, 15.5.4.15 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_substring (ecma_value_t this_arg, /**< this argument */ ecma_value_t arg1, /**< routine's first argument */ ecma_value_t arg2) /**< routine's second argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1 */ ECMA_TRY_CATCH (check_coercible_val, @@ -2030,7 +2024,7 @@ ecma_builtin_string_prototype_object_substring (ecma_value_t this_arg, /**< this ECMA_OP_TO_NUMBER_FINALIZE (end_num); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { JERRY_ASSERT (start <= len && end <= len); @@ -2042,7 +2036,7 @@ ecma_builtin_string_prototype_object_substring (ecma_value_t this_arg, /**< this /* 10 */ ecma_string_t *new_str_p = ecma_string_substr (original_string_p, from, to); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (new_str_p)); + ret_value = ecma_make_string_value (new_str_p); } ECMA_OP_TO_NUMBER_FINALIZE (start_num); @@ -2056,15 +2050,15 @@ ecma_builtin_string_prototype_object_substring (ecma_value_t this_arg, /**< this /** * Helper function to convert a string to upper or lower case. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_conversion_helper (ecma_value_t this_arg, /**< this argument */ bool lower_case) /**< convert to lower (true) * or upper (false) case */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1. */ ECMA_TRY_CATCH (check_coercible_val, @@ -2168,7 +2162,7 @@ ecma_builtin_string_prototype_object_conversion_helper (ecma_value_t this_arg, / ecma_string_t *output_string_p = ecma_new_ecma_string_from_utf8 (output_start_p, output_length); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (output_string_p)); + ret_value = ecma_make_string_value (output_string_p); MEM_FINALIZE_LOCAL_ARRAY (output_start_p); MEM_FINALIZE_LOCAL_ARRAY (input_start_p); @@ -2185,10 +2179,10 @@ ecma_builtin_string_prototype_object_conversion_helper (ecma_value_t this_arg, / * See also: * ECMA-262 v5, 15.5.4.16 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_to_lower_case (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_string_prototype_object_conversion_helper (this_arg, true); @@ -2200,10 +2194,10 @@ ecma_builtin_string_prototype_object_to_lower_case (ecma_value_t this_arg) /**< * See also: * ECMA-262 v5, 15.5.4.17 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_to_locale_lower_case (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_string_prototype_object_conversion_helper (this_arg, true); @@ -2215,10 +2209,10 @@ ecma_builtin_string_prototype_object_to_locale_lower_case (ecma_value_t this_arg * See also: * ECMA-262 v5, 15.5.4.18 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_to_upper_case (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_string_prototype_object_conversion_helper (this_arg, false); @@ -2230,10 +2224,10 @@ ecma_builtin_string_prototype_object_to_upper_case (ecma_value_t this_arg) /**< * See also: * ECMA-262 v5, 15.5.4.19 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_to_locale_upper_case (ecma_value_t this_arg) /**< this argument */ { return ecma_builtin_string_prototype_object_conversion_helper (this_arg, false); @@ -2245,13 +2239,13 @@ ecma_builtin_string_prototype_object_to_locale_upper_case (ecma_value_t this_arg * See also: * ECMA-262 v5, 15.5.4.20 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_trim (ecma_value_t this_arg) /**< this argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); /* 1 */ ECMA_TRY_CATCH (check_coercible_val, @@ -2266,7 +2260,7 @@ ecma_builtin_string_prototype_object_trim (ecma_value_t this_arg) /**< this argu ecma_string_t *original_string_p = ecma_get_string_from_value (to_string_val); ecma_string_t *trimmed_string_p = ecma_string_trim (original_string_p); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (trimmed_string_p)); + ret_value = ecma_make_string_value (trimmed_string_p); ECMA_FINALIZE (to_string_val); ECMA_FINALIZE (check_coercible_val); @@ -2282,15 +2276,15 @@ ecma_builtin_string_prototype_object_trim (ecma_value_t this_arg) /**< this argu * See also: * ECMA-262 v5, B.2.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_prototype_object_substr (ecma_value_t this_arg, /**< this argument */ ecma_value_t start, /**< routine's first argument */ ecma_value_t length) /**< routine's second argument */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (check_coercible_val, ecma_op_check_object_coercible (this_arg), @@ -2317,7 +2311,7 @@ ecma_builtin_string_prototype_object_substr (ecma_value_t this_arg, /**< this ar ECMA_OP_TO_NUMBER_FINALIZE (len); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { /* 4. */ ecma_number_t this_len = (ecma_number_t) ecma_string_get_length (this_string_p); @@ -2332,7 +2326,7 @@ ecma_builtin_string_prototype_object_substr (ecma_value_t this_arg, /**< this ar /* 8. */ ecma_string_t *new_str_p = ecma_string_substr (this_string_p, from, to); - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (new_str_p)); + ret_value = ecma_make_string_value (new_str_p); } ECMA_OP_TO_NUMBER_FINALIZE (start_num); diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-string.c b/jerry-core/ecma/builtin-objects/ecma-builtin-string.c index 3fe97346..369a6f8a 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-string.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-string.c @@ -50,15 +50,15 @@ * See also: * ECMA-262 v5, 15.5.3.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_string_object_from_char_code (ecma_value_t this_arg __attr_unused___, /**< 'this' argument */ const ecma_value_t args[], /**< arguments list */ ecma_length_t args_number) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_string_t *ret_string_p = NULL; if (args_number == 0) @@ -76,7 +76,7 @@ ecma_builtin_string_object_from_char_code (ecma_value_t this_arg __attr_unused__ lit_utf8_size_t utf8_buf_used = 0; for (ecma_length_t arg_index = 0; - arg_index < args_number && ecma_is_completion_value_empty (ret_value); + arg_index < args_number && ecma_is_value_empty (ret_value); arg_index++) { ECMA_OP_TO_NUMBER_TRY_CATCH (arg_num, args[arg_index], ret_value); @@ -91,7 +91,7 @@ ecma_builtin_string_object_from_char_code (ecma_value_t this_arg __attr_unused__ ECMA_OP_TO_NUMBER_FINALIZE (arg_num); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ret_string_p = ecma_new_ecma_string_from_utf8 (utf8_buf_p, utf8_buf_used); } @@ -99,9 +99,9 @@ ecma_builtin_string_object_from_char_code (ecma_value_t this_arg __attr_unused__ MEM_FINALIZE_LOCAL_ARRAY (utf8_buf_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (ret_string_p)); + ret_value = ecma_make_string_value (ret_string_p); } return ret_value; @@ -110,22 +110,22 @@ ecma_builtin_string_object_from_char_code (ecma_value_t this_arg __attr_unused__ /** * Handle calling [[Call]] of built-in String object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_string_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (arguments_list_len == 0) { ecma_string_t *str_p = ecma_new_ecma_string_from_magic_string_id (LIT_MAGIC_STRING__EMPTY); ecma_value_t str_value = ecma_make_string_value (str_p); - ret_value = ecma_make_normal_completion_value (str_value); + ret_value = str_value; } else { @@ -138,9 +138,9 @@ ecma_builtin_string_dispatch_call (const ecma_value_t *arguments_list_p, /**< ar /** * Handle calling [[Construct]] of built-in String object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_string_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.c b/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.c index 87dbe484..b658e154 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.c @@ -46,9 +46,9 @@ /** * Handle calling [[Call]] of built-in SyntaxError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_syntax_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -57,7 +57,7 @@ ecma_builtin_syntax_error_dispatch_call (const ecma_value_t *arguments_list_p, / if (arguments_list_len != 0 && !ecma_is_value_undefined (arguments_list_p[0])) { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (msg_str_value, ecma_op_to_string (arguments_list_p[0]), @@ -66,7 +66,7 @@ ecma_builtin_syntax_error_dispatch_call (const ecma_value_t *arguments_list_p, / ecma_string_t *message_string_p = ecma_get_string_from_value (msg_str_value); ecma_object_t *new_error_object_p = ecma_new_standard_error_with_message (ECMA_ERROR_SYNTAX, message_string_p); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + ret_value = ecma_make_object_value (new_error_object_p); ECMA_FINALIZE (msg_str_value); @@ -76,16 +76,16 @@ ecma_builtin_syntax_error_dispatch_call (const ecma_value_t *arguments_list_p, / { ecma_object_t *new_error_object_p = ecma_new_standard_error (ECMA_ERROR_SYNTAX); - return ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + return ecma_make_object_value (new_error_object_p); } } /* ecma_builtin_syntax_error_dispatch_call */ /** * Handle calling [[Construct]] of built-in SyntaxError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_syntax_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-type-error-thrower.c b/jerry-core/ecma/builtin-objects/ecma-builtin-type-error-thrower.c index f18d0fd2..1e6c8107 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-type-error-thrower.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-type-error-thrower.c @@ -47,16 +47,16 @@ * See also: * ECMA-262 v5, 13.2.3 * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_type_error_thrower_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); /* The object should throw TypeError */ - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } /* ecma_builtin_type_error_thrower_dispatch_call */ /** @@ -65,16 +65,16 @@ ecma_builtin_type_error_thrower_dispatch_call (const ecma_value_t *arguments_lis * See also: * ECMA-262 v5, 13.2.3 * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_type_error_thrower_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { JERRY_ASSERT (arguments_list_len == 0 || arguments_list_p != NULL); /* The object is not a constructor */ - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } /* ecma_builtin_type_error_thrower_dispatch_construct */ /** diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.c b/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.c index 06b2220a..f37de16c 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.c @@ -46,9 +46,9 @@ /** * Handle calling [[Call]] of built-in TypeError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_type_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -57,7 +57,7 @@ ecma_builtin_type_error_dispatch_call (const ecma_value_t *arguments_list_p, /** if (arguments_list_len != 0 && !ecma_is_value_undefined (arguments_list_p[0])) { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (msg_str_value, ecma_op_to_string (arguments_list_p[0]), @@ -66,7 +66,7 @@ ecma_builtin_type_error_dispatch_call (const ecma_value_t *arguments_list_p, /** ecma_string_t *message_string_p = ecma_get_string_from_value (msg_str_value); ecma_object_t *new_error_object_p = ecma_new_standard_error_with_message (ECMA_ERROR_TYPE, message_string_p); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + ret_value = ecma_make_object_value (new_error_object_p); ECMA_FINALIZE (msg_str_value); @@ -76,16 +76,16 @@ ecma_builtin_type_error_dispatch_call (const ecma_value_t *arguments_list_p, /** { ecma_object_t *new_error_object_p = ecma_new_standard_error (ECMA_ERROR_TYPE); - return ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + return ecma_make_object_value (new_error_object_p); } } /* ecma_builtin_type_error_dispatch_call */ /** * Handle calling [[Construct]] of built-in TypeError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_type_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.c b/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.c index 75f9cc52..654a40ea 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.c @@ -46,9 +46,9 @@ /** * Handle calling [[Call]] of built-in UriError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_uri_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { @@ -57,7 +57,7 @@ ecma_builtin_uri_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< if (arguments_list_len != 0 && !ecma_is_value_undefined (arguments_list_p[0])) { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (msg_str_value, ecma_op_to_string (arguments_list_p[0]), @@ -66,7 +66,7 @@ ecma_builtin_uri_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< ecma_string_t *message_string_p = ecma_get_string_from_value (msg_str_value); ecma_object_t *new_error_object_p = ecma_new_standard_error_with_message (ECMA_ERROR_URI, message_string_p); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + ret_value = ecma_make_object_value (new_error_object_p); ECMA_FINALIZE (msg_str_value); @@ -76,16 +76,16 @@ ecma_builtin_uri_error_dispatch_call (const ecma_value_t *arguments_list_p, /**< { ecma_object_t *new_error_object_p = ecma_new_standard_error (ECMA_ERROR_URI); - return ecma_make_normal_completion_value (ecma_make_object_value (new_error_object_p)); + return ecma_make_object_value (new_error_object_p); } } /* ecma_builtin_uri_error_dispatch_call */ /** * Handle calling [[Construct]] of built-in UriError object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_uri_error_dispatch_construct (const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< number of arguments */ { diff --git a/jerry-core/ecma/builtin-objects/ecma-builtins-internal.h b/jerry-core/ecma/builtin-objects/ecma-builtins-internal.h index 9c522b1d..11b4d60d 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtins-internal.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtins-internal.h @@ -70,13 +70,13 @@ ecma_builtin_bin_search_for_magic_string_id_in_array (const lit_magic_string_id_ is_extensible, \ is_static, \ lowercase_name) \ -extern ecma_completion_value_t \ +extern ecma_value_t \ ecma_builtin_ ## lowercase_name ## _dispatch_call (const ecma_value_t *, \ ecma_length_t); \ -extern ecma_completion_value_t \ +extern ecma_value_t \ ecma_builtin_ ## lowercase_name ## _dispatch_construct (const ecma_value_t *, \ ecma_length_t); \ -extern ecma_completion_value_t \ +extern ecma_value_t \ ecma_builtin_ ## lowercase_name ## _dispatch_routine (uint16_t builtin_routine_id, \ ecma_value_t this_arg_value, \ const ecma_value_t [], \ diff --git a/jerry-core/ecma/builtin-objects/ecma-builtins.c b/jerry-core/ecma/builtin-objects/ecma-builtins.c index 994d14d0..033eacd9 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtins.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtins.c @@ -31,7 +31,7 @@ * @{ */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_dispatch_routine (ecma_builtin_id_t builtin_object_id, uint16_t builtin_routine_id, ecma_value_t this_arg_value, @@ -503,9 +503,9 @@ ecma_builtin_make_function_object_for_routine (ecma_builtin_id_t builtin_id, /** /** * Handle calling [[Call]] of built-in object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_dispatch_call (ecma_object_t *obj_p, /**< built-in object */ ecma_value_t this_arg_value, /**< 'this' argument value */ const ecma_value_t *arguments_list_p, /**< arguments list */ @@ -513,7 +513,7 @@ ecma_builtin_dispatch_call (ecma_object_t *obj_p, /**< built-in object */ { JERRY_ASSERT (ecma_get_object_is_builtin (obj_p)); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (ecma_get_object_type (obj_p) == ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION) { @@ -585,7 +585,7 @@ ecma_builtin_dispatch_call (ecma_object_t *obj_p, /**< built-in object */ } } - JERRY_ASSERT (!ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (!ecma_is_value_empty (ret_value)); return ret_value; } /* ecma_builtin_dispatch_call */ @@ -593,9 +593,9 @@ ecma_builtin_dispatch_call (ecma_object_t *obj_p, /**< built-in object */ /** * Handle calling [[Construct]] of built-in object * - * @return completion-value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_builtin_dispatch_construct (ecma_object_t *obj_p, /**< built-in object */ const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< arguments list length */ @@ -603,7 +603,7 @@ ecma_builtin_dispatch_construct (ecma_object_t *obj_p, /**< built-in object */ JERRY_ASSERT (ecma_get_object_type (obj_p) == ECMA_OBJECT_TYPE_FUNCTION); JERRY_ASSERT (ecma_get_object_is_builtin (obj_p)); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_property_t *built_in_id_prop_p = ecma_get_internal_property (obj_p, ECMA_INTERNAL_PROPERTY_BUILT_IN_ID); @@ -646,7 +646,7 @@ ecma_builtin_dispatch_construct (ecma_object_t *obj_p, /**< built-in object */ } } - JERRY_ASSERT (!ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (!ecma_is_value_empty (ret_value)); return ret_value; } /* ecma_builtin_dispatch_construct */ @@ -654,10 +654,10 @@ ecma_builtin_dispatch_construct (ecma_object_t *obj_p, /**< built-in object */ /** * Dispatcher of built-in routines * - * @return completion-value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -static ecma_completion_value_t +static ecma_value_t ecma_builtin_dispatch_routine (ecma_builtin_id_t builtin_object_id, /**< built-in object' identifier */ uint16_t builtin_routine_id, /**< builtin-wide identifier * of the built-in object's diff --git a/jerry-core/ecma/builtin-objects/ecma-builtins.h b/jerry-core/ecma/builtin-objects/ecma-builtins.h index b9d827a7..6cfde222 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtins.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtins.h @@ -38,10 +38,10 @@ typedef enum extern void ecma_init_builtins (void); extern void ecma_finalize_builtins (void); -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_dispatch_call (ecma_object_t *, ecma_value_t, const ecma_value_t *, ecma_length_t); -extern ecma_completion_value_t +extern ecma_value_t ecma_builtin_dispatch_construct (ecma_object_t *, const ecma_value_t *, ecma_length_t); extern ecma_property_t * diff --git a/jerry-core/ecma/operations/ecma-array-object.c b/jerry-core/ecma/operations/ecma-array-object.c index 18373e98..00898924 100644 --- a/jerry-core/ecma/operations/ecma-array-object.c +++ b/jerry-core/ecma/operations/ecma-array-object.c @@ -38,10 +38,10 @@ * See also: ECMA-262 v5, 15.4.2.1 * ECMA-262 v5, 15.4.2.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_create_array_object (const ecma_value_t *arguments_list_p, /**< list of arguments that are passed to Array constructor */ ecma_length_t arguments_list_len, /**< length of the arguments' list */ @@ -67,7 +67,7 @@ ecma_op_create_array_object (const ecma_value_t *arguments_list_p, /**< list of uint32_t num_uint32 = ecma_number_to_uint32 (*num_p); if (*num_p != ecma_uint32_to_number (num_uint32)) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_RANGE)); + return ecma_raise_range_error (""); } else { @@ -131,7 +131,7 @@ ecma_op_create_array_object (const ecma_value_t *arguments_list_p, /**< list of ecma_deref_ecma_string (item_name_string_p); } - return ecma_make_normal_completion_value (ecma_make_object_value (obj_p)); + return ecma_make_object_value (obj_p); } /* ecma_op_create_array_object */ /** @@ -141,10 +141,10 @@ ecma_op_create_array_object (const ecma_value_t *arguments_list_p, /**< list of * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 15.4.5.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array object */ ecma_string_t *property_name_p, /**< property name */ const ecma_property_descriptor_t *property_desc_p, /**< property descriptor */ @@ -182,25 +182,25 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o ecma_number_t new_len_num; // c. - ecma_completion_value_t completion = ecma_op_to_number (property_desc_p->value); - if (ecma_is_completion_value_throw (completion)) + ecma_value_t completion = ecma_op_to_number (property_desc_p->value); + if (ecma_is_value_error (completion)) { return completion; } - JERRY_ASSERT (ecma_is_completion_value_normal (completion) - && ecma_is_value_number (ecma_get_completion_value_value (completion))); + JERRY_ASSERT (!ecma_is_value_error (completion) + && ecma_is_value_number (completion)); - new_len_num = *ecma_get_number_from_completion_value (completion); + new_len_num = *ecma_get_number_from_value (completion); - ecma_free_completion_value (completion); + ecma_free_value (completion); uint32_t new_len_uint32 = ecma_number_to_uint32 (new_len_num); // d. if (ecma_uint32_to_number (new_len_uint32) != new_len_num) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_RANGE)); + return ecma_raise_range_error (""); } else { @@ -211,7 +211,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o ecma_property_descriptor_t new_len_property_desc = *property_desc_p; new_len_property_desc.value = ecma_make_number_value (new_len_num_p); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // f. if (new_len_uint32 >= old_len_uint32) @@ -252,17 +252,17 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o // j. magic_string_length_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH); - ecma_completion_value_t succeeded = ecma_op_general_object_define_own_property (obj_p, - magic_string_length_p, - &new_len_property_desc, - is_throw); + ecma_value_t succeeded = ecma_op_general_object_define_own_property (obj_p, + magic_string_length_p, + &new_len_property_desc, + is_throw); ecma_deref_ecma_string (magic_string_length_p); /* Handling normal false and throw values */ - if (!ecma_is_completion_value_normal_true (succeeded)) + if (!ecma_is_value_true (succeeded)) { - JERRY_ASSERT (ecma_is_completion_value_normal_false (succeeded) - || ecma_is_completion_value_throw (succeeded)); + JERRY_ASSERT (ecma_is_value_false (succeeded) + || ecma_is_value_error (succeeded)); // k. ret_value = succeeded; @@ -312,12 +312,10 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o // ii. ecma_string_t *index_string_p = ecma_new_ecma_string_from_uint32 (index); - ecma_completion_value_t delete_succeeded = ecma_op_object_delete (obj_p, - index_string_p, - false); + ecma_value_t delete_succeeded = ecma_op_object_delete (obj_p, index_string_p, false); ecma_deref_ecma_string (index_string_p); - if (ecma_is_completion_value_normal_false (delete_succeeded)) + if (ecma_is_value_false (delete_succeeded)) { // iii. new_len_uint32 = (index + 1u); @@ -336,14 +334,13 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o // 3. ecma_string_t *magic_string_length_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH); - ecma_completion_value_t completion = ecma_op_general_object_define_own_property (obj_p, - magic_string_length_p, - &new_len_property_desc, - false); + ecma_value_t completion = ecma_op_general_object_define_own_property (obj_p, + magic_string_length_p, + &new_len_property_desc, + false); ecma_deref_ecma_string (magic_string_length_p); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion) - || ecma_is_completion_value_normal_false (completion)); + JERRY_ASSERT (ecma_is_value_boolean (completion)); is_reduce_succeeded = false; @@ -369,17 +366,17 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o prop_desc_not_writable.is_writable_defined = true; prop_desc_not_writable.is_writable = false; - ecma_completion_value_t completion_set_not_writable; + ecma_value_t completion_set_not_writable; magic_string_length_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH); completion_set_not_writable = ecma_op_general_object_define_own_property (obj_p, magic_string_length_p, &prop_desc_not_writable, false); ecma_deref_ecma_string (magic_string_length_p); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion_set_not_writable)); + JERRY_ASSERT (ecma_is_value_true (completion_set_not_writable)); } - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } } } @@ -416,15 +413,14 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o } // c. - ecma_completion_value_t succeeded = ecma_op_general_object_define_own_property (obj_p, - property_name_p, - property_desc_p, - false); + ecma_value_t succeeded = ecma_op_general_object_define_own_property (obj_p, + property_name_p, + property_desc_p, + false); // d. - JERRY_ASSERT (ecma_is_completion_value_normal_true (succeeded) - || ecma_is_completion_value_normal_false (succeeded)); + JERRY_ASSERT (ecma_is_value_boolean (succeeded)); - if (ecma_is_completion_value_normal_false (succeeded)) + if (ecma_is_value_false (succeeded)) { return ecma_reject (is_throw); } @@ -442,7 +438,7 @@ ecma_op_array_object_define_own_property (ecma_object_t *obj_p, /**< the array o } // f. - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } JERRY_UNREACHABLE (); diff --git a/jerry-core/ecma/operations/ecma-array-object.h b/jerry-core/ecma/operations/ecma-array-object.h index d5256b25..e7e19b9f 100644 --- a/jerry-core/ecma/operations/ecma-array-object.h +++ b/jerry-core/ecma/operations/ecma-array-object.h @@ -25,10 +25,10 @@ * @{ */ -extern ecma_completion_value_t +extern ecma_value_t ecma_op_create_array_object (const ecma_value_t *, ecma_length_t, bool); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_array_object_define_own_property (ecma_object_t *, ecma_string_t *, const ecma_property_descriptor_t *, bool); /** diff --git a/jerry-core/ecma/operations/ecma-boolean-object.c b/jerry-core/ecma/operations/ecma-boolean-object.c index 10428670..8b7813a6 100644 --- a/jerry-core/ecma/operations/ecma-boolean-object.c +++ b/jerry-core/ecma/operations/ecma-boolean-object.c @@ -35,21 +35,21 @@ * * See also: ECMA-262 v5, 15.6.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_create_boolean_object (ecma_value_t arg) /**< argument passed to the Boolean constructor */ { - ecma_completion_value_t conv_to_boolean_completion = ecma_op_to_boolean (arg); + ecma_value_t conv_to_boolean_completion = ecma_op_to_boolean (arg); - if (!ecma_is_completion_value_normal (conv_to_boolean_completion)) + if (ecma_is_value_error (conv_to_boolean_completion)) { return conv_to_boolean_completion; } - ecma_simple_value_t bool_value = (ecma_is_value_true (ecma_get_completion_value_value (conv_to_boolean_completion)) ? - ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); + ecma_simple_value_t bool_value = (ecma_is_value_true (conv_to_boolean_completion) ? ECMA_SIMPLE_VALUE_TRUE + : ECMA_SIMPLE_VALUE_FALSE); #ifndef CONFIG_ECMA_COMPACT_PROFILE_DISABLE_BOOLEAN_BUILTIN ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_BOOLEAN_PROTOTYPE); @@ -69,7 +69,7 @@ ecma_op_create_boolean_object (ecma_value_t arg) /**< argument passed to the Boo ECMA_INTERNAL_PROPERTY_PRIMITIVE_BOOLEAN_VALUE); prim_value_prop_p->u.internal_property.value = bool_value; - return ecma_make_normal_completion_value (ecma_make_object_value (obj_p)); + return ecma_make_object_value (obj_p); } /* ecma_op_create_boolean_object */ /** diff --git a/jerry-core/ecma/operations/ecma-boolean-object.h b/jerry-core/ecma/operations/ecma-boolean-object.h index 22b08dcb..aa1c5e6e 100644 --- a/jerry-core/ecma/operations/ecma-boolean-object.h +++ b/jerry-core/ecma/operations/ecma-boolean-object.h @@ -25,7 +25,7 @@ * @{ */ -extern ecma_completion_value_t ecma_op_create_boolean_object (ecma_value_t); +extern ecma_value_t ecma_op_create_boolean_object (ecma_value_t); /** * @} diff --git a/jerry-core/ecma/operations/ecma-comparison.c b/jerry-core/ecma/operations/ecma-comparison.c index d9361c59..a6053b47 100644 --- a/jerry-core/ecma/operations/ecma-comparison.c +++ b/jerry-core/ecma/operations/ecma-comparison.c @@ -34,7 +34,7 @@ * @return true - if values are equal, * false - otherwise. */ -ecma_completion_value_t +ecma_value_t ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */ ecma_value_t y) /**< second operand */ { @@ -59,7 +59,7 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */ || (is_x_string && is_y_string) || (is_x_object && is_y_object)); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (is_types_equal) { @@ -69,7 +69,7 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */ || is_x_null) { // a., b. - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } else if (is_x_number) { // c. @@ -100,8 +100,7 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */ JERRY_ASSERT (is_x_equal_to_y == is_x_equal_to_y_check); #endif /* !JERRY_NDEBUG */ - ret_value = ecma_make_simple_completion_value (is_x_equal_to_y ? - ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_x_equal_to_y ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); } else if (is_x_string) { // d. @@ -110,13 +109,13 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */ bool is_equal = ecma_compare_ecma_strings (x_str_p, y_str_p); - ret_value = ecma_make_simple_completion_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); } else if (is_x_boolean) { // e. bool is_equal = (ecma_is_value_true (x) == ecma_is_value_true (y)); - ret_value = ecma_make_simple_completion_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); } else { // f. @@ -124,13 +123,13 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */ bool is_equal = (ecma_get_object_from_value (x) == ecma_get_object_from_value (y)); - ret_value = ecma_make_simple_completion_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); } } else if ((is_x_null && is_y_undefined) || (is_x_undefined && is_y_null)) { // 2., 3. - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } else if (is_x_number && is_y_string) { @@ -202,7 +201,7 @@ ecma_op_abstract_equality_compare (ecma_value_t x, /**< first operand */ } else { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } return ret_value; @@ -325,15 +324,15 @@ ecma_op_strict_equality_compare (ecma_value_t x, /**< first operand */ * * See also: ECMA-262 v5, 11.8.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_abstract_relational_compare (ecma_value_t x, /**< first operand */ ecma_value_t y, /**< second operand */ bool left_first) /**< 'LeftFirst' flag */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_value_t first_converted_value = left_first ? x : y; ecma_value_t second_converted_value = left_first ? y : x; @@ -365,7 +364,7 @@ ecma_op_abstract_relational_compare (ecma_value_t x, /**< first operand */ || ecma_number_is_nan (ny)) { // c., d. - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } else { @@ -428,8 +427,7 @@ ecma_op_abstract_relational_compare (ecma_value_t x, /**< first operand */ JERRY_ASSERT (is_x_less_than_y_check == is_x_less_than_y); #endif /* !JERRY_NDEBUG */ - ret_value = ecma_make_simple_completion_value (is_x_less_than_y ? - ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_x_less_than_y ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); } ECMA_OP_TO_NUMBER_FINALIZE (ny); @@ -444,8 +442,7 @@ ecma_op_abstract_relational_compare (ecma_value_t x, /**< first operand */ bool is_px_less = ecma_compare_ecma_strings_relational (str_x_p, str_y_p); - ret_value = ecma_make_simple_completion_value (is_px_less ? ECMA_SIMPLE_VALUE_TRUE - : ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (is_px_less ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); } ECMA_FINALIZE (prim_second_converted_value); diff --git a/jerry-core/ecma/operations/ecma-comparison.h b/jerry-core/ecma/operations/ecma-comparison.h index 3f437f1c..bafd338d 100644 --- a/jerry-core/ecma/operations/ecma-comparison.h +++ b/jerry-core/ecma/operations/ecma-comparison.h @@ -26,9 +26,9 @@ * @{ */ -extern ecma_completion_value_t ecma_op_abstract_equality_compare (ecma_value_t, ecma_value_t); +extern ecma_value_t ecma_op_abstract_equality_compare (ecma_value_t, ecma_value_t); extern bool ecma_op_strict_equality_compare (ecma_value_t, ecma_value_t); -extern ecma_completion_value_t ecma_op_abstract_relational_compare (ecma_value_t, ecma_value_t, bool); +extern ecma_value_t ecma_op_abstract_relational_compare (ecma_value_t, ecma_value_t, bool); /** * @} diff --git a/jerry-core/ecma/operations/ecma-conversion.c b/jerry-core/ecma/operations/ecma-conversion.c index 3803cd84..7e0d06fb 100644 --- a/jerry-core/ecma/operations/ecma-conversion.c +++ b/jerry-core/ecma/operations/ecma-conversion.c @@ -45,22 +45,22 @@ * See also: * ECMA-262 v5, 9.10 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t -ecma_op_check_object_coercible (ecma_value_t value) /**< ecma-value */ +ecma_value_t +ecma_op_check_object_coercible (ecma_value_t value) /**< ecma value */ { ecma_check_value_type_is_spec_defined (value); if (ecma_is_value_undefined (value) || ecma_is_value_null (value)) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } else { - return ecma_make_empty_completion_value (); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); } } /* ecma_op_check_object_coercible */ @@ -74,8 +74,8 @@ ecma_op_check_object_coercible (ecma_value_t value) /**< ecma-value */ * false - otherwise. */ bool -ecma_op_same_value (ecma_value_t x, /**< ecma-value */ - ecma_value_t y) /**< ecma-value */ +ecma_op_same_value (ecma_value_t x, /**< ecma value */ + ecma_value_t y) /**< ecma value */ { const bool is_x_undefined = ecma_is_value_undefined (x); const bool is_x_null = ecma_is_value_null (x); @@ -161,11 +161,11 @@ ecma_op_same_value (ecma_value_t x, /**< ecma-value */ * See also: * ECMA-262 v5, 9.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t -ecma_op_to_primitive (ecma_value_t value, /**< ecma-value */ +ecma_value_t +ecma_op_to_primitive (ecma_value_t value, /**< ecma value */ ecma_preferred_type_hint_t preferred_type) /**< preferred type hint */ { ecma_check_value_type_is_spec_defined (value); @@ -178,7 +178,7 @@ ecma_op_to_primitive (ecma_value_t value, /**< ecma-value */ } else { - return ecma_make_normal_completion_value (ecma_copy_value (value, true)); + return ecma_copy_value (value, true); } } /* ecma_op_to_primitive */ @@ -188,12 +188,12 @@ ecma_op_to_primitive (ecma_value_t value, /**< ecma-value */ * See also: * ECMA-262 v5, 9.2 * - * @return completion value + * @return ecma value * Returned value is simple and so need not be freed. - * However, ecma_free_completion_value may be called for it, but it is a no-op. + * However, ecma_free_value may be called for it, but it is a no-op. */ -ecma_completion_value_t -ecma_op_to_boolean (ecma_value_t value) /**< ecma-value */ +ecma_value_t +ecma_op_to_boolean (ecma_value_t value) /**< ecma value */ { ecma_check_value_type_is_spec_defined (value); @@ -243,7 +243,7 @@ ecma_op_to_boolean (ecma_value_t value) /**< ecma-value */ ret_value = ECMA_SIMPLE_VALUE_TRUE; } - return ecma_make_simple_completion_value (ret_value); + return ecma_make_simple_value (ret_value); } /* ecma_op_to_boolean */ /** @@ -252,17 +252,17 @@ ecma_op_to_boolean (ecma_value_t value) /**< ecma-value */ * See also: * ECMA-262 v5, 9.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t -ecma_op_to_number (ecma_value_t value) /**< ecma-value */ +ecma_value_t +ecma_op_to_number (ecma_value_t value) /**< ecma value */ { ecma_check_value_type_is_spec_defined (value); if (ecma_is_value_number (value)) { - return ecma_make_normal_completion_value (ecma_copy_value (value, true)); + return ecma_copy_value (value, true); } else if (ecma_is_value_string (value)) { @@ -271,11 +271,11 @@ ecma_op_to_number (ecma_value_t value) /**< ecma-value */ ecma_number_t *num_p = ecma_alloc_number (); *num_p = ecma_string_to_number (str_p); - return ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + return ecma_make_number_value (num_p); } else if (ecma_is_value_object (value)) { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (primitive_value, ecma_op_to_primitive (value, ECMA_PREFERRED_TYPE_NUMBER), @@ -313,7 +313,7 @@ ecma_op_to_number (ecma_value_t value) /**< ecma-value */ } } - return ecma_make_normal_completion_value (ecma_make_number_value (num_p)); + return ecma_make_number_value (num_p); } } /* ecma_op_to_number */ @@ -323,17 +323,17 @@ ecma_op_to_number (ecma_value_t value) /**< ecma-value */ * See also: * ECMA-262 v5, 9.8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t -ecma_op_to_string (ecma_value_t value) /**< ecma-value */ +ecma_value_t +ecma_op_to_string (ecma_value_t value) /**< ecma value */ { ecma_check_value_type_is_spec_defined (value); if (unlikely (ecma_is_value_object (value))) { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (prim_value, ecma_op_to_primitive (value, ECMA_PREFERRED_TYPE_STRING), @@ -381,7 +381,7 @@ ecma_op_to_string (ecma_value_t value) /**< ecma-value */ } } - return ecma_make_normal_completion_value (ecma_make_string_value (res_p)); + return ecma_make_string_value (res_p); } } /* ecma_op_to_string */ @@ -391,11 +391,11 @@ ecma_op_to_string (ecma_value_t value) /**< ecma-value */ * See also: * ECMA-262 v5, 9.9 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t -ecma_op_to_object (ecma_value_t value) /**< ecma-value */ +ecma_value_t +ecma_op_to_object (ecma_value_t value) /**< ecma value */ { ecma_check_value_type_is_spec_defined (value); @@ -409,14 +409,14 @@ ecma_op_to_object (ecma_value_t value) /**< ecma-value */ } else if (ecma_is_value_object (value)) { - return ecma_make_normal_completion_value (ecma_copy_value (value, true)); + return ecma_copy_value (value, true); } else { if (ecma_is_value_undefined (value) || ecma_is_value_null (value)) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } else { @@ -441,7 +441,7 @@ ecma_op_from_property_descriptor (const ecma_property_descriptor_t *src_prop_des // 2. ecma_object_t *obj_p = ecma_op_create_object_object_noarg (); - ecma_completion_value_t completion; + ecma_value_t completion; ecma_property_descriptor_t prop_desc = ecma_make_empty_property_descriptor (); { prop_desc.is_value_defined = true; @@ -471,7 +471,7 @@ ecma_op_from_property_descriptor (const ecma_property_descriptor_t *src_prop_des &prop_desc, false); ecma_deref_ecma_string (value_magic_string_p); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); // b. const bool is_writable = (src_prop_desc_p->is_writable); @@ -484,7 +484,7 @@ ecma_op_from_property_descriptor (const ecma_property_descriptor_t *src_prop_des &prop_desc, false); ecma_deref_ecma_string (writable_magic_string_p); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); } else { @@ -508,7 +508,7 @@ ecma_op_from_property_descriptor (const ecma_property_descriptor_t *src_prop_des &prop_desc, false); ecma_deref_ecma_string (get_magic_string_p); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); // b. if (src_prop_desc_p->set_p == NULL) @@ -526,7 +526,7 @@ ecma_op_from_property_descriptor (const ecma_property_descriptor_t *src_prop_des &prop_desc, false); ecma_deref_ecma_string (set_magic_string_p); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); } const bool is_enumerable = src_prop_desc_p->is_enumerable; @@ -539,7 +539,7 @@ ecma_op_from_property_descriptor (const ecma_property_descriptor_t *src_prop_des &prop_desc, false); ecma_deref_ecma_string (enumerable_magic_string_p); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); const bool is_configurable = src_prop_desc_p->is_configurable; prop_desc.value = ecma_make_simple_value (is_configurable ? ECMA_SIMPLE_VALUE_TRUE @@ -551,7 +551,7 @@ ecma_op_from_property_descriptor (const ecma_property_descriptor_t *src_prop_des &prop_desc, false); ecma_deref_ecma_string (configurable_magic_string_p); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); return obj_p; } /* ecma_op_from_property_descriptor */ @@ -562,21 +562,21 @@ ecma_op_from_property_descriptor (const ecma_property_descriptor_t *src_prop_des * See also: * ECMA-262 v5, 8.10.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ ecma_property_descriptor_t *out_prop_desc_p) /**< out: filled property descriptor if return value is normal empty completion value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 1. if (!ecma_is_value_object (obj_value)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -615,9 +615,9 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ ecma_deref_ecma_string (enumerable_magic_string_p); - if (!ecma_is_completion_value_throw (ret_value)) + if (!ecma_is_value_error (ret_value)) { - JERRY_ASSERT (ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (ecma_is_value_empty (ret_value)); // 4. ecma_string_t *configurable_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_CONFIGURABLE); @@ -650,9 +650,9 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ ecma_deref_ecma_string (configurable_magic_string_p); } - if (!ecma_is_completion_value_throw (ret_value)) + if (!ecma_is_value_error (ret_value)) { - JERRY_ASSERT (ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (ecma_is_value_empty (ret_value)); // 5. ecma_string_t *value_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_VALUE); @@ -672,9 +672,9 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ ecma_deref_ecma_string (value_magic_string_p); } - if (!ecma_is_completion_value_throw (ret_value)) + if (!ecma_is_value_error (ret_value)) { - JERRY_ASSERT (ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (ecma_is_value_empty (ret_value)); // 6. ecma_string_t *writable_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_WRITABLE); @@ -707,9 +707,9 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ ecma_deref_ecma_string (writable_magic_string_p); } - if (!ecma_is_completion_value_throw (ret_value)) + if (!ecma_is_value_error (ret_value)) { - JERRY_ASSERT (ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (ecma_is_value_empty (ret_value)); // 7. ecma_string_t *get_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_GET); @@ -723,7 +723,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ if (!ecma_op_is_callable (get_prop_value) && !ecma_is_value_undefined (get_prop_value)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -750,9 +750,9 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ ecma_deref_ecma_string (get_magic_string_p); } - if (!ecma_is_completion_value_throw (ret_value)) + if (!ecma_is_value_error (ret_value)) { - JERRY_ASSERT (ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (ecma_is_value_empty (ret_value)); // 8. @@ -767,7 +767,7 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ if (!ecma_op_is_callable (set_prop_value) && !ecma_is_value_undefined (set_prop_value)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -794,9 +794,9 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ ecma_deref_ecma_string (set_magic_string_p); } - if (!ecma_is_completion_value_throw (ret_value)) + if (!ecma_is_value_error (ret_value)) { - JERRY_ASSERT (ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (ecma_is_value_empty (ret_value)); // 9. if (prop_desc.is_get_defined @@ -805,14 +805,14 @@ ecma_op_to_property_descriptor (ecma_value_t obj_value, /**< object value */ if (prop_desc.is_value_defined || prop_desc.is_writable_defined) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } } } - if (!ecma_is_completion_value_throw (ret_value)) + if (!ecma_is_value_error (ret_value)) { - JERRY_ASSERT (ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (ecma_is_value_empty (ret_value)); } else { diff --git a/jerry-core/ecma/operations/ecma-conversion.h b/jerry-core/ecma/operations/ecma-conversion.h index 2eab126f..8f86b11a 100644 --- a/jerry-core/ecma/operations/ecma-conversion.h +++ b/jerry-core/ecma/operations/ecma-conversion.h @@ -37,16 +37,16 @@ typedef enum ECMA_PREFERRED_TYPE_STRING /**< String */ } ecma_preferred_type_hint_t; -extern ecma_completion_value_t ecma_op_check_object_coercible (ecma_value_t); +extern ecma_value_t ecma_op_check_object_coercible (ecma_value_t); extern bool ecma_op_same_value (ecma_value_t, ecma_value_t); -extern ecma_completion_value_t ecma_op_to_primitive (ecma_value_t, ecma_preferred_type_hint_t); -extern ecma_completion_value_t ecma_op_to_boolean (ecma_value_t); -extern ecma_completion_value_t ecma_op_to_number (ecma_value_t); -extern ecma_completion_value_t ecma_op_to_string (ecma_value_t); -extern ecma_completion_value_t ecma_op_to_object (ecma_value_t); +extern ecma_value_t ecma_op_to_primitive (ecma_value_t, ecma_preferred_type_hint_t); +extern ecma_value_t ecma_op_to_boolean (ecma_value_t); +extern ecma_value_t ecma_op_to_number (ecma_value_t); +extern ecma_value_t ecma_op_to_string (ecma_value_t); +extern ecma_value_t ecma_op_to_object (ecma_value_t); extern ecma_object_t *ecma_op_from_property_descriptor (const ecma_property_descriptor_t *); -extern ecma_completion_value_t ecma_op_to_property_descriptor (ecma_value_t, ecma_property_descriptor_t *); +extern ecma_value_t ecma_op_to_property_descriptor (ecma_value_t, ecma_property_descriptor_t *); /** * @} diff --git a/jerry-core/ecma/operations/ecma-eval.c b/jerry-core/ecma/operations/ecma-eval.c index 90bda1e2..e18502e9 100644 --- a/jerry-core/ecma/operations/ecma-eval.c +++ b/jerry-core/ecma/operations/ecma-eval.c @@ -36,19 +36,19 @@ * ecma_op_eval_chars_buffer * ECMA-262 v5, 15.1.2.1 (steps 2 to 8) * - * @return completion value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_op_eval (ecma_string_t *code_p, /**< code string */ bool is_direct, /**< is eval called directly (ECMA-262 v5, 15.1.2.1.1) */ bool is_called_from_strict_mode_code) /**< is eval is called from strict mode code */ { - ecma_completion_value_t ret_value; + ecma_value_t ret_value; lit_utf8_size_t chars_num = ecma_string_get_size (code_p); if (chars_num == 0) { - ret_value = ecma_make_normal_completion_value (ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED)); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } else { @@ -80,9 +80,9 @@ ecma_op_eval (ecma_string_t *code_p, /**< code string */ * ecma_op_eval * ECMA-262 v5, 15.1.2.1 (steps 2 to 8) * - * @return completion value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t ecma_op_eval_chars_buffer (const jerry_api_char_t *code_p, /**< code characters buffer */ size_t code_buffer_size, /**< size of the buffer */ bool is_direct, /**< is eval called directly (ECMA-262 v5, 15.1.2.1.1) */ @@ -90,7 +90,7 @@ ecma_op_eval_chars_buffer (const jerry_api_char_t *code_p, /**< code characters { JERRY_ASSERT (code_p != NULL); - ecma_completion_value_t completion; + ecma_value_t completion; ecma_compiled_code_t *bytecode_data_p; jsp_status_t parse_status; @@ -104,11 +104,11 @@ ecma_op_eval_chars_buffer (const jerry_api_char_t *code_p, /**< code characters if (parse_status == JSP_STATUS_SYNTAX_ERROR) { - completion = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_SYNTAX)); + completion = ecma_raise_syntax_error (""); } else if (parse_status == JSP_STATUS_REFERENCE_ERROR) { - completion = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_REFERENCE)); + completion = ecma_raise_reference_error (""); } else { diff --git a/jerry-core/ecma/operations/ecma-eval.h b/jerry-core/ecma/operations/ecma-eval.h index d70309c7..c98a9b56 100644 --- a/jerry-core/ecma/operations/ecma-eval.h +++ b/jerry-core/ecma/operations/ecma-eval.h @@ -1,4 +1,4 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,10 +24,10 @@ * \addtogroup eval eval */ -extern ecma_completion_value_t +extern ecma_value_t ecma_op_eval (ecma_string_t *, bool, bool); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_eval_chars_buffer (const jerry_api_char_t *, size_t, bool, bool); /** diff --git a/jerry-core/ecma/operations/ecma-exceptions.c b/jerry-core/ecma/operations/ecma-exceptions.c index 69e329f2..69fc256f 100644 --- a/jerry-core/ecma/operations/ecma-exceptions.c +++ b/jerry-core/ecma/operations/ecma-exceptions.c @@ -133,10 +133,10 @@ ecma_new_standard_error_with_message (ecma_standard_error_t error_type, /**< nat /** * Raise a standard ecma-error with the given type and message. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_raise_standard_error (ecma_standard_error_t error_type, /**< error type */ const lit_utf8_byte_t *msg_p) /**< error message */ { @@ -144,16 +144,16 @@ ecma_raise_standard_error (ecma_standard_error_t error_type, /**< error type */ lit_zt_utf8_string_size (msg_p)); ecma_object_t *error_obj_p = ecma_new_standard_error_with_message (error_type, error_msg_p); ecma_deref_ecma_string (error_msg_p); - return ecma_make_throw_obj_completion_value (error_obj_p); + return ecma_make_error_obj_value (error_obj_p); } /* ecma_raise_standard_error */ /** * Raise a common error with the given message. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_raise_common_error (const char *msg_p) /**< error message */ { return ecma_raise_standard_error (ECMA_ERROR_COMMON, (const lit_utf8_byte_t *) msg_p); @@ -164,10 +164,10 @@ ecma_raise_common_error (const char *msg_p) /**< error message */ * * See also: ECMA-262 v5, 15.11.6.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_raise_eval_error (const char *msg_p) /**< error message */ { return ecma_raise_standard_error (ECMA_ERROR_EVAL, (const lit_utf8_byte_t *) msg_p); @@ -178,10 +178,10 @@ ecma_raise_eval_error (const char *msg_p) /**< error message */ * * See also: ECMA-262 v5, 15.11.6.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_raise_range_error (const char *msg_p) /**< error message */ { return ecma_raise_standard_error (ECMA_ERROR_RANGE, (const lit_utf8_byte_t *) msg_p); @@ -192,10 +192,10 @@ ecma_raise_range_error (const char *msg_p) /**< error message */ * * See also: ECMA-262 v5, 15.11.6.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_raise_reference_error (const char *msg_p) /**< error message */ { return ecma_raise_standard_error (ECMA_ERROR_REFERENCE, (const lit_utf8_byte_t *) msg_p); @@ -206,10 +206,10 @@ ecma_raise_reference_error (const char *msg_p) /**< error message */ * * See also: ECMA-262 v5, 15.11.6.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_raise_syntax_error (const char *msg_p) /**< error message */ { return ecma_raise_standard_error (ECMA_ERROR_SYNTAX, (const lit_utf8_byte_t *) msg_p); @@ -220,10 +220,10 @@ ecma_raise_syntax_error (const char *msg_p) /**< error message */ * * See also: ECMA-262 v5, 15.11.6.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_raise_type_error (const char *msg_p) /**< error message */ { return ecma_raise_standard_error (ECMA_ERROR_TYPE, (const lit_utf8_byte_t *) msg_p); @@ -234,10 +234,10 @@ ecma_raise_type_error (const char *msg_p) /**< error message */ * * See also: ECMA-262 v5, 15.11.6.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_raise_uri_error (const char *msg_p) /**< error message */ { return ecma_raise_standard_error (ECMA_ERROR_URI, (const lit_utf8_byte_t *) msg_p); diff --git a/jerry-core/ecma/operations/ecma-exceptions.h b/jerry-core/ecma/operations/ecma-exceptions.h index ca6090f7..a237edea 100644 --- a/jerry-core/ecma/operations/ecma-exceptions.h +++ b/jerry-core/ecma/operations/ecma-exceptions.h @@ -46,14 +46,14 @@ typedef enum extern ecma_object_t *ecma_new_standard_error (ecma_standard_error_t); extern ecma_object_t *ecma_new_standard_error_with_message (ecma_standard_error_t, ecma_string_t *); -extern ecma_completion_value_t ecma_raise_standard_error (ecma_standard_error_t, const lit_utf8_byte_t *); -extern ecma_completion_value_t ecma_raise_common_error (const char *); -extern ecma_completion_value_t ecma_raise_eval_error (const char *); -extern ecma_completion_value_t ecma_raise_range_error (const char *); -extern ecma_completion_value_t ecma_raise_reference_error (const char *); -extern ecma_completion_value_t ecma_raise_syntax_error (const char *); -extern ecma_completion_value_t ecma_raise_type_error (const char *); -extern ecma_completion_value_t ecma_raise_uri_error (const char *); +extern ecma_value_t ecma_raise_standard_error (ecma_standard_error_t, const lit_utf8_byte_t *); +extern ecma_value_t ecma_raise_common_error (const char *); +extern ecma_value_t ecma_raise_eval_error (const char *); +extern ecma_value_t ecma_raise_range_error (const char *); +extern ecma_value_t ecma_raise_reference_error (const char *); +extern ecma_value_t ecma_raise_syntax_error (const char *); +extern ecma_value_t ecma_raise_type_error (const char *); +extern ecma_value_t ecma_raise_uri_error (const char *); /** * @} diff --git a/jerry-core/ecma/operations/ecma-function-object.c b/jerry-core/ecma/operations/ecma-function-object.c index c0a777b7..fc568933 100644 --- a/jerry-core/ecma/operations/ecma-function-object.c +++ b/jerry-core/ecma/operations/ecma-function-object.c @@ -46,7 +46,7 @@ * false - otherwise. */ bool -ecma_op_is_callable (ecma_value_t value) /**< ecma-value */ +ecma_op_is_callable (ecma_value_t value) /**< ecma value */ { if (!ecma_is_value_object (value)) { @@ -71,7 +71,7 @@ ecma_op_is_callable (ecma_value_t value) /**< ecma-value */ * false - otherwise. */ bool -ecma_is_constructor (ecma_value_t value) /**< ecma-value */ +ecma_is_constructor (ecma_value_t value) /**< ecma value */ { if (!ecma_is_value_object (value)) { @@ -454,23 +454,23 @@ ecma_op_create_external_function_object (ecma_external_pointer_t code_p) /**< po * and for built-in Function objects * from section 15 (ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION). * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_function_has_instance (ecma_object_t *func_obj_p, /**< Function object */ ecma_value_t value) /**< argument 'V' */ { JERRY_ASSERT (func_obj_p != NULL && !ecma_is_lexical_environment (func_obj_p)); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (ecma_get_object_type (func_obj_p) == ECMA_OBJECT_TYPE_FUNCTION) { if (!ecma_is_value_object (value)) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } ecma_object_t *v_obj_p = ecma_get_object_from_value (value); @@ -483,7 +483,7 @@ ecma_op_function_has_instance (ecma_object_t *func_obj_p, /**< Function object * if (!ecma_is_value_object (prototype_obj_value)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -496,13 +496,13 @@ ecma_op_function_has_instance (ecma_object_t *func_obj_p, /**< Function object * if (v_obj_p == NULL) { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); break; } else if (v_obj_p == prototype_obj_p) { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); break; } @@ -516,7 +516,7 @@ ecma_op_function_has_instance (ecma_object_t *func_obj_p, /**< Function object * else if (ecma_get_object_type (func_obj_p) == ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION || ecma_get_object_type (func_obj_p) == ECMA_OBJECT_TYPE_EXTERNAL_FUNCTION) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -544,10 +544,10 @@ ecma_op_function_has_instance (ecma_object_t *func_obj_p, /**< Function object * * and for built-in Function objects * from section 15 (ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION). * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */ ecma_value_t this_arg_value, /**< 'this' argument's value */ const ecma_value_t *arguments_list_p, /**< arguments list */ @@ -557,7 +557,7 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */ && !ecma_is_lexical_environment (func_obj_p)); JERRY_ASSERT (ecma_op_is_callable (ecma_make_object_value (func_obj_p))); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (ecma_get_object_type (func_obj_p) == ECMA_OBJECT_TYPE_FUNCTION) { @@ -602,10 +602,9 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */ else { // 3., 4. - ecma_completion_value_t completion = ecma_op_to_object (this_arg_value); - JERRY_ASSERT (ecma_is_completion_value_normal (completion)); + this_binding = ecma_op_to_object (this_arg_value); - this_binding = ecma_get_completion_value_value (completion); + JERRY_ASSERT (!ecma_is_value_error (this_binding)); } // 5. @@ -628,28 +627,19 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */ } } - ecma_completion_value_t completion = vm_run (bytecode_data_p, - this_binding, - local_env_p, - false, - arguments_list_p, - arguments_list_len); - - if (ecma_is_completion_value_return (completion)) - { - ret_value = ecma_make_normal_completion_value (ecma_get_completion_value_value (completion)); - } - else - { - ret_value = completion; - } + ret_value = vm_run (bytecode_data_p, + this_binding, + local_env_p, + false, + arguments_list_p, + arguments_list_len); if (!is_no_lex_env) { ecma_deref_object (local_env_p); } - ecma_free_value (this_binding, true); + ecma_free_value (this_binding); } } else if (ecma_get_object_type (func_obj_p) == ECMA_OBJECT_TYPE_BUILT_IN_FUNCTION) @@ -733,7 +723,7 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */ } } - JERRY_ASSERT (!ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (!ecma_is_value_empty (ret_value)); return ret_value; } /* ecma_op_function_call */ @@ -743,10 +733,10 @@ ecma_op_function_call (ecma_object_t *func_obj_p, /**< Function object */ * created through 13.2 (ECMA_OBJECT_TYPE_FUNCTION) and * externally defined (host) functions (ECMA_OBJECT_TYPE_EXTERNAL_FUNCTION). * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -static ecma_completion_value_t +static ecma_value_t ecma_op_function_construct_simple_or_external (ecma_object_t *func_obj_p, /**< Function object */ const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< length of arguments list */ @@ -754,7 +744,7 @@ ecma_op_function_construct_simple_or_external (ecma_object_t *func_obj_p, /**< F JERRY_ASSERT (ecma_get_object_type (func_obj_p) == ECMA_OBJECT_TYPE_FUNCTION || ecma_get_object_type (func_obj_p) == ECMA_OBJECT_TYPE_EXTERNAL_FUNCTION); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_string_t *prototype_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_PROTOTYPE); @@ -800,22 +790,18 @@ ecma_op_function_construct_simple_or_external (ecma_object_t *func_obj_p, /**< F arguments_list_len), ret_value); - ecma_value_t obj_value; - // 9. if (ecma_is_value_object (call_completion)) { - obj_value = ecma_copy_value (call_completion, true); + ret_value = ecma_copy_value (call_completion, true); } else { // 10. ecma_ref_object (obj_p); - obj_value = ecma_make_object_value (obj_p); + ret_value = ecma_make_object_value (obj_p); } - ret_value = ecma_make_normal_completion_value (obj_value); - ECMA_FINALIZE (call_completion); ecma_deref_object (obj_p); @@ -833,10 +819,10 @@ ecma_op_function_construct_simple_or_external (ecma_object_t *func_obj_p, /**< F * and externally defined host functions (ECMA_OBJECT_TYPE_EXTERNAL_FUNCTION); * 15.3.4.5.1 - for Function objects, created through 15.3.4.5 (ECMA_OBJECT_TYPE_BOUND_FUNCTION). * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_function_construct (ecma_object_t *func_obj_p, /**< Function object */ const ecma_value_t *arguments_list_p, /**< arguments list */ ecma_length_t arguments_list_len) /**< length of arguments list */ @@ -845,7 +831,7 @@ ecma_op_function_construct (ecma_object_t *func_obj_p, /**< Function object */ && !ecma_is_lexical_environment (func_obj_p)); JERRY_ASSERT (ecma_is_constructor (ecma_make_object_value (func_obj_p))); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (ecma_get_object_type (func_obj_p) == ECMA_OBJECT_TYPE_FUNCTION) { @@ -884,7 +870,7 @@ ecma_op_function_construct (ecma_object_t *func_obj_p, /**< Function object */ /* 2. */ if (!ecma_is_constructor (ecma_make_object_value (target_func_obj_p))) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -935,10 +921,10 @@ ecma_op_function_construct (ecma_object_t *func_obj_p, /**< Function object */ * * See also: ECMA-262 v5, 10.5 - Declaration binding instantiation (block 5). * - * @return completion value - * returned value must be freed with ecma_free_completion_value. + * @return ecma value + * returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_op_function_declaration (ecma_object_t *lex_env_p, /**< lexical environment */ ecma_string_t *function_name_p, /**< function name */ const ecma_compiled_code_t *bytecode_data_p, /**< bytecode data */ @@ -955,16 +941,16 @@ ecma_op_function_declaration (ecma_object_t *lex_env_p, /**< lexical environment // c. bool func_already_declared = ecma_op_has_binding (lex_env_p, function_name_p); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // d. if (!func_already_declared) { - ecma_completion_value_t completion = ecma_op_create_mutable_binding (lex_env_p, - function_name_p, - is_configurable_bindings); + ecma_value_t completion = ecma_op_create_mutable_binding (lex_env_p, + function_name_p, + is_configurable_bindings); - JERRY_ASSERT (ecma_is_completion_value_empty (completion)); + JERRY_ASSERT (ecma_is_value_empty (completion)); } else if (ecma_is_lexical_environment_global (lex_env_p)) { @@ -975,7 +961,7 @@ ecma_op_function_declaration (ecma_object_t *lex_env_p, /**< lexical environment if (ecma_is_property_configurable (existing_prop_p)) { - ecma_completion_value_t completion; + ecma_value_t completion; completion = ecma_builtin_helper_def_prop (glob_obj_p, function_name_p, ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED), @@ -984,11 +970,11 @@ ecma_op_function_declaration (ecma_object_t *lex_env_p, /**< lexical environment is_configurable_bindings, /* Configurable */ true); /* Failure handling */ - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); } else if (existing_prop_p->type == ECMA_PROPERTY_NAMEDACCESSOR) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -997,14 +983,14 @@ ecma_op_function_declaration (ecma_object_t *lex_env_p, /**< lexical environment if (!ecma_is_property_writable (existing_prop_p) || !ecma_is_property_enumerable (existing_prop_p)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } } ecma_deref_object (glob_obj_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { // f. ret_value = ecma_op_set_mutable_binding (lex_env_p, @@ -1014,7 +1000,7 @@ ecma_op_function_declaration (ecma_object_t *lex_env_p, /**< lexical environment } else { - JERRY_ASSERT (ecma_is_completion_value_throw (ret_value)); + JERRY_ASSERT (ecma_is_value_error (ret_value)); } ecma_deref_object (func_obj_p); diff --git a/jerry-core/ecma/operations/ecma-function-object.h b/jerry-core/ecma/operations/ecma-function-object.h index 3fb2e6c1..8238f0eb 100644 --- a/jerry-core/ecma/operations/ecma-function-object.h +++ b/jerry-core/ecma/operations/ecma-function-object.h @@ -40,20 +40,20 @@ ecma_op_function_list_lazy_property_names (bool, extern ecma_object_t * ecma_op_create_external_function_object (ecma_external_pointer_t); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_function_call (ecma_object_t *, ecma_value_t, const ecma_value_t *, ecma_length_t); extern ecma_property_t * ecma_op_function_object_get_own_property (ecma_object_t *, ecma_string_t *); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_function_construct (ecma_object_t *, const ecma_value_t *, ecma_length_t); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_function_has_instance (ecma_object_t *, ecma_value_t); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_function_declaration (ecma_object_t *, ecma_string_t *, const ecma_compiled_code_t *, bool, bool); diff --git a/jerry-core/ecma/operations/ecma-get-put-value.c b/jerry-core/ecma/operations/ecma-get-put-value.c index 8d4a5afa..c1b11177 100644 --- a/jerry-core/ecma/operations/ecma-get-put-value.c +++ b/jerry-core/ecma/operations/ecma-get-put-value.c @@ -39,10 +39,10 @@ * * See also: ECMA-262 v5, 8.7.1, sections 3 and 5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_op_get_value_lex_env_base (ecma_object_t *ref_base_lex_env_p, /**< reference's base (lexical environment) */ ecma_string_t *var_name_string_p, /**< variable name */ bool is_strict) /**< flag indicating strict mode */ @@ -52,7 +52,7 @@ ecma_op_get_value_lex_env_base (ecma_object_t *ref_base_lex_env_p, /**< referenc // 3. if (unlikely (is_unresolvable_reference)) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_REFERENCE)); + return ecma_raise_reference_error (""); } // 5. @@ -70,10 +70,10 @@ ecma_op_get_value_lex_env_base (ecma_object_t *ref_base_lex_env_p, /**< referenc * * See also: ECMA-262 v5, 8.7.1, section 4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */ { const ecma_value_t base = ref.base; @@ -105,7 +105,7 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */ else { // 4.b case 2 - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // 1. ECMA_TRY_CATCH (obj_base, ecma_op_to_object (base), ret_value); @@ -121,13 +121,12 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */ if (prop_p == NULL) { // 3. - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } else if (prop_p->type == ECMA_PROPERTY_NAMEDDATA) { // 4. - ecma_value_t prop_value = ecma_copy_value (ecma_get_named_data_property_value (prop_p), true); - ret_value = ecma_make_normal_completion_value (prop_value); + ret_value = ecma_copy_value (ecma_get_named_data_property_value (prop_p), true); } else { @@ -139,7 +138,7 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */ // 6. if (obj_p == NULL) { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } else { @@ -159,10 +158,10 @@ ecma_op_get_value_object_base (ecma_reference_t ref) /**< ECMA-reference */ * * See also: ECMA-262 v5, 8.7.2, sections 3 and 5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_op_put_value_lex_env_base (ecma_object_t *ref_base_lex_env_p, /**< reference's base (lexical environment) */ ecma_string_t *var_name_string_p, /**< variable name */ bool is_strict, /**< flag indicating strict mode */ @@ -176,24 +175,23 @@ ecma_op_put_value_lex_env_base (ecma_object_t *ref_base_lex_env_p, /**< referenc // 3.a. if (is_strict) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_REFERENCE)); + return ecma_raise_reference_error (""); } else { // 3.b. ecma_object_t *global_object_p = ecma_builtin_get (ECMA_BUILTIN_ID_GLOBAL); - ecma_completion_value_t completion = ecma_op_object_put (global_object_p, - var_name_string_p, - value, - false); + ecma_value_t completion = ecma_op_object_put (global_object_p, + var_name_string_p, + value, + false); ecma_deref_object (global_object_p); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion) - || ecma_is_completion_value_normal_false (completion)); + JERRY_ASSERT (ecma_is_value_boolean (completion)); - return ecma_make_empty_completion_value (); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); } } @@ -211,19 +209,19 @@ ecma_op_put_value_lex_env_base (ecma_object_t *ref_base_lex_env_p, /**< referenc /** * Reject sequence for PutValue * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -static ecma_completion_value_t +static ecma_value_t ecma_reject_put (bool is_throw) /**< Throw flag */ { if (is_throw) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } else { - return ecma_make_empty_completion_value (); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); } } /* ecma_reject_put */ @@ -232,10 +230,10 @@ ecma_reject_put (bool is_throw) /**< Throw flag */ * * See also: ECMA-262 v5, 8.7.2, section 4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */ ecma_value_t value) /**< ECMA-value */ { @@ -260,7 +258,7 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */ JERRY_ASSERT (obj_p != NULL && !ecma_is_lexical_environment (obj_p)); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (put_ret_value, ecma_op_object_put (obj_p, @@ -270,7 +268,7 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */ ref.is_strict), ret_value); - ret_value = ecma_make_empty_completion_value (); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_FINALIZE (put_ret_value); @@ -279,7 +277,7 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */ else { // 4.b case 2 - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // sub_1. ECMA_TRY_CATCH (obj_base, ecma_op_to_object (base), ret_value); @@ -324,7 +322,7 @@ ecma_op_put_value_object_base (ecma_reference_t ref, /**< ECMA-reference */ ecma_op_function_call (setter_p, base, &value, 1), ret_value); - ret_value = ecma_make_empty_completion_value (); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_FINALIZE (call_ret); } diff --git a/jerry-core/ecma/operations/ecma-lex-env.c b/jerry-core/ecma/operations/ecma-lex-env.c index b7ed28f1..522d79bc 100644 --- a/jerry-core/ecma/operations/ecma-lex-env.c +++ b/jerry-core/ecma/operations/ecma-lex-env.c @@ -138,10 +138,10 @@ ecma_op_has_binding (ecma_object_t *lex_env_p, /**< lexical environment */ * * See also: ECMA-262 v5, 10.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_create_mutable_binding (ecma_object_t *lex_env_p, /**< lexical environment */ ecma_string_t *name_p, /**< argument N */ bool is_deletable) /**< argument D */ @@ -162,7 +162,7 @@ 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); - ecma_completion_value_t completion; + ecma_value_t completion; completion = ecma_builtin_helper_def_prop (binding_obj_p, name_p, ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED), @@ -171,18 +171,17 @@ ecma_op_create_mutable_binding (ecma_object_t *lex_env_p, /**< lexical environme is_deletable, /* Configurable */ true); /* Failure handling */ - if (ecma_is_completion_value_throw (completion)) + if (ecma_is_value_error (completion)) { return completion; } else { - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion) - || ecma_is_completion_value_normal_false (completion)); + JERRY_ASSERT (ecma_is_value_boolean (completion)); } } - return ecma_make_empty_completion_value (); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); } /* ecma_op_create_mutable_binding */ /** @@ -190,10 +189,10 @@ ecma_op_create_mutable_binding (ecma_object_t *lex_env_p, /**< lexical environme * * See also: ECMA-262 v5, 10.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_op_set_mutable_binding (ecma_object_t *lex_env_p, /**< lexical environment */ ecma_string_t *name_p, /**< argument N */ ecma_value_t value, /**< argument V */ @@ -218,7 +217,7 @@ ecma_op_set_mutable_binding (ecma_object_t *lex_env_p, /**< lexical environment if (is_equal) { - return ecma_make_throw_obj_completion_value (ecma_builtin_get (ECMA_BUILTIN_ID_COMPACT_PROFILE_ERROR)); + return ecma_make_error_obj_value (ecma_builtin_get (ECMA_BUILTIN_ID_COMPACT_PROFILE_ERROR)); } # endif /* CONFIG_ECMA_COMPACT_PROFILE */ #endif /* !JERRY_NDEBUG */ @@ -231,7 +230,7 @@ ecma_op_set_mutable_binding (ecma_object_t *lex_env_p, /**< lexical environment } else if (is_strict) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } } else @@ -240,23 +239,22 @@ ecma_op_set_mutable_binding (ecma_object_t *lex_env_p, /**< lexical environment ecma_object_t *binding_obj_p = ecma_get_lex_env_binding_object (lex_env_p); - ecma_completion_value_t completion = ecma_op_object_put (binding_obj_p, - name_p, - value, - is_strict); + ecma_value_t completion = ecma_op_object_put (binding_obj_p, + name_p, + value, + is_strict); - if (ecma_is_completion_value_throw (completion)) + if (ecma_is_value_error (completion)) { return completion; } else { - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion) - || ecma_is_completion_value_normal_false (completion)); + JERRY_ASSERT (ecma_is_value_boolean (completion)); } } - return ecma_make_empty_completion_value (); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); } /* ecma_op_set_mutable_binding */ /** @@ -264,10 +262,10 @@ ecma_op_set_mutable_binding (ecma_object_t *lex_env_p, /**< lexical environment * * See also: ECMA-262 v5, 10.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_op_get_binding_value (ecma_object_t *lex_env_p, /**< lexical environment */ ecma_string_t *name_p, /**< argument N */ bool is_strict) /**< argument S */ @@ -293,7 +291,7 @@ ecma_op_get_binding_value (ecma_object_t *lex_env_p, /**< lexical environment */ if (is_equal) { - return ecma_make_throw_obj_completion_value (ecma_builtin_get (ECMA_BUILTIN_ID_COMPACT_PROFILE_ERROR)); + return ecma_make_error_obj_value (ecma_builtin_get (ECMA_BUILTIN_ID_COMPACT_PROFILE_ERROR)); } # endif /* CONFIG_ECMA_COMPACT_PROFILE */ #endif /* !JERRY_NDEBUG */ @@ -309,15 +307,15 @@ ecma_op_get_binding_value (ecma_object_t *lex_env_p, /**< lexical environment */ /* unitialized immutable binding */ if (is_strict) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_REFERENCE)); + return ecma_raise_reference_error (""); } else { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } } - return ecma_make_normal_completion_value (ecma_copy_value (prop_value, true)); + return ecma_copy_value (prop_value, true); } else { @@ -329,11 +327,11 @@ ecma_op_get_binding_value (ecma_object_t *lex_env_p, /**< lexical environment */ { if (is_strict) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_REFERENCE)); + return ecma_raise_reference_error (""); } else { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } } @@ -346,11 +344,11 @@ ecma_op_get_binding_value (ecma_object_t *lex_env_p, /**< lexical environment */ * * See also: ECMA-262 v5, 10.2.1 * - * @return completion value + * @return ecma value * Return value is simple and so need not be freed. - * However, ecma_free_completion_value may be called for it, but it is a no-op. + * However, ecma_free_value may be called for it, but it is a no-op. */ -ecma_completion_value_t +ecma_value_t ecma_op_delete_binding (ecma_object_t *lex_env_p, /**< lexical environment */ ecma_string_t *name_p) /**< argument N */ { @@ -384,7 +382,7 @@ ecma_op_delete_binding (ecma_object_t *lex_env_p, /**< lexical environment */ } } - return ecma_make_simple_completion_value (ret_val); + return ecma_make_simple_value (ret_val); } else { @@ -401,10 +399,10 @@ ecma_op_delete_binding (ecma_object_t *lex_env_p, /**< lexical environment */ * * See also: ECMA-262 v5, 10.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t ecma_op_implicit_this_value (ecma_object_t *lex_env_p) /**< lexical environment */ { JERRY_ASSERT (lex_env_p != NULL @@ -412,7 +410,7 @@ ecma_op_implicit_this_value (ecma_object_t *lex_env_p) /**< lexical environment if (ecma_get_lex_env_type (lex_env_p) == ECMA_LEXICAL_ENVIRONMENT_DECLARATIVE) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } else { @@ -423,11 +421,11 @@ ecma_op_implicit_this_value (ecma_object_t *lex_env_p) /**< lexical environment ecma_object_t *binding_obj_p = ecma_get_lex_env_binding_object (lex_env_p); ecma_ref_object (binding_obj_p); - return ecma_make_normal_completion_value (ecma_make_object_value (binding_obj_p)); + return ecma_make_object_value (binding_obj_p); } else { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } } } /* ecma_op_implicit_this_value */ diff --git a/jerry-core/ecma/operations/ecma-lex-env.h b/jerry-core/ecma/operations/ecma-lex-env.h index 712cc52a..30a07fea 100644 --- a/jerry-core/ecma/operations/ecma-lex-env.h +++ b/jerry-core/ecma/operations/ecma-lex-env.h @@ -44,18 +44,18 @@ extern bool ecma_is_lexical_environment_global (ecma_object_t *); */ /* ECMA-262 v5, 8.7.1 and 8.7.2 */ -extern ecma_completion_value_t ecma_op_get_value_lex_env_base (ecma_object_t *, ecma_string_t *, bool); -extern ecma_completion_value_t ecma_op_get_value_object_base (ecma_reference_t); -extern ecma_completion_value_t ecma_op_put_value_lex_env_base (ecma_object_t *, ecma_string_t *, bool, ecma_value_t); -extern ecma_completion_value_t ecma_op_put_value_object_base (ecma_reference_t, ecma_value_t); +extern ecma_value_t ecma_op_get_value_lex_env_base (ecma_object_t *, ecma_string_t *, bool); +extern ecma_value_t ecma_op_get_value_object_base (ecma_reference_t); +extern ecma_value_t ecma_op_put_value_lex_env_base (ecma_object_t *, ecma_string_t *, bool, ecma_value_t); +extern ecma_value_t ecma_op_put_value_object_base (ecma_reference_t, ecma_value_t); /* ECMA-262 v5, Table 17. Abstract methods of Environment Records */ extern bool ecma_op_has_binding (ecma_object_t *, ecma_string_t *); -extern ecma_completion_value_t ecma_op_create_mutable_binding (ecma_object_t *, ecma_string_t *, bool); -extern ecma_completion_value_t ecma_op_set_mutable_binding (ecma_object_t *, ecma_string_t *, ecma_value_t, bool); -extern ecma_completion_value_t ecma_op_get_binding_value (ecma_object_t *, ecma_string_t *, bool); -extern ecma_completion_value_t ecma_op_delete_binding (ecma_object_t *, ecma_string_t *); -extern ecma_completion_value_t ecma_op_implicit_this_value (ecma_object_t *); +extern ecma_value_t ecma_op_create_mutable_binding (ecma_object_t *, ecma_string_t *, bool); +extern ecma_value_t ecma_op_set_mutable_binding (ecma_object_t *, ecma_string_t *, ecma_value_t, bool); +extern ecma_value_t ecma_op_get_binding_value (ecma_object_t *, ecma_string_t *, bool); +extern ecma_value_t ecma_op_delete_binding (ecma_object_t *, ecma_string_t *); +extern ecma_value_t ecma_op_implicit_this_value (ecma_object_t *); /* ECMA-262 v5, Table 18. Additional methods of Declarative Environment Records */ extern void ecma_op_create_immutable_binding (ecma_object_t *, ecma_string_t *); diff --git a/jerry-core/ecma/operations/ecma-number-object.c b/jerry-core/ecma/operations/ecma-number-object.c index 8303ef68..f7a83e88 100644 --- a/jerry-core/ecma/operations/ecma-number-object.c +++ b/jerry-core/ecma/operations/ecma-number-object.c @@ -35,20 +35,20 @@ * * See also: ECMA-262 v5, 15.7.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_create_number_object (ecma_value_t arg) /**< argument passed to the Number constructor */ { - ecma_completion_value_t conv_to_num_completion = ecma_op_to_number (arg); + ecma_value_t conv_to_num_completion = ecma_op_to_number (arg); - if (!ecma_is_completion_value_normal (conv_to_num_completion)) + if (ecma_is_value_error (conv_to_num_completion)) { return conv_to_num_completion; } - ecma_number_t *prim_value_p = ecma_get_number_from_completion_value (conv_to_num_completion); + ecma_number_t *prim_value_p = ecma_get_number_from_value (conv_to_num_completion); #ifndef CONFIG_ECMA_COMPACT_PROFILE_DISABLE_NUMBER_BUILTIN ecma_object_t *prototype_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_NUMBER_PROTOTYPE); @@ -68,7 +68,7 @@ ecma_op_create_number_object (ecma_value_t arg) /**< argument passed to the Numb ECMA_INTERNAL_PROPERTY_PRIMITIVE_NUMBER_VALUE); ECMA_SET_POINTER (prim_value_prop_p->u.internal_property.value, prim_value_p); - return ecma_make_normal_completion_value (ecma_make_object_value (obj_p)); + return ecma_make_object_value (obj_p); } /* ecma_op_create_number_object */ /** diff --git a/jerry-core/ecma/operations/ecma-number-object.h b/jerry-core/ecma/operations/ecma-number-object.h index f1ce7735..f02e822c 100644 --- a/jerry-core/ecma/operations/ecma-number-object.h +++ b/jerry-core/ecma/operations/ecma-number-object.h @@ -25,7 +25,7 @@ * @{ */ -extern ecma_completion_value_t ecma_op_create_number_object (ecma_value_t); +extern ecma_value_t ecma_op_create_number_object (ecma_value_t); /** * @} diff --git a/jerry-core/ecma/operations/ecma-objects-arguments.c b/jerry-core/ecma/operations/ecma-objects-arguments.c index 4483269f..6ac990c2 100644 --- a/jerry-core/ecma/operations/ecma-objects-arguments.c +++ b/jerry-core/ecma/operations/ecma-objects-arguments.c @@ -60,7 +60,7 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function indx < arguments_number; indx++) { - ecma_completion_value_t completion; + ecma_value_t completion; ecma_string_t *indx_string_p = ecma_new_ecma_string_from_uint32 (indx); completion = ecma_builtin_helper_def_prop (obj_p, @@ -71,7 +71,7 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function true, /* Configurable */ false); /* Failure handling */ - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); ecma_deref_ecma_string (indx_string_p); } @@ -88,15 +88,15 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function // 7. ecma_string_t *length_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_LENGTH); - ecma_completion_value_t completion = ecma_builtin_helper_def_prop (obj_p, - length_magic_string_p, - ecma_make_number_value (len_p), - true, /* Writable */ - false, /* Enumerable */ - true, /* Configurable */ - false); /* Failure handling */ - - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + ecma_value_t completion = ecma_builtin_helper_def_prop (obj_p, + length_magic_string_p, + ecma_make_number_value (len_p), + true, /* Writable */ + false, /* Enumerable */ + true, /* Configurable */ + false); /* Failure handling */ + + JERRY_ASSERT (ecma_is_value_true (completion)); ecma_deref_ecma_string (length_magic_string_p); ecma_dealloc_number (len_p); @@ -156,7 +156,7 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function indx_string_p, &prop_desc, false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); ecma_deref_ecma_string (indx_string_p); ecma_deref_ecma_string (name_p); @@ -197,7 +197,7 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function true, /* Configurable */ false); /* Failure handling */ - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); ecma_deref_ecma_string (callee_magic_string_p); } @@ -227,7 +227,7 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function callee_magic_string_p, &prop_desc, false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); ecma_deref_ecma_string (callee_magic_string_p); ecma_string_t *caller_magic_string_p = ecma_get_magic_string (LIT_MAGIC_STRING_CALLER); @@ -235,7 +235,7 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function caller_magic_string_p, &prop_desc, false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); ecma_deref_ecma_string (caller_magic_string_p); ecma_deref_object (thrower_p); @@ -252,17 +252,17 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function } else { - ecma_completion_value_t completion = ecma_op_create_mutable_binding (lex_env_p, - arguments_string_p, - false); - JERRY_ASSERT (ecma_is_completion_value_empty (completion)); + ecma_value_t completion = ecma_op_create_mutable_binding (lex_env_p, + arguments_string_p, + false); + JERRY_ASSERT (ecma_is_value_empty (completion)); completion = ecma_op_set_mutable_binding (lex_env_p, arguments_string_p, ecma_make_object_value (obj_p), false); - JERRY_ASSERT (ecma_is_completion_value_empty (completion)); + JERRY_ASSERT (ecma_is_value_empty (completion)); } ecma_deref_ecma_string (arguments_string_p); @@ -275,10 +275,10 @@ ecma_op_create_arguments_object (ecma_object_t *func_obj_p, /**< callee function * Note: * The procedure emulates execution of function described by MakeArgGetter * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -static ecma_completion_value_t +static ecma_value_t ecma_arguments_get_mapped_arg_value (ecma_object_t *map_p, /**< [[ParametersMap]] object */ ecma_property_t *arg_name_prop_p) /**< property of [[ParametersMap]] corresponding to index and value @@ -294,10 +294,8 @@ ecma_arguments_get_mapped_arg_value (ecma_object_t *map_p, /**< [[ParametersMap] ecma_string_t *arg_name_p = ecma_get_string_from_value (arg_name_prop_value); - ecma_completion_value_t completion = ecma_op_get_binding_value (lex_env_p, - arg_name_p, - true); - JERRY_ASSERT (ecma_is_completion_value_normal (completion)); + ecma_value_t completion = ecma_op_get_binding_value (lex_env_p, arg_name_p, true); + JERRY_ASSERT (!ecma_is_value_error (completion)); return completion; } /* ecma_arguments_get_mapped_arg_value */ @@ -309,10 +307,10 @@ ecma_arguments_get_mapped_arg_value (ecma_object_t *map_p, /**< [[ParametersMap] * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 10.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_arguments_object_get (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p) /**< property name */ { @@ -346,8 +344,8 @@ ecma_op_arguments_object_get (ecma_object_t *obj_p, /**< the object */ * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 10.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ ecma_property_t* ecma_op_arguments_object_get_own_property (ecma_object_t *obj_p, /**< the object */ @@ -374,11 +372,11 @@ ecma_op_arguments_object_get_own_property (ecma_object_t *obj_p, /**< the object if (mapped_prop_p != NULL) { // a. - ecma_completion_value_t completion = ecma_arguments_get_mapped_arg_value (map_p, mapped_prop_p); + ecma_value_t completion = ecma_arguments_get_mapped_arg_value (map_p, mapped_prop_p); - ecma_named_data_property_assign_value (obj_p, desc_p, ecma_get_completion_value_value (completion)); + ecma_named_data_property_assign_value (obj_p, desc_p, completion); - ecma_free_completion_value (completion); + ecma_free_value (completion); } // 6. @@ -392,10 +390,10 @@ ecma_op_arguments_object_get_own_property (ecma_object_t *obj_p, /**< the object * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 10.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p, /**< property name */ const ecma_property_descriptor_t *property_desc_p, /**< property @@ -411,7 +409,7 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p); // 3. - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (defined, ecma_op_general_object_define_own_property (obj_p, @@ -427,18 +425,18 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj if (property_desc_p->is_get_defined || property_desc_p->is_set_defined) { - ecma_completion_value_t completion = ecma_op_object_delete (map_p, property_name_p, false); + ecma_value_t completion = ecma_op_object_delete (map_p, property_name_p, false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); // 6. - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } else { // b. - ecma_completion_value_t completion = ecma_make_empty_completion_value (); + ecma_value_t completion = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); // i. if (property_desc_p->is_value_defined) @@ -457,7 +455,7 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj arg_name_p, property_desc_p->value, true); - JERRY_ASSERT (ecma_is_completion_value_empty (completion)); + JERRY_ASSERT (ecma_is_value_empty (completion)); } // ii. @@ -468,16 +466,16 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj property_name_p, false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (completion)); + JERRY_ASSERT (ecma_is_value_true (completion)); } // 6. - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } } else { - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } ECMA_FINALIZE (defined); @@ -492,10 +490,10 @@ ecma_op_arguments_object_define_own_property (ecma_object_t *obj_p, /**< the obj * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 10.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_arguments_object_delete (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p, /**< property name */ bool is_throw) /**< flag that controls failure handling */ @@ -509,7 +507,7 @@ ecma_op_arguments_object_delete (ecma_object_t *obj_p, /**< the object */ ecma_property_t *mapped_prop_p = ecma_op_object_get_own_property (map_p, property_name_p); // 3. - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (delete_in_args_ret, ecma_op_general_object_delete (obj_p, @@ -521,19 +519,17 @@ ecma_op_arguments_object_delete (ecma_object_t *obj_p, /**< the object */ { if (mapped_prop_p != NULL) { - ecma_completion_value_t delete_in_map_completion = ecma_op_object_delete (map_p, - property_name_p, - false); - JERRY_ASSERT (ecma_is_completion_value_normal_true (delete_in_map_completion)); + ecma_value_t delete_in_map_completion = ecma_op_object_delete (map_p, property_name_p, false); + JERRY_ASSERT (ecma_is_value_true (delete_in_map_completion)); } - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } else { JERRY_ASSERT (ecma_is_value_boolean (delete_in_args_ret)); - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } ECMA_FINALIZE (delete_in_args_ret); diff --git a/jerry-core/ecma/operations/ecma-objects-arguments.h b/jerry-core/ecma/operations/ecma-objects-arguments.h index 74d62642..e907b262 100644 --- a/jerry-core/ecma/operations/ecma-objects-arguments.h +++ b/jerry-core/ecma/operations/ecma-objects-arguments.h @@ -23,13 +23,13 @@ extern void ecma_op_create_arguments_object (ecma_object_t *, ecma_object_t *, const ecma_value_t *, ecma_length_t, const ecma_compiled_code_t *); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_arguments_object_get (ecma_object_t *, ecma_string_t *); extern ecma_property_t * ecma_op_arguments_object_get_own_property (ecma_object_t *, ecma_string_t *); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_arguments_object_delete (ecma_object_t *, ecma_string_t *, bool); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_arguments_object_define_own_property (ecma_object_t *, ecma_string_t *, const ecma_property_descriptor_t *, bool); diff --git a/jerry-core/ecma/operations/ecma-objects-general.c b/jerry-core/ecma/operations/ecma-objects-general.c index 5f5d4f3d..7c64575a 100644 --- a/jerry-core/ecma/operations/ecma-objects-general.c +++ b/jerry-core/ecma/operations/ecma-objects-general.c @@ -34,19 +34,19 @@ /** * Reject sequence * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_reject (bool is_throw) /**< Throw flag */ { if (is_throw) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } else { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } } /* ecma_reject */ @@ -77,7 +77,7 @@ ecma_op_create_object_object_noarg (void) * * @return pointer to newly created 'Object' object */ -ecma_completion_value_t +ecma_value_t ecma_op_create_object_object_arg (ecma_value_t value) /**< argument of constructor */ { ecma_check_value_type_is_spec_defined (value); @@ -98,7 +98,7 @@ ecma_op_create_object_object_arg (ecma_value_t value) /**< argument of construct ecma_object_t *obj_p = ecma_op_create_object_object_noarg (); - return ecma_make_normal_completion_value (ecma_make_object_value (obj_p)); + return ecma_make_object_value (obj_p); } } /* ecma_op_create_object_object_arg */ @@ -135,10 +135,10 @@ ecma_op_create_object_object_noarg_and_set_prototype (ecma_object_t *object_prot * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 8.12.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_general_object_get (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p) /**< property name */ { @@ -152,14 +152,13 @@ ecma_op_general_object_get (ecma_object_t *obj_p, /**< the object */ // 2. if (prop_p == NULL) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } // 3. if (prop_p->type == ECMA_PROPERTY_NAMEDDATA) { - return ecma_make_normal_completion_value (ecma_copy_value (ecma_get_named_data_property_value (prop_p), - true)); + return ecma_copy_value (ecma_get_named_data_property_value (prop_p), true); } else { @@ -169,7 +168,7 @@ ecma_op_general_object_get (ecma_object_t *obj_p, /**< the object */ // 5. if (getter_p == NULL) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } else { @@ -252,13 +251,13 @@ ecma_op_general_object_get_property (ecma_object_t *obj_p, /**< the object */ * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 8.12.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_general_object_put (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p, /**< property name */ - ecma_value_t value, /**< ecma-value */ + ecma_value_t value, /**< ecma value */ bool is_throw) /**< flag that controls failure handling */ { JERRY_ASSERT (obj_p != NULL @@ -271,12 +270,12 @@ ecma_op_general_object_put (ecma_object_t *obj_p, /**< the object */ if (is_throw) { // a. - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } else { // b. - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } } @@ -312,7 +311,7 @@ ecma_op_general_object_put (ecma_object_t *obj_p, /**< the object */ ecma_object_t *setter_p = ecma_get_named_accessor_property_setter (desc_p); JERRY_ASSERT (setter_p != NULL); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (call_ret, ecma_op_function_call (setter_p, @@ -321,7 +320,7 @@ ecma_op_general_object_put (ecma_object_t *obj_p, /**< the object */ 1), ret_value); - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); ECMA_FINALIZE (call_ret); @@ -449,10 +448,10 @@ ecma_op_general_object_can_put (ecma_object_t *obj_p, /**< the object */ * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 8.12.7 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_general_object_delete (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p, /**< property name */ bool is_throw) /**< flag that controls failure handling */ @@ -467,7 +466,7 @@ ecma_op_general_object_delete (ecma_object_t *obj_p, /**< the object */ // 2. if (desc_p == NULL) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } // 3. @@ -477,17 +476,17 @@ ecma_op_general_object_delete (ecma_object_t *obj_p, /**< the object */ ecma_delete_property (obj_p, desc_p); // b. - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } else if (is_throw) { // 4. - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } else { // 5. - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } JERRY_UNREACHABLE (); @@ -500,10 +499,10 @@ ecma_op_general_object_delete (ecma_object_t *obj_p, /**< the object */ * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 8.12.8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_general_object_default_value (ecma_object_t *obj_p, /**< the object */ ecma_preferred_type_hint_t hint) /**< hint on preferred result type */ { @@ -538,20 +537,20 @@ ecma_op_general_object_default_value (ecma_object_t *obj_p, /**< the object */ ecma_string_t *function_name_p = ecma_get_magic_string (function_name_magic_string_id); - ecma_completion_value_t function_value_get_completion = ecma_op_object_get (obj_p, function_name_p); + ecma_value_t function_value_get_completion = ecma_op_object_get (obj_p, function_name_p); ecma_deref_ecma_string (function_name_p); - if (!ecma_is_completion_value_normal (function_value_get_completion)) + if (ecma_is_value_error (function_value_get_completion)) { return function_value_get_completion; } - ecma_completion_value_t call_completion = ecma_make_empty_completion_value (); + ecma_value_t call_completion = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); - if (ecma_op_is_callable (ecma_get_completion_value_value (function_value_get_completion))) + if (ecma_op_is_callable (function_value_get_completion)) { - ecma_object_t *func_obj_p = ecma_get_object_from_completion_value (function_value_get_completion); + ecma_object_t *func_obj_p = ecma_get_object_from_value (function_value_get_completion); call_completion = ecma_op_function_call (func_obj_p, ecma_make_object_value (obj_p), @@ -559,23 +558,19 @@ ecma_op_general_object_default_value (ecma_object_t *obj_p, /**< the object */ 0); } - ecma_free_completion_value (function_value_get_completion); + ecma_free_value (function_value_get_completion); - if (!ecma_is_completion_value_normal (call_completion)) + if (ecma_is_value_error (call_completion) + || (!ecma_is_value_empty (call_completion) + && !ecma_is_value_object (call_completion))) { return call_completion; } - if (!ecma_is_completion_value_empty (call_completion) - && !ecma_is_value_object (ecma_get_completion_value_value (call_completion))) - { - return call_completion; - } - - ecma_free_completion_value (call_completion); + ecma_free_value (call_completion); } - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } /* ecma_op_general_object_default_value */ /** @@ -585,10 +580,10 @@ ecma_op_general_object_default_value (ecma_object_t *obj_p, /**< the object */ * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 8.12.9 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_general_object_define_own_property (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p, /**< property name */ const ecma_property_descriptor_t *property_desc_p, /**< property @@ -650,7 +645,7 @@ ecma_op_general_object_define_own_property (ecma_object_t *obj_p, /**< the objec } - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } // 5. @@ -658,7 +653,7 @@ ecma_op_general_object_define_own_property (ecma_object_t *obj_p, /**< the objec && !property_desc_p->is_enumerable_defined && !property_desc_p->is_configurable_defined) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } // 6. @@ -723,7 +718,7 @@ ecma_op_general_object_define_own_property (ecma_object_t *obj_p, /**< the objec if (is_every_field_in_desc_also_occurs_in_current_desc_with_same_value) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } // 7. @@ -863,7 +858,7 @@ ecma_op_general_object_define_own_property (ecma_object_t *obj_p, /**< the objec ecma_set_property_configurable_attr (current_p, property_desc_p->is_configurable); } - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } /* ecma_op_general_object_define_own_property */ /** diff --git a/jerry-core/ecma/operations/ecma-objects-general.h b/jerry-core/ecma/operations/ecma-objects-general.h index aeea9940..b8b433b5 100644 --- a/jerry-core/ecma/operations/ecma-objects-general.h +++ b/jerry-core/ecma/operations/ecma-objects-general.h @@ -26,20 +26,20 @@ * @{ */ -extern ecma_completion_value_t ecma_reject (bool); +extern ecma_value_t ecma_reject (bool); extern ecma_object_t *ecma_op_create_object_object_noarg (void); -extern ecma_completion_value_t ecma_op_create_object_object_arg (ecma_value_t); +extern ecma_value_t ecma_op_create_object_object_arg (ecma_value_t); extern ecma_object_t *ecma_op_create_object_object_noarg_and_set_prototype (ecma_object_t *); -extern ecma_completion_value_t ecma_op_general_object_get (ecma_object_t *, ecma_string_t *); +extern ecma_value_t ecma_op_general_object_get (ecma_object_t *, ecma_string_t *); extern ecma_property_t *ecma_op_general_object_get_own_property (ecma_object_t *, ecma_string_t *); extern ecma_property_t *ecma_op_general_object_get_property (ecma_object_t *, ecma_string_t *); -extern ecma_completion_value_t ecma_op_general_object_put (ecma_object_t *, ecma_string_t *, ecma_value_t, bool); +extern ecma_value_t ecma_op_general_object_put (ecma_object_t *, ecma_string_t *, ecma_value_t, bool); extern bool ecma_op_general_object_can_put (ecma_object_t *, ecma_string_t *); -extern ecma_completion_value_t ecma_op_general_object_delete (ecma_object_t *, ecma_string_t *, bool); -extern ecma_completion_value_t ecma_op_general_object_default_value (ecma_object_t *, ecma_preferred_type_hint_t); -extern ecma_completion_value_t -ecma_op_general_object_define_own_property (ecma_object_t *, ecma_string_t *, const ecma_property_descriptor_t *, bool); +extern ecma_value_t ecma_op_general_object_delete (ecma_object_t *, ecma_string_t *, bool); +extern ecma_value_t ecma_op_general_object_default_value (ecma_object_t *, ecma_preferred_type_hint_t); +extern ecma_value_t ecma_op_general_object_define_own_property (ecma_object_t *, ecma_string_t *, + const ecma_property_descriptor_t *, bool); /** * @} diff --git a/jerry-core/ecma/operations/ecma-objects.c b/jerry-core/ecma/operations/ecma-objects.c index f3933280..5b429852 100644 --- a/jerry-core/ecma/operations/ecma-objects.c +++ b/jerry-core/ecma/operations/ecma-objects.c @@ -53,10 +53,10 @@ ecma_assert_object_type_is_valid (ecma_object_type_t type) /**< object's impleme * See also: * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_object_get (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p) /**< property name */ { @@ -88,7 +88,7 @@ ecma_op_object_get (ecma_object_t *obj_p, /**< the object */ JERRY_ASSERT (false); - return ecma_make_empty_completion_value (); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); } /* ecma_op_object_get */ /** @@ -229,13 +229,13 @@ ecma_op_object_get_property (ecma_object_t *obj_p, /**< the object */ * See also: * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_object_put (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p, /**< property name */ - ecma_value_t value, /**< ecma-value */ + ecma_value_t value, /**< ecma value */ bool is_throw) /**< flag that controls failure handling */ { JERRY_ASSERT (obj_p != NULL @@ -311,10 +311,10 @@ ecma_op_object_can_put (ecma_object_t *obj_p, /**< the object */ * See also: * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_object_delete (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p, /**< property name */ bool is_throw) /**< flag that controls failure handling */ @@ -351,7 +351,7 @@ ecma_op_object_delete (ecma_object_t *obj_p, /**< the object */ JERRY_ASSERT (false); - return ecma_make_empty_completion_value (); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); } /* ecma_op_object_delete */ /** @@ -360,10 +360,10 @@ ecma_op_object_delete (ecma_object_t *obj_p, /**< the object */ * See also: * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_object_default_value (ecma_object_t *obj_p, /**< the object */ ecma_preferred_type_hint_t hint) /**< hint on preferred result type */ { @@ -399,10 +399,10 @@ ecma_op_object_default_value (ecma_object_t *obj_p, /**< the object */ * See also: * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_object_define_own_property (ecma_object_t *obj_p, /**< the object */ ecma_string_t *property_name_p, /**< property name */ const ecma_property_descriptor_t *property_desc_p, /**< property @@ -450,7 +450,7 @@ ecma_op_object_define_own_property (ecma_object_t *obj_p, /**< the object */ JERRY_ASSERT (false); - return ecma_make_empty_completion_value (); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); } /* ecma_op_object_define_own_property */ /** @@ -459,7 +459,7 @@ ecma_op_object_define_own_property (ecma_object_t *obj_p, /**< the object */ * See also: * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 9 */ -ecma_completion_value_t +ecma_value_t ecma_op_object_has_instance (ecma_object_t *obj_p, /**< the object */ ecma_value_t value) /**< argument 'V' */ { @@ -476,7 +476,7 @@ ecma_op_object_has_instance (ecma_object_t *obj_p, /**< the object */ case ECMA_OBJECT_TYPE_STRING: case ECMA_OBJECT_TYPE_ARGUMENTS: { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } case ECMA_OBJECT_TYPE_FUNCTION: diff --git a/jerry-core/ecma/operations/ecma-objects.h b/jerry-core/ecma/operations/ecma-objects.h index 18e568c7..aa6a2bc1 100644 --- a/jerry-core/ecma/operations/ecma-objects.h +++ b/jerry-core/ecma/operations/ecma-objects.h @@ -26,16 +26,16 @@ * @{ */ -extern ecma_completion_value_t ecma_op_object_get (ecma_object_t *, ecma_string_t *); +extern ecma_value_t ecma_op_object_get (ecma_object_t *, ecma_string_t *); extern ecma_property_t *ecma_op_object_get_own_property (ecma_object_t *, ecma_string_t *); extern ecma_property_t *ecma_op_object_get_property (ecma_object_t *, ecma_string_t *); -extern ecma_completion_value_t ecma_op_object_put (ecma_object_t *, ecma_string_t *, ecma_value_t, bool); +extern ecma_value_t ecma_op_object_put (ecma_object_t *, ecma_string_t *, ecma_value_t, bool); extern bool ecma_op_object_can_put (ecma_object_t *, ecma_string_t *); -extern ecma_completion_value_t ecma_op_object_delete (ecma_object_t *, ecma_string_t *, bool); -extern ecma_completion_value_t ecma_op_object_default_value (ecma_object_t *, ecma_preferred_type_hint_t); -extern ecma_completion_value_t -ecma_op_object_define_own_property (ecma_object_t *, ecma_string_t *, const ecma_property_descriptor_t *, bool); -extern ecma_completion_value_t ecma_op_object_has_instance (ecma_object_t *, ecma_value_t); +extern ecma_value_t ecma_op_object_delete (ecma_object_t *, ecma_string_t *, bool); +extern ecma_value_t ecma_op_object_default_value (ecma_object_t *, ecma_preferred_type_hint_t); +extern ecma_value_t ecma_op_object_define_own_property (ecma_object_t *, ecma_string_t *, + const ecma_property_descriptor_t *, bool); +extern ecma_value_t ecma_op_object_has_instance (ecma_object_t *, ecma_value_t); extern bool ecma_op_object_is_prototype_of (ecma_object_t *, ecma_object_t *); extern ecma_collection_header_t * ecma_op_object_get_property_names (ecma_object_t *, bool, bool, bool); diff --git a/jerry-core/ecma/operations/ecma-reference.c b/jerry-core/ecma/operations/ecma-reference.c index b72dcfdd..9071e42d 100644 --- a/jerry-core/ecma/operations/ecma-reference.c +++ b/jerry-core/ecma/operations/ecma-reference.c @@ -117,7 +117,7 @@ ecma_make_reference (ecma_value_t base, /**< base value */ void ecma_free_reference (ecma_reference_t ref) /**< reference */ { - ecma_free_value (ref.base, true); + ecma_free_value (ref.base); ecma_deref_ecma_string (ECMA_GET_NON_NULL_POINTER (ecma_string_t, ref.referenced_name_cp)); } /* ecma_free_reference */ diff --git a/jerry-core/ecma/operations/ecma-regexp-object.c b/jerry-core/ecma/operations/ecma-regexp-object.c index 4673875c..220cc643 100644 --- a/jerry-core/ecma/operations/ecma-regexp-object.c +++ b/jerry-core/ecma/operations/ecma-regexp-object.c @@ -60,14 +60,14 @@ * * See also: ECMA-262 v5, 15.10.4.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t re_parse_regexp_flags (ecma_string_t *flags_str_p, /**< Input string with flags */ uint16_t *flags_p) /**< Output: parsed flag bits */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); lit_utf8_size_t flags_str_size = ecma_string_get_size (flags_str_p); MEM_DEFINE_LOCAL_ARRAY (flags_start_p, flags_str_size, lit_utf8_byte_t); @@ -79,7 +79,7 @@ re_parse_regexp_flags (ecma_string_t *flags_str_p, /**< Input string with flags const lit_utf8_byte_t *flags_str_end_p = flags_start_p + flags_str_size; while (flags_str_curr_p < flags_str_end_p - && ecma_is_completion_value_empty (ret_value)) + && ecma_is_value_empty (ret_value)) { switch (*flags_str_curr_p++) { @@ -223,8 +223,8 @@ re_initialize_props (ecma_object_t *re_obj_p, /**< RegExp obejct */ * * See also: ECMA-262 v5, 15.10.4.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ ecma_value_t ecma_op_create_regexp_object_from_bytecode (re_compiled_code_t *bytecode_p) /**< input pattern */ @@ -259,15 +259,15 @@ ecma_op_create_regexp_object_from_bytecode (re_compiled_code_t *bytecode_p) /**< * * See also: ECMA-262 v5, 15.10.4.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_create_regexp_object (ecma_string_t *pattern_p, /**< input pattern */ ecma_string_t *flags_str_p) /**< flags */ { JERRY_ASSERT (pattern_p != NULL); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); uint16_t flags = 0; if (flags_str_p != NULL) @@ -275,7 +275,7 @@ ecma_op_create_regexp_object (ecma_string_t *pattern_p, /**< input pattern */ ECMA_TRY_CATCH (empty, re_parse_regexp_flags (flags_str_p, &flags), ret_value); ECMA_FINALIZE (empty); - if (!ecma_is_completion_value_empty (ret_value)) + if (!ecma_is_value_empty (ret_value)) { return ret_value; } @@ -301,11 +301,11 @@ ecma_op_create_regexp_object (ecma_string_t *pattern_p, /**< input pattern */ ECMA_TRY_CATCH (empty, re_compile_bytecode (&bc_p, pattern_p, flags), ret_value); ECMA_SET_POINTER (bytecode_prop_p->u.internal_property.value, bc_p); - ret_value = ecma_make_normal_completion_value (ecma_make_object_value (obj_p)); + ret_value = ecma_make_object_value (obj_p); ECMA_FINALIZE (empty); - if (ecma_is_completion_value_throw (ret_value)) + if (ecma_is_value_error (ret_value)) { ecma_deref_object (obj_p); } @@ -367,16 +367,16 @@ re_canonicalize (ecma_char_t ch, /**< character */ * See also: * ECMA-262 v5, 15.10.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -static ecma_completion_value_t +static ecma_value_t re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ uint8_t *bc_p, /**< pointer to the current RegExp bytecode */ lit_utf8_byte_t *str_p, /**< input string pointer */ lit_utf8_byte_t **out_str_p) /**< Output: matching substring iterator */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); re_opcode_t op; lit_utf8_byte_t *str_curr_p = str_p; @@ -389,14 +389,14 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ { JERRY_DDLOG ("Execute RE_OP_MATCH: match\n"); *out_str_p = str_curr_p; - ret_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); return ret_value; /* match */ } case RE_OP_CHAR: { if (str_curr_p >= re_ctx_p->input_end_p) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } bool is_ignorecase = re_ctx_p->flags & RE_FLAG_IGNORE_CASE; @@ -407,7 +407,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (ch1 != ch2) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } JERRY_DDLOG ("match\n"); @@ -418,7 +418,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ { if (str_curr_p >= re_ctx_p->input_end_p) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } ecma_char_t ch = lit_utf8_read_next (&str_curr_p); @@ -427,7 +427,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (lit_char_is_line_terminator (ch)) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } JERRY_DDLOG ("match\n"); @@ -446,7 +446,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (!(re_ctx_p->flags & RE_FLAG_MULTILINE)) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } if (lit_char_is_line_terminator (lit_utf8_peek_prev (str_curr_p))) @@ -456,7 +456,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ } JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } case RE_OP_ASSERT_END: { @@ -471,7 +471,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (!(re_ctx_p->flags & RE_FLAG_MULTILINE)) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } if (lit_char_is_line_terminator (lit_utf8_peek_next (str_curr_p))) @@ -481,7 +481,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ } JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } case RE_OP_ASSERT_WORD_BOUNDARY: case RE_OP_ASSERT_NOT_WORD_BOUNDARY: @@ -512,7 +512,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (is_wordchar_left == is_wordchar_right) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } } else @@ -523,7 +523,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (is_wordchar_left != is_wordchar_right) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } } @@ -533,7 +533,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ case RE_OP_LOOKAHEAD_POS: case RE_OP_LOOKAHEAD_NEG: { - ecma_completion_value_t match_value = ecma_make_empty_completion_value (); + ecma_value_t match_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); lit_utf8_byte_t *sub_str_p = NULL; uint32_t array_size = re_ctx_p->num_of_captures + re_ctx_p->num_of_non_captures; @@ -549,7 +549,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (!sub_str_p) { match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); - if (ecma_is_completion_value_throw (match_value)) + if (ecma_is_value_error (match_value)) { break; } @@ -558,10 +558,10 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ } while (re_get_opcode (&bc_p) == RE_OP_ALTERNATIVE); - if (!ecma_is_completion_value_throw (match_value)) + if (!ecma_is_value_error (match_value)) { JERRY_DDLOG ("Execute RE_OP_LOOKAHEAD_POS/NEG: "); - ecma_free_completion_value (match_value); + ecma_free_value (match_value); if ((op == RE_OP_LOOKAHEAD_POS && sub_str_p) || (op == RE_OP_LOOKAHEAD_NEG && !sub_str_p)) { @@ -571,11 +571,11 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ else { JERRY_DDLOG ("fail\n"); - match_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + match_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } } - if (!ecma_is_completion_value_throw (match_value)) + if (!ecma_is_value_error (match_value)) { if (ecma_is_value_true (match_value)) { @@ -602,7 +602,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (str_curr_p >= re_ctx_p->input_end_p) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } bool is_ignorecase = re_ctx_p->flags & RE_FLAG_IGNORE_CASE; @@ -631,7 +631,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (!is_match) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } } else @@ -640,7 +640,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (is_match) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } } JERRY_DDLOG ("match\n"); @@ -670,7 +670,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (str_curr_p >= re_ctx_p->input_end_p) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } ch1 = lit_utf8_read_next (&sub_str_p); @@ -679,7 +679,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (ch1 != ch2) { JERRY_DDLOG ("fail\n"); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } } JERRY_DDLOG ("match\n"); @@ -697,13 +697,13 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ { uint32_t offset = re_get_value (&bc_p); lit_utf8_byte_t *sub_str_p = NULL; - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } @@ -714,14 +714,14 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ bc_p = old_bc_p; re_ctx_p->saved_p[RE_GLOBAL_START_IDX] = old_start_p; - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } case RE_OP_SAVE_AND_MATCH: { JERRY_DDLOG ("End of pattern is reached: match\n"); re_ctx_p->saved_p[RE_GLOBAL_END_IDX] = str_curr_p; *out_str_p = str_curr_p; - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); /* match */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); /* match */ } case RE_OP_ALTERNATIVE: { @@ -780,14 +780,14 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ bc_p += offset; /* Try to match after the close paren if zero is allowed */ - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } @@ -838,13 +838,13 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ do { offset = re_get_value (&bc_p); - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } @@ -860,21 +860,21 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ || op == RE_OP_NON_CAPTURE_GREEDY_ZERO_GROUP_START) { JERRY_ASSERT (end_bc_p); - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, end_bc_p, str_curr_p, &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, end_bc_p, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } } re_ctx_p->saved_p[start_idx] = old_start_p; - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } case RE_OP_CAPTURE_NON_GREEDY_GROUP_END: case RE_OP_NON_CAPTURE_NON_GREEDY_GROUP_END: @@ -914,13 +914,13 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ re_ctx_p->saved_p[end_idx] = str_curr_p; lit_utf8_byte_t *sub_str_p = NULL; - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } @@ -966,7 +966,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ if (re_ctx_p->num_of_iterations_p[iter_idx] >= min && str_curr_p== re_ctx_p->saved_p[start_idx]) { - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } re_ctx_p->num_of_iterations_p[iter_idx]++; @@ -982,14 +982,14 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ old_start_p = re_ctx_p->saved_p[start_idx]; re_ctx_p->saved_p[start_idx] = str_curr_p; - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } @@ -1006,14 +1006,14 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ old_start_p = re_ctx_p->saved_p[start_idx]; re_ctx_p->saved_p[start_idx] = str_curr_p; - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } @@ -1027,14 +1027,14 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ && re_ctx_p->num_of_iterations_p[iter_idx] <= max) { /* Try to match the rest of the bytecode. */ - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, old_bc_p, str_curr_p, &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, old_bc_p, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } @@ -1043,7 +1043,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ /* restore if fails */ re_ctx_p->saved_p[end_idx] = old_end_p; re_ctx_p->num_of_iterations_p[iter_idx]--; - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } case RE_OP_NON_GREEDY_ITERATOR: { @@ -1062,30 +1062,24 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ { if (num_of_iter >= min) { - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, - bc_p + offset, - str_curr_p, - &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p + offset, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } } - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, - bc_p, - str_curr_p, - &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); if (!ecma_is_value_true (match_value)) { - if (ecma_is_completion_value_throw (match_value)) + if (ecma_is_value_error (match_value)) { return match_value; } @@ -1096,7 +1090,7 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ str_curr_p = sub_str_p; num_of_iter++; } - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } case RE_OP_GREEDY_ITERATOR: { @@ -1114,11 +1108,11 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ while (num_of_iter < max) { - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p, str_curr_p, &sub_str_p); if (!ecma_is_value_true (match_value)) { - if (ecma_is_completion_value_throw (match_value)) + if (ecma_is_value_error (match_value)) { return match_value; } @@ -1132,17 +1126,14 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ while (num_of_iter >= min) { - ecma_completion_value_t match_value = re_match_regexp (re_ctx_p, - bc_p + offset, - str_curr_p, - &sub_str_p); + ecma_value_t match_value = re_match_regexp (re_ctx_p, bc_p + offset, str_curr_p, &sub_str_p); if (ecma_is_value_true (match_value)) { *out_str_p = sub_str_p; return match_value; /* match */ } - else if (ecma_is_completion_value_throw (match_value)) + else if (ecma_is_value_error (match_value)) { return match_value; } @@ -1155,18 +1146,18 @@ re_match_regexp (re_matcher_ctx_t *re_ctx_p, /**< RegExp matcher context */ lit_utf8_read_prev (&str_curr_p); num_of_iter--; } - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } default: { JERRY_DDLOG ("UNKNOWN opcode (%d)!\n", (uint32_t) op); - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_COMMON)); + return ecma_raise_common_error (""); } } } JERRY_UNREACHABLE (); - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); /* fail */ } /* re_match_regexp */ /** @@ -1234,15 +1225,15 @@ re_set_result_array_properties (ecma_object_t *array_obj_p, /**< result array */ * RegExp helper function to start the recursive matching algorithm * and create the result Array object * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_regexp_exec_helper (ecma_value_t regexp_value, /**< RegExp object */ ecma_value_t input_string, /**< input string */ bool ignore_global) /**< ignore global flag */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); JERRY_ASSERT (ecma_is_value_object (regexp_value)); JERRY_ASSERT (ecma_is_value_string (input_string)); @@ -1347,7 +1338,7 @@ ecma_regexp_exec_helper (ecma_value_t regexp_value, /**< RegExp object */ lit_utf8_byte_t *sub_str_p = NULL; uint8_t *bc_start_p = (uint8_t *) (bc_p + 1); - while (ecma_is_completion_value_empty (ret_value)) + while (ecma_is_value_empty (ret_value)) { if (index < 0 || index > (int32_t) input_str_len) { @@ -1410,18 +1401,18 @@ ecma_regexp_exec_helper (ecma_value_t regexp_value, /**< RegExp object */ } /* 3. Fill the result array or return with 'undefiend' */ - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { if (is_match) { - ecma_completion_value_t result_array = ecma_op_create_array_object (0, 0, false); - ecma_object_t *result_array_obj_p = ecma_get_object_from_completion_value (result_array); + ecma_value_t result_array = ecma_op_create_array_object (0, 0, false); + ecma_object_t *result_array_obj_p = ecma_get_object_from_value (result_array); ecma_string_t *input_str_p = ecma_new_ecma_string_from_utf8 (input_buffer_p, input_string_size); re_set_result_array_properties (result_array_obj_p, input_str_p, re_ctx.num_of_captures / 2, index); ecma_deref_ecma_string (input_str_p); - for (uint32_t i = 0; ecma_is_completion_value_empty (ret_value) && i < re_ctx.num_of_captures; i += 2) + for (uint32_t i = 0; ecma_is_value_empty (ret_value) && i < re_ctx.num_of_captures; i += 2) { ecma_string_t *index_str_p = ecma_new_ecma_string_from_uint32 (i / 2); ecma_value_t capture_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); @@ -1453,11 +1444,11 @@ ecma_regexp_exec_helper (ecma_value_t regexp_value, /**< RegExp object */ ret_value); ECMA_FINALIZE (put_value); - ecma_free_value (capture_value, true); + ecma_free_value (capture_value); ecma_deref_ecma_string (index_str_p); } - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { ret_value = result_array; } @@ -1468,7 +1459,7 @@ ecma_regexp_exec_helper (ecma_value_t regexp_value, /**< RegExp object */ } else { - ret_value = ecma_make_normal_completion_value (ecma_make_simple_value (ECMA_SIMPLE_VALUE_NULL)); + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_NULL); } } diff --git a/jerry-core/ecma/operations/ecma-regexp-object.h b/jerry-core/ecma/operations/ecma-regexp-object.h index 1f1bbaef..59897355 100644 --- a/jerry-core/ecma/operations/ecma-regexp-object.h +++ b/jerry-core/ecma/operations/ecma-regexp-object.h @@ -32,9 +32,9 @@ /** * RegExp flags */ -#define RE_FLAG_GLOBAL (1 << 1) /* ECMA-262 v5, 15.10.7.2 */ -#define RE_FLAG_IGNORE_CASE (1 << 2) /* ECMA-262 v5, 15.10.7.3 */ -#define RE_FLAG_MULTILINE (1 << 3) /* ECMA-262 v5, 15.10.7.4 */ +#define RE_FLAG_GLOBAL (1u << 1) /* ECMA-262 v5, 15.10.7.2 */ +#define RE_FLAG_IGNORE_CASE (1u << 2) /* ECMA-262 v5, 15.10.7.3 */ +#define RE_FLAG_MULTILINE (1u << 3) /* ECMA-262 v5, 15.10.7.4 */ /** * RegExp executor context @@ -53,10 +53,10 @@ typedef struct extern ecma_value_t ecma_op_create_regexp_object_from_bytecode (re_compiled_code_t *); -extern ecma_completion_value_t +extern ecma_value_t ecma_op_create_regexp_object (ecma_string_t *, ecma_string_t *); -extern ecma_completion_value_t +extern ecma_value_t ecma_regexp_exec_helper (ecma_value_t, ecma_value_t, bool); extern ecma_char_t @@ -64,7 +64,7 @@ re_canonicalize (ecma_char_t, bool); extern void re_set_result_array_properties (ecma_object_t *, ecma_string_t *, uint32_t, int32_t); -extern ecma_completion_value_t +extern ecma_value_t re_parse_regexp_flags (ecma_string_t *, uint16_t *); extern void diff --git a/jerry-core/ecma/operations/ecma-string-object.c b/jerry-core/ecma/operations/ecma-string-object.c index 941c78f2..c6aca1e7 100644 --- a/jerry-core/ecma/operations/ecma-string-object.c +++ b/jerry-core/ecma/operations/ecma-string-object.c @@ -35,10 +35,10 @@ * * See also: ECMA-262 v5, 15.5.2.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t ecma_op_create_string_object (const ecma_value_t *arguments_list_p, /**< list of arguments that are passed to String constructor */ ecma_length_t arguments_list_len) /**< length of the arguments' list */ @@ -57,18 +57,18 @@ ecma_op_create_string_object (const ecma_value_t *arguments_list_p, /**< list of } else { - ecma_completion_value_t to_str_arg_value = ecma_op_to_string (arguments_list_p[0]); + ecma_value_t to_str_arg_value = ecma_op_to_string (arguments_list_p[0]); - if (ecma_is_completion_value_throw (to_str_arg_value)) + if (ecma_is_value_error (to_str_arg_value)) { return to_str_arg_value; } else { - JERRY_ASSERT (ecma_is_completion_value_normal (to_str_arg_value)); + JERRY_ASSERT (!ecma_is_value_error (to_str_arg_value)); + JERRY_ASSERT (ecma_is_value_string (to_str_arg_value)); - JERRY_ASSERT (ecma_is_value_string (ecma_get_completion_value_value (to_str_arg_value))); - prim_prop_str_value_p = ecma_get_string_from_completion_value (to_str_arg_value); + prim_prop_str_value_p = ecma_get_string_from_value (to_str_arg_value); ecma_length_t string_len = ecma_string_get_length (prim_prop_str_value_p); length_value = ecma_uint32_to_number ((uint32_t) string_len); @@ -106,7 +106,7 @@ ecma_op_create_string_object (const ecma_value_t *arguments_list_p, /**< list of ecma_set_named_data_property_value (length_prop_p, ecma_make_number_value (length_prop_value_p)); ecma_deref_ecma_string (length_magic_string_p); - return ecma_make_normal_completion_value (ecma_make_object_value (obj_p)); + return ecma_make_object_value (obj_p); } /* ecma_op_create_string_object */ /** @@ -116,8 +116,8 @@ ecma_op_create_string_object (const ecma_value_t *arguments_list_p, /**< list of * ECMA-262 v5, 8.6.2; ECMA-262 v5, Table 8 * ECMA-262 v5, 15.5.5.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ ecma_property_t* ecma_op_string_object_get_own_property (ecma_object_t *obj_p, /**< a String object */ diff --git a/jerry-core/ecma/operations/ecma-string-object.h b/jerry-core/ecma/operations/ecma-string-object.h index 3c2cc389..55c35804 100644 --- a/jerry-core/ecma/operations/ecma-string-object.h +++ b/jerry-core/ecma/operations/ecma-string-object.h @@ -25,7 +25,7 @@ * @{ */ -extern ecma_completion_value_t +extern ecma_value_t ecma_op_create_string_object (const ecma_value_t *, ecma_length_t); extern ecma_property_t * diff --git a/jerry-core/ecma/operations/ecma-try-catch-macro.h b/jerry-core/ecma/operations/ecma-try-catch-macro.h index 54bc9a70..8b5e6859 100644 --- a/jerry-core/ecma/operations/ecma-try-catch-macro.h +++ b/jerry-core/ecma/operations/ecma-try-catch-macro.h @@ -30,17 +30,15 @@ * statement with same argument as corresponding ECMA_TRY_CATCH's first argument. */ #define ECMA_TRY_CATCH(var, op, return_value) \ - JERRY_ASSERT (return_value == ecma_make_empty_completion_value ()); \ - ecma_completion_value_t var ## _completion = op; \ - if (unlikely (ecma_is_completion_value_throw (var ## _completion))) \ + JERRY_ASSERT (return_value == ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY)); \ + ecma_value_t var ## _completion = op; \ + if (unlikely (ecma_is_value_error (var ## _completion))) \ { \ return_value = var ## _completion; \ } \ else \ { \ - JERRY_ASSERT (ecma_is_completion_value_normal (var ## _completion)); \ - \ - ecma_value_t var __attr_unused___ = ecma_get_completion_value_value (var ## _completion) + ecma_value_t var __attr_unused___ = var ## _completion; /** * The macro marks end of code block that is defined by corresponding @@ -50,7 +48,8 @@ * Each ECMA_TRY_CATCH should be followed by ECMA_FINALIZE with same argument * as corresponding ECMA_TRY_CATCH's first argument. */ -#define ECMA_FINALIZE(var) ecma_free_completion_value (var ## _completion); \ +#define ECMA_FINALIZE(var) \ + ecma_free_value (var ## _completion); \ } /** @@ -65,7 +64,7 @@ * statement with same argument as corresponding ECMA_OP_TO_NUMBER_TRY_CATCH's first argument. */ #define ECMA_OP_TO_NUMBER_TRY_CATCH(num_var, value, return_value) \ - JERRY_ASSERT (ecma_is_completion_value_empty (return_value)); \ + JERRY_ASSERT (return_value == ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY)); \ ecma_number_t num_var = ecma_number_make_nan (); \ if (ecma_is_value_number (value)) \ { \ @@ -82,7 +81,7 @@ ECMA_FINALIZE (to_number_value); \ } \ \ - if (ecma_is_completion_value_empty (return_value)) \ + if (ecma_is_value_empty (return_value)) \ { /** diff --git a/jerry-core/jerry-internal.h b/jerry-core/jerry-internal.h index bd81bcec..23fd0083 100644 --- a/jerry-core/jerry-internal.h +++ b/jerry-core/jerry-internal.h @@ -1,4 +1,4 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ #include "ecma-globals.h" #include "jerry-api.h" -extern ecma_completion_value_t +extern ecma_value_t jerry_dispatch_external_function (ecma_object_t *, ecma_external_pointer_t, ecma_value_t, ecma_collection_header_t *); extern void diff --git a/jerry-core/jerry.c b/jerry-core/jerry.c index 7ad48c02..5999ffd2 100644 --- a/jerry-core/jerry.c +++ b/jerry-core/jerry.c @@ -363,7 +363,7 @@ jerry_api_create_string_value (jerry_api_string_t *value) /**< jerry_api_string_ } /* jerry_api_create_string_value */ /** - * Convert ecma-value to Jerry API value representation + * Convert ecma value to Jerry API value representation * * Note: * if the output value contains string / object, it should be freed @@ -372,7 +372,7 @@ jerry_api_create_string_value (jerry_api_string_t *value) /**< jerry_api_string_ */ static void jerry_api_convert_ecma_value_to_api_value (jerry_api_value_t *out_value_p, /**< out: api value */ - ecma_value_t value) /**< ecma-value (undefined, + ecma_value_t value) /**< ecma value (undefined, * null, boolean, number, * string or object */ { @@ -428,13 +428,13 @@ jerry_api_convert_ecma_value_to_api_value (jerry_api_value_t *out_value_p, /**< } /* jerry_api_convert_ecma_value_to_api_value */ /** - * Convert value, represented in Jerry API format, to ecma-value. + * Convert value, represented in Jerry API format, to ecma value. * * Note: - * the output ecma-value should be freed with ecma_free_value when it becomes unnecessary. + * the output ecma value should be freed with ecma_free_value when it becomes unnecessary. */ static void -jerry_api_convert_api_value_to_ecma_value (ecma_value_t *out_value_p, /**< out: ecma-value */ +jerry_api_convert_api_value_to_ecma_value (ecma_value_t *out_value_p, /**< out: ecma value */ const jerry_api_value_t *api_value_p) /**< value in Jerry API format */ { switch (api_value_p->type) @@ -521,32 +521,22 @@ jerry_api_convert_api_value_to_ecma_value (ecma_value_t *out_value_p, /**< out: */ static jerry_completion_code_t jerry_api_convert_eval_completion_to_retval (jerry_api_value_t *retval_p, /**< out: api value */ - ecma_completion_value_t completion) /**< completion of 'eval'-mode - * code execution */ + ecma_value_t completion) /**< completion of 'eval'-mode + * code execution */ { jerry_completion_code_t ret_code; - if (ecma_is_completion_value_normal (completion)) + if (!ecma_is_value_error (completion)) { - ret_code = JERRY_COMPLETION_CODE_OK; + jerry_api_convert_ecma_value_to_api_value (retval_p, completion); - jerry_api_convert_ecma_value_to_api_value (retval_p, - ecma_get_completion_value_value (completion)); + ret_code = JERRY_COMPLETION_CODE_OK; } else { jerry_api_convert_ecma_value_to_api_value (retval_p, ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED)); - if (ecma_is_completion_value_throw (completion)) - { - ret_code = JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION; - } - else - { - JERRY_ASSERT (ecma_is_completion_value_empty (completion)); - - ret_code = JERRY_COMPLETION_CODE_OK; - } + ret_code = JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION; } return ret_code; @@ -730,12 +720,11 @@ jerry_api_create_array_object (jerry_api_size_t size) /* size of array */ ecma_value_t array_length = ecma_make_number_value (length_num_p); jerry_api_length_t argument_size = 1; - ecma_completion_value_t new_array_completion = ecma_op_create_array_object (&array_length, argument_size, true); - JERRY_ASSERT (ecma_is_completion_value_normal (new_array_completion)); - ecma_value_t val = ecma_get_completion_value_value (new_array_completion); - jerry_api_object_t *obj_p = ecma_get_object_from_value (val); + ecma_value_t new_array_completion = ecma_op_create_array_object (&array_length, argument_size, true); + JERRY_ASSERT (!ecma_is_value_error (new_array_completion)); + jerry_api_object_t *obj_p = ecma_get_object_from_value (new_array_completion); - ecma_free_value (array_length, true); + ecma_free_value (array_length); return obj_p; } /* jerry_api_create_array_object */ @@ -753,12 +742,12 @@ jerry_api_set_array_index_value (jerry_api_object_t *array_obj_p, /* array objec ecma_string_t *str_idx_p = ecma_new_ecma_string_from_uint32 ((uint32_t) index); ecma_value_t value; jerry_api_convert_api_value_to_ecma_value (&value, value_p); - ecma_completion_value_t set_completion = ecma_op_object_put (array_obj_p, str_idx_p, value, false); - JERRY_ASSERT (ecma_is_completion_value_normal (set_completion)); + ecma_value_t set_completion = ecma_op_object_put (array_obj_p, str_idx_p, value, false); + JERRY_ASSERT (!ecma_is_value_error (set_completion)); - ecma_free_completion_value (set_completion); + ecma_free_value (set_completion); ecma_deref_ecma_string (str_idx_p); - ecma_free_value (value, true); + ecma_free_value (value); return true; } /* jerry_api_set_array_index_value */ @@ -780,12 +769,11 @@ jerry_api_get_array_index_value (jerry_api_object_t *array_obj_p, /* array objec jerry_api_value_t *value_p) /* output value at index */ { ecma_string_t *str_idx_p = ecma_new_ecma_string_from_uint32 ((uint32_t) index); - ecma_completion_value_t get_completion = ecma_op_object_get (array_obj_p, str_idx_p); - JERRY_ASSERT (ecma_is_completion_value_normal (get_completion)); - ecma_value_t val = ecma_get_completion_value_value (get_completion); - jerry_api_convert_ecma_value_to_api_value (value_p, val); + ecma_value_t get_completion = ecma_op_object_get (array_obj_p, str_idx_p); + JERRY_ASSERT (!ecma_is_value_error (get_completion)); + jerry_api_convert_ecma_value_to_api_value (value_p, get_completion); - ecma_free_completion_value (get_completion); + ecma_free_value (get_completion); ecma_deref_ecma_string (str_idx_p); return true; @@ -911,10 +899,10 @@ jerry_api_create_external_function (jerry_external_handler_t handler_p) /**< poi * if called native handler returns true, then dispatcher just returns value received * through 'return value' output argument, otherwise - throws the value as an exception. * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t jerry_dispatch_external_function (ecma_object_t *function_object_p, /**< external function object */ ecma_external_pointer_t handler_p, /**< pointer to the function's native handler */ ecma_value_t this_arg_value, /**< 'this' argument */ @@ -924,7 +912,7 @@ jerry_dispatch_external_function (ecma_object_t *function_object_p, /**< externa const ecma_length_t args_count = (arg_collection_p != NULL ? arg_collection_p->unit_number : 0); - ecma_completion_value_t completion_value; + ecma_value_t completion_value; MEM_DEFINE_LOCAL_ARRAY (api_arg_values, args_count, jerry_api_value_t); @@ -957,11 +945,11 @@ jerry_dispatch_external_function (ecma_object_t *function_object_p, /**< externa if (is_successful) { - completion_value = ecma_make_normal_completion_value (ret_value); + completion_value = ret_value; } else { - completion_value = ecma_make_throw_completion_value (ret_value); + completion_value = ecma_make_error_value (ret_value); } jerry_api_release_value (&api_ret_value); @@ -1071,7 +1059,7 @@ jerry_api_add_object_field (jerry_api_object_t *object_p, /**< object to add fie true); ecma_named_data_property_assign_value (object_p, prop_p, value_to_put); - ecma_free_value (value_to_put, true); + ecma_free_value (value_to_put); } ecma_deref_ecma_string (field_name_str_p); @@ -1099,18 +1087,16 @@ jerry_api_delete_object_field (jerry_api_object_t *object_p, /**< object to dele ecma_string_t *field_name_str_p = ecma_new_ecma_string_from_utf8 ((lit_utf8_byte_t *) field_name_p, (lit_utf8_size_t) field_name_size); - ecma_completion_value_t delete_completion = ecma_op_object_delete (object_p, - field_name_str_p, - true); + ecma_value_t delete_completion = ecma_op_object_delete (object_p, + field_name_str_p, + true); - if (!ecma_is_completion_value_normal (delete_completion)) + if (ecma_is_value_error (delete_completion)) { - JERRY_ASSERT (ecma_is_completion_value_throw (delete_completion)); - is_successful = false; } - ecma_free_completion_value (delete_completion); + ecma_free_value (delete_completion); ecma_deref_ecma_string (field_name_str_p); @@ -1158,11 +1144,11 @@ jerry_api_foreach_object_field (jerry_api_object_t *object_p, /**< object */ ecma_collection_header_t *names_p = ecma_op_object_get_property_names (object_p, false, true, true); ecma_collection_iterator_init (&names_iter, names_p); - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); bool continuous = true; - while (ecma_is_completion_value_empty (ret_value) + while (ecma_is_value_empty (ret_value) && continuous && ecma_collection_iterator_next (&names_iter)) { @@ -1181,15 +1167,15 @@ jerry_api_foreach_object_field (jerry_api_object_t *object_p, /**< object */ } ecma_free_values_collection (names_p, true); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { return true; } else { - JERRY_ASSERT (ecma_is_completion_value_throw (ret_value)); + JERRY_ASSERT (ecma_is_value_error (ret_value)); - ecma_free_completion_value (ret_value); + ecma_free_value (ret_value); return false; } @@ -1220,23 +1206,19 @@ jerry_api_get_object_field_value_sz (jerry_api_object_t *object_p, /**< object * ecma_string_t *field_name_str_p = ecma_new_ecma_string_from_utf8 ((lit_utf8_byte_t *) field_name_p, (lit_utf8_size_t) field_name_size); - ecma_completion_value_t get_completion = ecma_op_object_get (object_p, - field_name_str_p); + ecma_value_t get_completion = ecma_op_object_get (object_p, + field_name_str_p); - if (ecma_is_completion_value_normal (get_completion)) + if (!ecma_is_value_error (get_completion)) { - ecma_value_t val = ecma_get_completion_value_value (get_completion); - - jerry_api_convert_ecma_value_to_api_value (field_value_p, val); + jerry_api_convert_ecma_value_to_api_value (field_value_p, get_completion); } else { - JERRY_ASSERT (ecma_is_completion_value_throw (get_completion)); - is_successful = false; } - ecma_free_completion_value (get_completion); + ecma_free_value (get_completion); ecma_deref_ecma_string (field_name_str_p); @@ -1284,21 +1266,19 @@ jerry_api_set_object_field_value_sz (jerry_api_object_t *object_p, /**< object * ecma_value_t value_to_put; jerry_api_convert_api_value_to_ecma_value (&value_to_put, field_value_p); - ecma_completion_value_t set_completion = ecma_op_object_put (object_p, - field_name_str_p, - value_to_put, - true); + ecma_value_t set_completion = ecma_op_object_put (object_p, + field_name_str_p, + value_to_put, + true); - if (!ecma_is_completion_value_normal (set_completion)) + if (ecma_is_value_error (set_completion)) { - JERRY_ASSERT (ecma_is_completion_value_throw (set_completion)); - is_successful = false; } - ecma_free_completion_value (set_completion); + ecma_free_value (set_completion); - ecma_free_value (value_to_put, true); + ecma_free_value (value_to_put); ecma_deref_ecma_string (field_name_str_p); return is_successful; @@ -1413,7 +1393,7 @@ jerry_api_invoke_function (bool is_invoke_as_constructor, /**< true - invoke fun jerry_api_convert_api_value_to_ecma_value (arguments_list_p + i, args_p + i); } - ecma_completion_value_t call_completion; + ecma_value_t call_completion; if (is_invoke_as_constructor) { @@ -1445,25 +1425,22 @@ jerry_api_invoke_function (bool is_invoke_as_constructor, /**< true - invoke fun args_count); } - if (!ecma_is_completion_value_normal (call_completion)) + if (ecma_is_value_error (call_completion)) { /* unhandled exception during the function call */ - JERRY_ASSERT (ecma_is_completion_value_throw (call_completion)); - is_successful = false; } if (retval_p != NULL) { - jerry_api_convert_ecma_value_to_api_value (retval_p, - ecma_get_completion_value_value (call_completion)); + jerry_api_convert_ecma_value_to_api_value (retval_p, call_completion); } - ecma_free_completion_value (call_completion); + ecma_free_value (call_completion); for (uint32_t i = 0; i < args_count; ++i) { - ecma_free_value (arguments_list_p[i], true); + ecma_free_value (arguments_list_p[i]); } MEM_FINALIZE_LOCAL_ARRAY (arguments_list_p); @@ -1605,14 +1582,14 @@ jerry_api_eval (const jerry_api_char_t *source_p, /**< source code */ jerry_completion_code_t status; - ecma_completion_value_t completion = ecma_op_eval_chars_buffer ((const lit_utf8_byte_t *) source_p, - source_size, - is_direct, - is_strict); + ecma_value_t completion = ecma_op_eval_chars_buffer ((const lit_utf8_byte_t *) source_p, + source_size, + is_direct, + is_strict); status = jerry_api_convert_eval_completion_to_retval (retval_p, completion); - ecma_free_completion_value (completion); + ecma_free_value (completion); return status; } /* jerry_api_eval */ @@ -2010,8 +1987,8 @@ jerry_snapshot_set_offsets (uint8_t *buffer_p, /**< buffer */ ecma_compiled_code_t *bytecode_p = (ecma_compiled_code_t *) buffer_p; /* Set reference counter to 1. */ - bytecode_p->status_flags &= (1 << ECMA_BYTECODE_REF_SHIFT) - 1; - bytecode_p->status_flags |= 1 << ECMA_BYTECODE_REF_SHIFT; + bytecode_p->status_flags &= (1u << ECMA_BYTECODE_REF_SHIFT) - 1; + bytecode_p->status_flags |= 1u << ECMA_BYTECODE_REF_SHIFT; if (bytecode_p->status_flags & CBC_CODE_FLAGS_FUNCTION) { @@ -2451,11 +2428,11 @@ jerry_exec_snapshot (const void *snapshot_p, /**< snapshot */ else { /* vm should be already initialized */ - ecma_completion_value_t completion = vm_run_eval (bytecode_p, false); + ecma_value_t completion = vm_run_eval (bytecode_p, false); ret_code = jerry_api_convert_eval_completion_to_retval (retval_p, completion); - ecma_free_completion_value (completion); + ecma_free_value (completion); } return ret_code; diff --git a/jerry-core/mem/mem-allocator.h b/jerry-core/mem/mem-allocator.h index 50d5fc00..f9cb9795 100644 --- a/jerry-core/mem/mem-allocator.h +++ b/jerry-core/mem/mem-allocator.h @@ -41,7 +41,7 @@ typedef uint16_t mem_cpointer_t; /** * Required alignment for allocated units/blocks */ -#define MEM_ALIGNMENT (1 << MEM_ALIGNMENT_LOG) +#define MEM_ALIGNMENT (1u << MEM_ALIGNMENT_LOG) /** * Width of compressed memory pointer diff --git a/jerry-core/parser/js/js-lexer.c b/jerry-core/parser/js/js-lexer.c index 8654608c..a806ec7c 100644 --- a/jerry-core/parser/js/js-lexer.c +++ b/jerry-core/parser/js/js-lexer.c @@ -1809,7 +1809,7 @@ lexer_construct_regexp_object (parser_context_t *context_p, /**< context */ /* Compile the RegExp literal and store the RegExp bytecode pointer */ re_compiled_code_t *re_bytecode_p = NULL; - ecma_completion_value_t completion_value; + ecma_value_t completion_value; ecma_string_t *pattern_str_p = ecma_new_ecma_string_from_utf8 (regex_start_p, length); // FIXME: check return value of 're_compile_bytecode' and throw an error @@ -1818,9 +1818,9 @@ lexer_construct_regexp_object (parser_context_t *context_p, /**< context */ current_flags); ecma_deref_ecma_string (pattern_str_p); - bool is_throw = ecma_is_completion_value_throw (completion_value); + bool is_throw = ecma_is_value_error (completion_value); - ecma_free_completion_value (completion_value); + ecma_free_value (completion_value); if (is_throw) { diff --git a/jerry-core/parser/js/js-parser.c b/jerry-core/parser/js/js-parser.c index c62ce6d5..4ee1221d 100644 --- a/jerry-core/parser/js/js-parser.c +++ b/jerry-core/parser/js/js-parser.c @@ -1462,7 +1462,7 @@ parser_post_processing (parser_context_t *context_p) /**< context */ compiled_code_p = (ecma_compiled_code_t *) parser_malloc (context_p, total_size); byte_code_p = (uint8_t *) compiled_code_p; - compiled_code_p->status_flags = CBC_CODE_FLAGS_FUNCTION | (1 << ECMA_BYTECODE_REF_SHIFT); + compiled_code_p->status_flags = CBC_CODE_FLAGS_FUNCTION | (1u << ECMA_BYTECODE_REF_SHIFT); if (needs_uint16_arguments) { diff --git a/jerry-core/parser/regexp/re-compiler.c b/jerry-core/parser/regexp/re-compiler.c index bcead65d..fe1535d1 100644 --- a/jerry-core/parser/regexp/re-compiler.c +++ b/jerry-core/parser/regexp/re-compiler.c @@ -389,20 +389,20 @@ re_insert_into_group_with_jump (re_compiler_ctx_t *re_ctx_p, /**< RegExp compile * Parse alternatives * * @return completion value - * Returned value must be freed with ecma_free_completion_value + * Returned value must be freed with ecma_free_value */ -static ecma_completion_value_t +static ecma_value_t re_parse_alternative (re_compiler_ctx_t *re_ctx_p, /**< RegExp compiler context */ bool expect_eof) /**< expect end of file */ { uint32_t idx; re_bytecode_ctx_t *bc_ctx_p = re_ctx_p->bytecode_ctx_p; - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); uint32_t alterantive_offset = re_get_bytecode_length (re_ctx_p->bytecode_ctx_p); bool should_loop = true; - while (ecma_is_completion_value_empty (ret_value) && should_loop) + while (ecma_is_value_empty (ret_value) && should_loop) { ECMA_TRY_CATCH (empty, re_parse_next_token (re_ctx_p->parser_ctx_p, @@ -420,7 +420,7 @@ re_parse_alternative (re_compiler_ctx_t *re_ctx_p, /**< RegExp compiler context ret_value = re_parse_alternative (re_ctx_p, false); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { re_insert_into_group (re_ctx_p, new_atom_start_offset, idx, true); } @@ -434,7 +434,7 @@ re_parse_alternative (re_compiler_ctx_t *re_ctx_p, /**< RegExp compiler context ret_value = re_parse_alternative (re_ctx_p, false); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { re_insert_into_group (re_ctx_p, new_atom_start_offset, idx, false); } @@ -507,7 +507,7 @@ re_parse_alternative (re_compiler_ctx_t *re_ctx_p, /**< RegExp compiler context ret_value = re_parse_alternative (re_ctx_p, false); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { re_append_opcode (bc_ctx_p, RE_OP_MATCH); @@ -524,7 +524,7 @@ re_parse_alternative (re_compiler_ctx_t *re_ctx_p, /**< RegExp compiler context ret_value = re_parse_alternative (re_ctx_p, false); - if (ecma_is_completion_value_empty (ret_value)) + if (ecma_is_value_empty (ret_value)) { re_append_opcode (bc_ctx_p, RE_OP_MATCH); @@ -628,14 +628,14 @@ re_parse_alternative (re_compiler_ctx_t *re_ctx_p, /**< RegExp compiler context * Compilation of RegExp bytecode * * @return completion value - * Returned value must be freed with ecma_free_completion_value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t re_compile_bytecode (re_compiled_code_t **out_bytecode_p, /**< out:pointer to bytecode */ ecma_string_t *pattern_str_p, /**< pattern */ uint16_t flags) /**< flags */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); re_compiler_ctx_t re_ctx; re_ctx.flags = flags; re_ctx.highest_backref = 0; @@ -680,7 +680,7 @@ re_compile_bytecode (re_compiled_code_t **out_bytecode_p, /**< out:pointer to by /* 3. Insert extra informations for bytecode header */ re_compiled_code_t re_compiled_code; - re_compiled_code.flags = re_ctx.flags | (1 << ECMA_BYTECODE_REF_SHIFT); + re_compiled_code.flags = re_ctx.flags | (1u << ECMA_BYTECODE_REF_SHIFT); ECMA_SET_NON_NULL_POINTER (re_compiled_code.pattern_cp, ecma_copy_or_ref_ecma_string (pattern_str_p)); re_compiled_code.num_of_captures = re_ctx.num_of_captures * 2; @@ -695,7 +695,7 @@ re_compile_bytecode (re_compiled_code_t **out_bytecode_p, /**< out:pointer to by MEM_FINALIZE_LOCAL_ARRAY (pattern_start_p); - if (!ecma_is_completion_value_empty (ret_value)) + if (!ecma_is_value_empty (ret_value)) { /* Compilation failed, free bytecode. */ mem_heap_free_block (bc_ctx.block_start_p); diff --git a/jerry-core/parser/regexp/re-compiler.h b/jerry-core/parser/regexp/re-compiler.h index 942ce2dd..1a33106b 100644 --- a/jerry-core/parser/regexp/re-compiler.h +++ b/jerry-core/parser/regexp/re-compiler.h @@ -111,7 +111,7 @@ typedef struct re_parser_ctx_t *parser_ctx_p; /**< pointer of RegExp parser context */ } re_compiler_ctx_t; -ecma_completion_value_t +ecma_value_t re_compile_bytecode (re_compiled_code_t **, ecma_string_t *, uint16_t); re_opcode_t diff --git a/jerry-core/parser/regexp/re-parser.c b/jerry-core/parser/regexp/re-parser.c index ee1bbb78..e84447f2 100644 --- a/jerry-core/parser/regexp/re-parser.c +++ b/jerry-core/parser/regexp/re-parser.c @@ -1,5 +1,5 @@ -/* Copyright 2015 Samsung Electronics Co., Ltd. - * Copyright 2015 University of Szeged. +/* Copyright 2015-2016 Samsung Electronics Co., Ltd. + * Copyright 2015-2016 University of Szeged. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -106,13 +106,13 @@ re_parse_octal (re_parser_ctx_t *parser_ctx_p) /**< RegExp parser context */ * Parse RegExp iterators * * @return completion value - * Returned value must be freed with ecma_free_completion_value + * Returned value must be freed with ecma_free_value */ -static ecma_completion_value_t +static ecma_value_t re_parse_iterator (re_parser_ctx_t *parser_ctx_p, /**< RegExp parser context */ re_token_t *re_token_p) /**< out: output token */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); re_token_p->qmin = 1; re_token_p->qmax = 1; @@ -239,7 +239,7 @@ re_parse_iterator (re_parser_ctx_t *parser_ctx_p, /**< RegExp parser context */ } } - JERRY_ASSERT (ecma_is_completion_value_empty (ret_value)); + JERRY_ASSERT (ecma_is_value_empty (ret_value)); if (re_token_p->qmin > re_token_p->qmax) { @@ -299,9 +299,9 @@ re_count_num_of_groups (re_parser_ctx_t *parser_ctx_p) /**< RegExp parser contex * Read the input pattern and parse the range of character class * * @return completion value - * Returned value must be freed with ecma_free_completion_value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t re_parse_char_class (re_parser_ctx_t *parser_ctx_p, /**< number of classes */ re_char_class_callback append_char_class, /**< callback function, * which adds the char-ranges @@ -557,13 +557,13 @@ re_parse_char_class (re_parser_ctx_t *parser_ctx_p, /**< number of classes */ * Read the input pattern and parse the next token for the RegExp compiler * * @return completion value - * Returned value must be freed with ecma_free_completion_value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t re_parse_next_token (re_parser_ctx_t *parser_ctx_p, /**< RegExp parser context */ re_token_t *out_token_p) /**< out: output token */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (parser_ctx_p->input_curr_p >= parser_ctx_p->input_end_p) { diff --git a/jerry-core/parser/regexp/re-parser.h b/jerry-core/parser/regexp/re-parser.h index 0acc8533..0b9b8069 100644 --- a/jerry-core/parser/regexp/re-parser.h +++ b/jerry-core/parser/regexp/re-parser.h @@ -106,10 +106,10 @@ typedef struct typedef void (*re_char_class_callback) (void *re_ctx_p, uint32_t start, uint32_t end); -ecma_completion_value_t +ecma_value_t re_parse_char_class (re_parser_ctx_t *, re_char_class_callback, void *, re_token_t *); -ecma_completion_value_t +ecma_value_t re_parse_next_token (re_parser_ctx_t *, re_token_t *); /** diff --git a/jerry-core/vm/opcodes-ecma-arithmetics.c b/jerry-core/vm/opcodes-ecma-arithmetics.c index db8a9ee0..6b4e646a 100644 --- a/jerry-core/vm/opcodes-ecma-arithmetics.c +++ b/jerry-core/vm/opcodes-ecma-arithmetics.c @@ -37,15 +37,15 @@ * rightNum = ToNumber (rightValue); * result = leftNum ArithmeticOp rightNum; * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t do_number_arithmetic (number_arithmetic_op op, /**< number arithmetic operation */ ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (num_left, left_value, ret_value); ECMA_OP_TO_NUMBER_TRY_CATCH (num_right, right_value, ret_value); @@ -81,7 +81,7 @@ do_number_arithmetic (number_arithmetic_op op, /**< number arithmetic operation } } - ret_value = ecma_make_completion_value (ECMA_COMPLETION_TYPE_NORMAL, ecma_make_number_value (res_p)); + ret_value = ecma_make_number_value (res_p); ECMA_OP_TO_NUMBER_FINALIZE (num_right); ECMA_OP_TO_NUMBER_FINALIZE (num_left); @@ -94,14 +94,14 @@ do_number_arithmetic (number_arithmetic_op op, /**< number arithmetic operation * * See also: ECMA-262 v5, 11.6.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_addition (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (prim_left_value, ecma_op_to_primitive (left_value, @@ -123,7 +123,7 @@ opfunc_addition (ecma_value_t left_value, /**< left value */ ecma_string_t *concat_str_p = ecma_concat_ecma_strings (string1_p, string2_p); - ret_value = ecma_make_completion_value (ECMA_COMPLETION_TYPE_NORMAL, ecma_make_string_value (concat_str_p)); + ret_value = ecma_make_string_value (concat_str_p); ECMA_FINALIZE (str_right_value); ECMA_FINALIZE (str_left_value); @@ -146,13 +146,13 @@ opfunc_addition (ecma_value_t left_value, /**< left value */ * * See also: ECMA-262 v5, 11.4, 11.4.6 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_unary_plus (ecma_value_t left_value) /**< left value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (num_var_value, left_value, @@ -161,7 +161,7 @@ opfunc_unary_plus (ecma_value_t left_value) /**< left value */ ecma_number_t *tmp_p = ecma_alloc_number (); *tmp_p = num_var_value; - ret_value = ecma_make_completion_value (ECMA_COMPLETION_TYPE_NORMAL, ecma_make_number_value (tmp_p)); + ret_value = ecma_make_number_value (tmp_p); ECMA_OP_TO_NUMBER_FINALIZE (num_var_value); @@ -173,13 +173,13 @@ opfunc_unary_plus (ecma_value_t left_value) /**< left value */ * * See also: ECMA-262 v5, 11.4, 11.4.7 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_unary_minus (ecma_value_t left_value) /**< left value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (num_var_value, left_value, @@ -188,7 +188,7 @@ opfunc_unary_minus (ecma_value_t left_value) /**< left value */ ecma_number_t *tmp_p = ecma_alloc_number (); *tmp_p = ecma_number_negate (num_var_value); - ret_value = ecma_make_completion_value (ECMA_COMPLETION_TYPE_NORMAL, ecma_make_number_value (tmp_p)); + ret_value = ecma_make_number_value (tmp_p); ECMA_OP_TO_NUMBER_FINALIZE (num_var_value); diff --git a/jerry-core/vm/opcodes-ecma-bitwise.c b/jerry-core/vm/opcodes-ecma-bitwise.c index 0bdce34c..4359c72e 100644 --- a/jerry-core/vm/opcodes-ecma-bitwise.c +++ b/jerry-core/vm/opcodes-ecma-bitwise.c @@ -35,15 +35,15 @@ * rightNum = ToNumber (rightValue); * result = leftNum BitwiseLogicOp rightNum; * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t do_number_bitwise_logic (number_bitwise_logic_op op, /**< number bitwise logic operation */ ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_OP_TO_NUMBER_TRY_CATCH (num_left, left_value, ret_value); ECMA_OP_TO_NUMBER_TRY_CATCH (num_right, right_value, ret_value); @@ -94,7 +94,7 @@ do_number_bitwise_logic (number_bitwise_logic_op op, /**< number bitwise logic o } } - ret_value = ecma_make_normal_completion_value (ecma_make_number_value (res_p)); + ret_value = ecma_make_number_value (res_p); ECMA_OP_TO_NUMBER_FINALIZE (num_right); ECMA_OP_TO_NUMBER_FINALIZE (num_left); diff --git a/jerry-core/vm/opcodes-ecma-equality.c b/jerry-core/vm/opcodes-ecma-equality.c index 44c35119..369a3e6d 100644 --- a/jerry-core/vm/opcodes-ecma-equality.c +++ b/jerry-core/vm/opcodes-ecma-equality.c @@ -37,14 +37,14 @@ * * See also: ECMA-262 v5, 11.9.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_equal_value (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (compare_result, ecma_op_abstract_equality_compare (left_value, @@ -53,7 +53,7 @@ opfunc_equal_value (ecma_value_t left_value, /**< left value */ JERRY_ASSERT (ecma_is_value_boolean (compare_result)); - ret_value = ecma_make_normal_completion_value (compare_result); + ret_value = compare_result; ECMA_FINALIZE (compare_result); @@ -65,14 +65,14 @@ opfunc_equal_value (ecma_value_t left_value, /**< left value */ * * See also: ECMA-262 v5, 11.9.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_not_equal_value (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (compare_result, ecma_op_abstract_equality_compare (left_value, right_value), @@ -82,8 +82,8 @@ opfunc_not_equal_value (ecma_value_t left_value, /**< left value */ bool is_equal = ecma_is_value_true (compare_result); - ret_value = ecma_make_normal_completion_value (ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_FALSE - : ECMA_SIMPLE_VALUE_TRUE)); + ret_value = ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_FALSE + : ECMA_SIMPLE_VALUE_TRUE); ECMA_FINALIZE (compare_result); @@ -95,17 +95,17 @@ opfunc_not_equal_value (ecma_value_t left_value, /**< left value */ * * See also: ECMA-262 v5, 11.9.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_equal_value_type (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { bool is_equal = ecma_op_strict_equality_compare (left_value, right_value); - return ecma_make_normal_completion_value (ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE - : ECMA_SIMPLE_VALUE_FALSE)); + return ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_TRUE + : ECMA_SIMPLE_VALUE_FALSE); } /* opfunc_equal_value_type */ /** @@ -113,17 +113,17 @@ opfunc_equal_value_type (ecma_value_t left_value, /**< left value */ * * See also: ECMA-262 v5, 11.9.5 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_not_equal_value_type (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { bool is_equal = ecma_op_strict_equality_compare (left_value, right_value); - return ecma_make_normal_completion_value (ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_FALSE - : ECMA_SIMPLE_VALUE_TRUE)); + return ecma_make_simple_value (is_equal ? ECMA_SIMPLE_VALUE_FALSE + : ECMA_SIMPLE_VALUE_TRUE); } /* opfunc_not_equal_value_type */ /** diff --git a/jerry-core/vm/opcodes-ecma-relational.c b/jerry-core/vm/opcodes-ecma-relational.c index 32353df3..546c7125 100644 --- a/jerry-core/vm/opcodes-ecma-relational.c +++ b/jerry-core/vm/opcodes-ecma-relational.c @@ -34,34 +34,30 @@ * * See also: ECMA-262 v5, 11.8.1 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_less_than (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (compare_result, ecma_op_abstract_relational_compare (left_value, right_value, true), ret_value); - ecma_simple_value_t res; - if (ecma_is_value_undefined (compare_result)) { - res = ECMA_SIMPLE_VALUE_FALSE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } else { JERRY_ASSERT (ecma_is_value_boolean (compare_result)); - res = (ecma_is_value_true (compare_result) ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); + ret_value = compare_result; } - ret_value = ecma_make_simple_completion_value (res); - ECMA_FINALIZE (compare_result); return ret_value; @@ -72,34 +68,30 @@ opfunc_less_than (ecma_value_t left_value, /**< left value */ * * See also: ECMA-262 v5, 11.8.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_greater_than (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (compare_result, ecma_op_abstract_relational_compare (right_value, left_value, false), ret_value); - ecma_simple_value_t res; - if (ecma_is_value_undefined (compare_result)) { - res = ECMA_SIMPLE_VALUE_FALSE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } else { JERRY_ASSERT (ecma_is_value_boolean (compare_result)); - res = (ecma_is_value_true (compare_result) ? ECMA_SIMPLE_VALUE_TRUE : ECMA_SIMPLE_VALUE_FALSE); + ret_value = compare_result; } - ret_value = ecma_make_simple_completion_value (res); - ECMA_FINALIZE (compare_result); return ret_value; @@ -110,24 +102,22 @@ opfunc_greater_than (ecma_value_t left_value, /**< left value */ * * See also: ECMA-262 v5, 11.8.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_less_or_equal_than (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (compare_result, ecma_op_abstract_relational_compare (right_value, left_value, false), ret_value); - ecma_simple_value_t res; - if (ecma_is_value_undefined (compare_result)) { - res = ECMA_SIMPLE_VALUE_FALSE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } else { @@ -135,16 +125,14 @@ opfunc_less_or_equal_than (ecma_value_t left_value, /**< left value */ if (ecma_is_value_true (compare_result)) { - res = ECMA_SIMPLE_VALUE_FALSE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } else { - res = ECMA_SIMPLE_VALUE_TRUE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } } - ret_value = ecma_make_simple_completion_value (res); - ECMA_FINALIZE (compare_result); return ret_value; @@ -155,24 +143,22 @@ opfunc_less_or_equal_than (ecma_value_t left_value, /**< left value */ * * See also: ECMA-262 v5, 11.8.4 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_greater_or_equal_than (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (compare_result, ecma_op_abstract_relational_compare (left_value, right_value, true), ret_value); - ecma_simple_value_t res; - if (ecma_is_value_undefined (compare_result)) { - res = ECMA_SIMPLE_VALUE_FALSE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } else { @@ -180,16 +166,14 @@ opfunc_greater_or_equal_than (ecma_value_t left_value, /**< left value */ if (ecma_is_value_true (compare_result)) { - res = ECMA_SIMPLE_VALUE_FALSE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } else { - res = ECMA_SIMPLE_VALUE_TRUE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } } - ret_value = ecma_make_simple_completion_value (res); - ECMA_FINALIZE (compare_result); return ret_value; @@ -200,18 +184,18 @@ opfunc_greater_or_equal_than (ecma_value_t left_value, /**< left value */ * * See also: ECMA-262 v5, 11.8.6 * - * @return completion value - * returned value must be freed with ecma_free_completion_value. + * @return ecma value + * returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t opfunc_instanceof (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (right_value)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -221,7 +205,7 @@ opfunc_instanceof (ecma_value_t left_value, /**< left value */ ecma_op_object_has_instance (right_value_obj_p, left_value), ret_value); - ret_value = ecma_make_normal_completion_value (is_instance_of); + ret_value = is_instance_of; ECMA_FINALIZE (is_instance_of); } @@ -234,38 +218,35 @@ opfunc_instanceof (ecma_value_t left_value, /**< left value */ * * See also: ECMA-262 v5, 11.8.7 * - * @return completion value - * returned value must be freed with ecma_free_completion_value. + * @return ecma value + * returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t opfunc_in (ecma_value_t left_value, /**< left value */ ecma_value_t right_value) /**< right value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_value_object (right_value)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { ECMA_TRY_CATCH (str_left_value, ecma_op_to_string (left_value), ret_value); - ecma_simple_value_t is_in = ECMA_SIMPLE_VALUE_UNDEFINED; ecma_string_t *left_value_prop_name_p = ecma_get_string_from_value (str_left_value); ecma_object_t *right_value_obj_p = ecma_get_object_from_value (right_value); if (ecma_op_object_get_property (right_value_obj_p, left_value_prop_name_p) != NULL) { - is_in = ECMA_SIMPLE_VALUE_TRUE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } else { - is_in = ECMA_SIMPLE_VALUE_FALSE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } - ret_value = ecma_make_simple_completion_value (is_in); - ECMA_FINALIZE (str_left_value); } diff --git a/jerry-core/vm/opcodes.c b/jerry-core/vm/opcodes.c index 96308f52..ae492b99 100644 --- a/jerry-core/vm/opcodes.c +++ b/jerry-core/vm/opcodes.c @@ -40,20 +40,20 @@ * * See also: ECMA-262 v5, 11.2.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t opfunc_call_n (ecma_value_t this_value, /**< this object value */ ecma_value_t func_value, /**< function object value */ const ecma_value_t *arguments_list_p, /**< stack pointer */ ecma_length_t arguments_list_len) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_op_is_callable (func_value)) { - return ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + return ecma_raise_type_error (""); } ecma_object_t *func_obj_p = ecma_get_object_from_value (func_value); @@ -71,19 +71,19 @@ opfunc_call_n (ecma_value_t this_value, /**< this object value */ * * See also: ECMA-262 v5, 11.2.2 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value. + * @return ecma value + * Returned value must be freed with ecma_free_value. */ -ecma_completion_value_t +ecma_value_t opfunc_construct_n (ecma_value_t constructor_value, /**< constructor object value */ const ecma_value_t *arguments_list_p, /**< stack pointer */ ecma_length_t arguments_list_len) /**< number of arguments */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (!ecma_is_constructor (constructor_value)) { - ret_value = ecma_make_throw_obj_completion_value (ecma_new_standard_error (ECMA_ERROR_TYPE)); + ret_value = ecma_raise_type_error (""); } else { @@ -95,7 +95,7 @@ opfunc_construct_n (ecma_value_t constructor_value, /**< constructor object valu arguments_list_len), ret_value); - ret_value = ecma_make_normal_completion_value (ecma_copy_value (construction_ret_value, true)); + ret_value = ecma_copy_value (construction_ret_value, true); ECMA_FINALIZE (construction_ret_value); } @@ -108,11 +108,11 @@ opfunc_construct_n (ecma_value_t constructor_value, /**< constructor object valu * * See also: ECMA-262 v5, 10.5 - Declaration binding instantiation (block 8). * - * @return completion value + * @return ecma value * Returned value is simple and so need not be freed. - * However, ecma_free_completion_value may be called for it, but it is a no-op. + * However, ecma_free_value may be called for it, but it is a no-op. */ -ecma_completion_value_t +ecma_value_t vm_var_decl (vm_frame_ctx_t *frame_ctx_p, /**< interpreter context */ ecma_string_t *var_name_str_p) /**< variable name */ { @@ -120,21 +120,20 @@ vm_var_decl (vm_frame_ctx_t *frame_ctx_p, /**< interpreter context */ { const bool is_configurable_bindings = frame_ctx_p->is_eval_code; - ecma_completion_value_t completion = ecma_op_create_mutable_binding (frame_ctx_p->lex_env_p, - var_name_str_p, - is_configurable_bindings); + ecma_value_t completion_value = ecma_op_create_mutable_binding (frame_ctx_p->lex_env_p, + var_name_str_p, + is_configurable_bindings); - JERRY_ASSERT (ecma_is_completion_value_empty (completion)); + JERRY_ASSERT (ecma_is_value_empty (completion_value)); /* Skipping SetMutableBinding as we have already checked that there were not * any binding with specified name in current lexical environment * and CreateMutableBinding sets the created binding's value to undefined */ - JERRY_ASSERT (ecma_is_completion_value_normal_simple_value (ecma_op_get_binding_value (frame_ctx_p->lex_env_p, - var_name_str_p, - true), - ECMA_SIMPLE_VALUE_UNDEFINED)); + JERRY_ASSERT (ecma_is_value_undefined (ecma_op_get_binding_value (frame_ctx_p->lex_env_p, + var_name_str_p, + true))); } - return ecma_make_empty_completion_value (); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); } /* vm_var_decl */ /** @@ -142,24 +141,20 @@ vm_var_decl (vm_frame_ctx_t *frame_ctx_p, /**< interpreter context */ * * See also: ECMA-262 v5, 11.4.9 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_logical_not (ecma_value_t left_value) /**< left value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); - - ecma_simple_value_t old_value = ECMA_SIMPLE_VALUE_TRUE; - ecma_completion_value_t to_bool_value = ecma_op_to_boolean (left_value); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); + ecma_value_t to_bool_value = ecma_op_to_boolean (left_value); - if (ecma_is_value_true (ecma_get_completion_value_value (to_bool_value))) + if (ecma_is_value_true (to_bool_value)) { - old_value = ECMA_SIMPLE_VALUE_FALSE; + ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); } - ret_value = ecma_make_simple_completion_value (old_value); - return ret_value; } /* opfunc_logical_not */ @@ -168,13 +163,13 @@ opfunc_logical_not (ecma_value_t left_value) /**< left value */ * * See also: ECMA-262 v5, 11.4.3 * - * @return completion value - * Returned value must be freed with ecma_free_completion_value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t opfunc_typeof (ecma_value_t left_value) /**< left value */ { - ecma_completion_value_t ret_value = ecma_make_empty_completion_value (); + ecma_value_t ret_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_string_t *type_str_p = NULL; @@ -212,7 +207,7 @@ opfunc_typeof (ecma_value_t left_value) /**< left value */ } } - ret_value = ecma_make_normal_completion_value (ecma_make_string_value (type_str_p)); + ret_value = ecma_make_string_value (type_str_p); return ret_value; } /* opfunc_typeof */ @@ -278,22 +273,23 @@ opfunc_set_accessor (bool is_getter, /**< is getter accessor */ /** * Deletes an object property. * - * @return completion value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t vm_op_delete_prop (ecma_value_t object, /**< base object */ ecma_value_t property, /**< property name */ bool is_strict) /**< strict mode */ { - ecma_completion_value_t completion_value = ecma_make_empty_completion_value (); + ecma_value_t completion_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); if (ecma_is_value_undefined (object)) { - completion_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + completion_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } else { - completion_value = ecma_make_empty_completion_value (); + completion_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (check_coercible_ret, ecma_op_check_object_coercible (object), @@ -315,7 +311,7 @@ vm_op_delete_prop (ecma_value_t object, /**< base object */ ecma_op_object_delete (obj_p, name_string_p, is_strict), completion_value); - completion_value = ecma_make_normal_completion_value (delete_op_ret_val); + completion_value = delete_op_ret_val; ECMA_FINALIZE (delete_op_ret_val); ECMA_FINALIZE (obj_value); @@ -329,14 +325,15 @@ vm_op_delete_prop (ecma_value_t object, /**< base object */ /** * Deletes a variable. * - * @return completion value + * @return ecma value + * Returned value must be freed with ecma_free_value */ -ecma_completion_value_t +ecma_value_t vm_op_delete_var (lit_cpointer_t name_literal, /**< name literal */ ecma_object_t *lex_env_p, /**< lexical environment */ bool is_strict) /**< strict mode */ { - ecma_completion_value_t completion_value = ecma_make_empty_completion_value (); + ecma_value_t completion_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_string_t *var_name_str_p; @@ -349,7 +346,7 @@ vm_op_delete_var (lit_cpointer_t name_literal, /**< name literal */ if (ecma_is_value_undefined (ref.base)) { - completion_value = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_TRUE); + completion_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE); } else { @@ -363,7 +360,7 @@ vm_op_delete_var (lit_cpointer_t name_literal, /**< name literal */ ref.referenced_name_cp)), completion_value); - completion_value = ecma_make_normal_completion_value (delete_op_ret_val); + completion_value = delete_op_ret_val; ECMA_FINALIZE (delete_op_ret_val); @@ -382,13 +379,13 @@ vm_op_delete_var (lit_cpointer_t name_literal, /**< name literal */ * ECMA-262 v5, 12.6.4 * * @return completion value - * Returned value must be freed with ecma_free_completion_value + * Returned value must be freed with ecma_free_value */ ecma_collection_header_t * opfunc_for_in (ecma_value_t left_value, /**< left value */ ecma_value_t *result_obj_p) /**< expression object */ { - ecma_completion_value_t compl_val = ecma_make_empty_completion_value (); + ecma_value_t compl_val = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_collection_header_t *prop_names_p = NULL; /* 3. */ @@ -417,7 +414,7 @@ opfunc_for_in (ecma_value_t left_value, /**< left value */ ECMA_FINALIZE (obj_expr_value); } - JERRY_ASSERT (ecma_is_completion_value_empty (compl_val)); + JERRY_ASSERT (ecma_is_value_empty (compl_val)); return prop_names_p; } /* opfunc_for_in */ diff --git a/jerry-core/vm/opcodes.h b/jerry-core/vm/opcodes.h index 648789ba..5f1e9cce 100644 --- a/jerry-core/vm/opcodes.h +++ b/jerry-core/vm/opcodes.h @@ -53,75 +53,75 @@ typedef enum NUMBER_BITWISE_NOT, /**< bitwise NOT calculation */ } number_bitwise_logic_op; -ecma_completion_value_t +ecma_value_t vm_var_decl (vm_frame_ctx_t *, ecma_string_t *); -ecma_completion_value_t +ecma_value_t opfunc_call_n (ecma_value_t, ecma_value_t, const ecma_value_t *, ecma_length_t); -ecma_completion_value_t +ecma_value_t opfunc_construct_n (ecma_value_t, const ecma_value_t *, ecma_length_t); -ecma_completion_value_t +ecma_value_t opfunc_equal_value (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_not_equal_value (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_equal_value_type (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_not_equal_value_type (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t do_number_arithmetic (number_arithmetic_op, ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_unary_plus (ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_unary_minus (ecma_value_t); -ecma_completion_value_t +ecma_value_t do_number_bitwise_logic (number_bitwise_logic_op, ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_addition (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_less_than (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_greater_than (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_less_or_equal_than (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_greater_or_equal_than (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_in (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_instanceof (ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_logical_not (ecma_value_t); -ecma_completion_value_t +ecma_value_t opfunc_typeof (ecma_value_t); void opfunc_set_accessor (bool, ecma_value_t, ecma_value_t, ecma_value_t); -ecma_completion_value_t +ecma_value_t vm_op_delete_prop (ecma_value_t, ecma_value_t, bool); -ecma_completion_value_t +ecma_value_t vm_op_delete_var (lit_cpointer_t, ecma_object_t *, bool); ecma_collection_header_t * diff --git a/jerry-core/vm/vm-stack.c b/jerry-core/vm/vm-stack.c index f2066584..327dbfa9 100644 --- a/jerry-core/vm/vm-stack.c +++ b/jerry-core/vm/vm-stack.c @@ -41,7 +41,7 @@ vm_stack_context_abort (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ case VM_CONTEXT_FINALLY_THROW: case VM_CONTEXT_FINALLY_RETURN: { - ecma_free_value (vm_stack_top_p[-2], true); + ecma_free_value (vm_stack_top_p[-2]); VM_MINUS_EQUAL_U16 (frame_ctx_p->context_depth, PARSER_TRY_CONTEXT_STACK_ALLOCATION); vm_stack_top_p -= PARSER_TRY_CONTEXT_STACK_ALLOCATION; @@ -76,13 +76,13 @@ vm_stack_context_abort (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ current); lit_utf8_byte_t *data_ptr = chunk_p->data; - ecma_free_value (*(ecma_value_t *) data_ptr, true); + ecma_free_value (*(ecma_value_t *) data_ptr); current = chunk_p->next_chunk_cp; ecma_dealloc_collection_chunk (chunk_p); } - ecma_free_value (vm_stack_top_p[-3], true); + ecma_free_value (vm_stack_top_p[-3]); VM_MINUS_EQUAL_U16 (frame_ctx_p->context_depth, PARSER_FOR_IN_CONTEXT_STACK_ALLOCATION); vm_stack_top_p -= PARSER_FOR_IN_CONTEXT_STACK_ALLOCATION; diff --git a/jerry-core/vm/vm-stack.h b/jerry-core/vm/vm-stack.h index d39b9bb8..bea61903 100644 --- a/jerry-core/vm/vm-stack.h +++ b/jerry-core/vm/vm-stack.h @@ -28,7 +28,7 @@ */ /** - * Number of ecma-values inlined into stack frame + * Number of ecma values inlined into stack frame */ #define VM_STACK_FRAME_INLINED_VALUES_NUMBER CONFIG_VM_STACK_FRAME_INLINED_VALUES_NUMBER diff --git a/jerry-core/vm/vm.c b/jerry-core/vm/vm.c index 281419cd..6e61d4b8 100644 --- a/jerry-core/vm/vm.c +++ b/jerry-core/vm/vm.c @@ -61,20 +61,19 @@ static ecma_compiled_code_t *__program = NULL; /** * Get the value of object[property]. * - * @return completion value + * @return ecma value */ -static ecma_completion_value_t +static ecma_value_t vm_op_get_value (ecma_value_t object, /**< base object */ ecma_value_t property, /**< property name */ bool is_strict) /**< strict mode */ { if (unlikely (ecma_is_value_undefined (object) || ecma_is_value_null (object))) { - ecma_object_t *error = ecma_new_standard_error (ECMA_ERROR_TYPE); - return ecma_make_throw_obj_completion_value (error); + return ecma_raise_type_error (""); } - ecma_completion_value_t completion_value = ecma_make_empty_completion_value (); + ecma_value_t completion_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (property_val, ecma_op_to_string (property), @@ -96,15 +95,15 @@ vm_op_get_value (ecma_value_t object, /**< base object */ /** * Set the value of object[property]. * - * @return completion value + * @return ecma value */ -static ecma_completion_value_t +static ecma_value_t vm_op_set_value (ecma_value_t object, /**< base object */ ecma_value_t property, /**< property name */ ecma_value_t value, /**< ecma value */ bool is_strict) /**< strict mode */ { - ecma_completion_value_t completion_value = ecma_make_empty_completion_value (); + ecma_value_t completion_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ECMA_TRY_CATCH (obj_val, ecma_op_to_object (object), @@ -187,25 +186,23 @@ vm_run_global (void) ecma_object_t *glob_obj_p = ecma_builtin_get (ECMA_BUILTIN_ID_GLOBAL); ecma_object_t *lex_env_p = ecma_get_global_environment (); - ecma_completion_value_t completion = vm_run (__program, - ecma_make_object_value (glob_obj_p), - lex_env_p, - false, - NULL, - 0); + ecma_value_t completion_value = vm_run (__program, + ecma_make_object_value (glob_obj_p), + lex_env_p, + false, + NULL, + 0); - if (ecma_is_completion_value_return (completion)) + if (ecma_is_value_error (completion_value)) { - ret_code = JERRY_COMPLETION_CODE_OK; + ret_code = JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION; } else { - JERRY_ASSERT (ecma_is_completion_value_throw (completion)); - - ret_code = JERRY_COMPLETION_CODE_UNHANDLED_EXCEPTION; + ret_code = JERRY_COMPLETION_CODE_OK; } - ecma_free_completion_value (completion); + ecma_free_value (completion_value); ecma_deref_object (glob_obj_p); ecma_deref_object (lex_env_p); @@ -216,9 +213,9 @@ vm_run_global (void) /** * Run specified eval-mode bytecode * - * @return completion value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t vm_run_eval (ecma_compiled_code_t *bytecode_data_p, /**< byte-code data */ bool is_direct) /**< is eval called in direct mode? */ { @@ -248,27 +245,18 @@ vm_run_eval (ecma_compiled_code_t *bytecode_data_p, /**< byte-code data */ lex_env_p = strict_lex_env_p; } - ecma_completion_value_t completion = vm_run (bytecode_data_p, - this_binding, - lex_env_p, - true, - NULL, - 0); - - if (ecma_is_completion_value_return (completion)) - { - completion = ecma_make_normal_completion_value (ecma_get_completion_value_value (completion)); - } - else - { - JERRY_ASSERT (ecma_is_completion_value_throw (completion)); - } + ecma_value_t completion_value = vm_run (bytecode_data_p, + this_binding, + lex_env_p, + true, + NULL, + 0); ecma_deref_object (lex_env_p); - ecma_free_value (this_binding, true); + ecma_free_value (this_binding); ecma_bytecode_deref (bytecode_data_p); - return completion; + return completion_value; } /* vm_run_eval */ /** @@ -297,16 +285,16 @@ vm_construct_literal_object (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ else { #ifndef CONFIG_ECMA_COMPACT_PROFILE_DISABLE_REGEXP_BUILTIN - ecma_completion_value_t ret_value; + ecma_value_t ret_value; ret_value = ecma_op_create_regexp_object_from_bytecode ((re_compiled_code_t *) bytecode_p); - if (ecma_is_completion_value_throw (ret_value)) + if (ecma_is_value_error (ret_value)) { // FIXME: throw exception instead of define an 'undefined' value. return ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } - return ecma_get_completion_value_value (ret_value); + return ret_value; #else JERRY_UNIMPLEMENTED ("Regular Expressions are not supported in compact profile!"); #endif /* CONFIG_ECMA_COMPACT_PROFILE_DISABLE_REGEXP_BUILTIN */ @@ -328,11 +316,11 @@ vm_get_implicit_this_value (ecma_value_t *this_value_p) /**< in-out: this value if (ecma_is_lexical_environment (this_obj_p)) { - ecma_completion_value_t completion_value = ecma_op_implicit_this_value (this_obj_p); + ecma_value_t completion_value = ecma_op_implicit_this_value (this_obj_p); - JERRY_ASSERT (ecma_is_completion_value_normal (completion_value)); + JERRY_ASSERT (!ecma_is_value_error (completion_value)); - *this_value_p = ecma_get_completion_value_value (completion_value); + *this_value_p = completion_value; return true; } } @@ -386,17 +374,16 @@ enum } \ else \ { \ - ecma_object_t *error = ecma_new_standard_error (ECMA_ERROR_REFERENCE); \ - last_completion_value = ecma_make_throw_obj_completion_value (error); \ + last_completion_value = ecma_raise_reference_error (""); \ } \ \ ecma_deref_ecma_string (name_p); \ \ - if (ecma_is_completion_value_throw (last_completion_value)) \ + if (ecma_is_value_error (last_completion_value)) \ { \ goto error; \ } \ - (target_value) = ecma_get_completion_value_value (last_completion_value); \ + (target_value) = last_completion_value; \ target_free_op; \ } \ } \ @@ -443,14 +430,14 @@ vm_finalize (void) /** * Run initializer byte codes. * - * @return completion value + * @return ecma value */ -static ecma_completion_value_t +static ecma_value_t vm_init_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ { const ecma_compiled_code_t *bytecode_header_p = frame_ctx_p->bytecode_header_p; uint8_t *byte_code_p = frame_ctx_p->byte_code_p; - ecma_completion_value_t last_completion_value = ecma_make_empty_completion_value (); + ecma_value_t last_completion_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); uint16_t encoding_limit; uint16_t encoding_delta; uint16_t register_end; @@ -551,7 +538,7 @@ vm_init_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ if (value_index >= register_end) { - ecma_free_value (lit_value, true); + ecma_free_value (lit_value); } ecma_deref_ecma_string (name_p); @@ -572,7 +559,7 @@ vm_init_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ default: { frame_ctx_p->byte_code_p = byte_code_p; - return ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_UNDEFINED); + return ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } } } @@ -583,15 +570,15 @@ vm_init_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ /** * Run generic byte code. * - * @return completion value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ { const ecma_compiled_code_t *bytecode_header_p = frame_ctx_p->bytecode_header_p; uint8_t *byte_code_p = frame_ctx_p->byte_code_p; lit_cpointer_t *literal_start_p = frame_ctx_p->literal_start_p; - ecma_completion_value_t last_completion_value = ecma_make_empty_completion_value (); + ecma_value_t last_completion_value = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY); ecma_value_t *stack_top_p; uint16_t encoding_limit; @@ -784,7 +771,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ case VM_OC_POP: { JERRY_ASSERT (stack_top_p > frame_ctx_p->registers_p + register_end); - ecma_free_value (*(--stack_top_p), true); + ecma_free_value (*(--stack_top_p)); break; } case VM_OC_POP_BLOCK: @@ -893,14 +880,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ { last_completion_value = ecma_op_to_string (right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - ecma_value_t property_name = ecma_get_completion_value_value (last_completion_value); - - prop_name_p = ecma_get_string_from_value (property_name); + prop_name_p = ecma_get_string_from_value (last_completion_value); property_p = ecma_find_named_property (object_p, prop_name_p); } @@ -940,11 +925,11 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ { last_completion_value = ecma_op_create_array_object (NULL, 0, false); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_PUSH_ELISON: @@ -1000,7 +985,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ ecma_deref_ecma_string (index_str_p); - ecma_free_value (stack_top_p[i], true); + ecma_free_value (stack_top_p[i]); } (*length_num_p)++; @@ -1044,11 +1029,10 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ } else { - ecma_object_t *error = ecma_new_standard_error (ECMA_ERROR_REFERENCE); - last_completion_value = ecma_make_throw_obj_completion_value (error); + last_completion_value = ecma_raise_reference_error (""); } - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { ecma_deref_ecma_string (name_p); goto error; @@ -1058,7 +1042,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ *stack_top_p++ = ecma_make_object_value (ref_base_lex_env_p); *stack_top_p++ = ecma_make_string_value (name_p); - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; } break; } @@ -1097,12 +1081,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ right_value, is_strict); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; if (opcode < CBC_PRE_INCR) { @@ -1125,13 +1109,13 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ last_completion_value = ecma_op_to_number (left_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } byte_code_p = byte_code_start_p + 1; - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; result_p = ecma_get_number_from_value (result); if (base & 0x2) @@ -1169,7 +1153,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ } else if (opcode_data & VM_OC_PUT_BLOCK) { - ecma_free_value (block_result, true); + ecma_free_value (block_result); block_result = ecma_copy_value (result, true); opcode_data &= (uint32_t) ~VM_OC_PUT_BLOCK; } @@ -1211,20 +1195,19 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ block_result = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED); } - last_completion_value = ecma_make_completion_value (ECMA_COMPLETION_TYPE_RETURN, left_value); + last_completion_value = left_value; free_flags = 0; goto error; } case VM_OC_THROW: { - last_completion_value = ecma_make_completion_value (ECMA_COMPLETION_TYPE_THROW, left_value); + last_completion_value = ecma_make_error_value (left_value); free_flags = 0; goto error; } case VM_OC_THROW_REFERENCE_ERROR: { - ecma_object_t *error = ecma_new_standard_error (ECMA_ERROR_REFERENCE); - last_completion_value = ecma_make_throw_obj_completion_value (error); + last_completion_value = ecma_raise_reference_error (""); goto error; } case VM_OC_EVAL: @@ -1252,7 +1235,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ if (vm_get_implicit_this_value (&this_value)) { - ecma_free_value (stack_top_p[-3], true); + ecma_free_value (stack_top_p[-3]); stack_top_p[-3] = this_value; } } @@ -1267,29 +1250,29 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ /* Free registers. */ for (uint32_t i = 0; i < right_value; i++) { - ecma_free_value (stack_top_p[i], true); + ecma_free_value (stack_top_p[i]); } - ecma_free_value (*(--stack_top_p), true); + ecma_free_value (*(--stack_top_p)); if (VM_OC_GROUP_GET_INDEX (opcode_data) >= VM_OC_CALL_PROP_N) { - ecma_free_value (*(--stack_top_p), true); - ecma_free_value (*(--stack_top_p), true); + ecma_free_value (*(--stack_top_p)); + ecma_free_value (*(--stack_top_p)); } - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } if (opcode_data & (VM_OC_PUT_DATA_MASK << VM_OC_PUT_DATA_SHIFT)) { - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; } else { - ecma_free_completion_value (last_completion_value); + ecma_free_value (last_completion_value); } break; @@ -1310,30 +1293,30 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ /* Free registers. */ for (uint32_t i = 0; i < right_value; i++) { - ecma_free_value (stack_top_p[i], true); + ecma_free_value (stack_top_p[i]); } - ecma_free_value (*(--stack_top_p), true); + ecma_free_value (*(--stack_top_p)); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } JERRY_ASSERT (opcode_data & (VM_OC_PUT_DATA_MASK << VM_OC_PUT_DATA_SHIFT)); - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_PROP_DELETE: { last_completion_value = vm_op_delete_prop (left_value, right_value, is_strict); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_DELETE: @@ -1344,7 +1327,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ if (literal_index < register_end) { - result = ecma_make_simple_completion_value (ECMA_SIMPLE_VALUE_FALSE); + result = ecma_make_simple_value (ECMA_SIMPLE_VALUE_FALSE); break; } @@ -1352,12 +1335,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ frame_ctx_p->lex_env_p, is_strict); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_JUMP: @@ -1372,17 +1355,17 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ last_completion_value = opfunc_equal_value_type (left_value, stack_top_p[-1]); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; if (result == ecma_make_simple_value (ECMA_SIMPLE_VALUE_TRUE)) { byte_code_p = byte_code_start_p + branch_offset; - ecma_free_value (*--stack_top_p, true); + ecma_free_value (*--stack_top_p); } break; } @@ -1395,16 +1378,14 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ last_completion_value = ecma_op_to_boolean (left_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - ecma_value_t value = ecma_get_completion_value_value (last_completion_value); - JERRY_ASSERT (free_flags & VM_FREE_LEFT_VALUE); - if (value == ecma_make_simple_value ((base & 0x1) ? ECMA_SIMPLE_VALUE_FALSE - : ECMA_SIMPLE_VALUE_TRUE)) + if (last_completion_value == ecma_make_simple_value ((base & 0x1) ? ECMA_SIMPLE_VALUE_FALSE + : ECMA_SIMPLE_VALUE_TRUE)) { byte_code_p = byte_code_start_p + branch_offset; if (base & 0x2) @@ -1419,36 +1400,36 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ { last_completion_value = opfunc_unary_plus (left_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_MINUS: { last_completion_value = opfunc_unary_minus (left_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_NOT: { last_completion_value = opfunc_logical_not (left_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_BIT_NOT: @@ -1457,12 +1438,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, left_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_TYPEOF_IDENT: @@ -1499,12 +1480,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ ecma_deref_ecma_string (name_p); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - left_value = ecma_get_completion_value_value (last_completion_value); + left_value = last_completion_value; free_flags = VM_FREE_LEFT_VALUE; } /* FALLTHRU */ @@ -1513,24 +1494,24 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ { last_completion_value = opfunc_typeof (left_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_ADD: { last_completion_value = opfunc_addition (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_SUB: @@ -1539,12 +1520,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_MUL: @@ -1553,12 +1534,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_DIV: @@ -1567,12 +1548,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_MOD: @@ -1581,60 +1562,60 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_EQUAL: { last_completion_value = opfunc_equal_value (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_NOT_EQUAL: { last_completion_value = opfunc_not_equal_value (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_STRICT_EQUAL: { last_completion_value = opfunc_equal_value_type (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_STRICT_NOT_EQUAL: { last_completion_value = opfunc_not_equal_value_type (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_BIT_OR: @@ -1643,12 +1624,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_BIT_XOR: @@ -1657,12 +1638,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_BIT_AND: @@ -1671,12 +1652,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_LEFT_SHIFT: @@ -1685,12 +1666,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_RIGHT_SHIFT: @@ -1699,12 +1680,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_UNS_RIGHT_SHIFT: @@ -1713,89 +1694,88 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_LESS: { last_completion_value = opfunc_less_than (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_GREATER: { last_completion_value = opfunc_greater_than (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_LESS_EQUAL: { last_completion_value = opfunc_less_or_equal_than (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_GREATER_EQUAL: { last_completion_value = opfunc_greater_or_equal_than (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_IN: { last_completion_value = opfunc_in (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_INSTANCEOF: { last_completion_value = opfunc_instanceof (left_value, right_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; break; } case VM_OC_WITH: { - ecma_value_t object; ecma_object_t *object_p; ecma_object_t *with_env_p; @@ -1805,13 +1785,12 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ last_completion_value = ecma_op_to_object (left_value); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { goto error; } - object = ecma_get_completion_value_value (last_completion_value); - object_p = ecma_get_object_from_value (object); + object_p = ecma_get_object_from_value (last_completion_value); with_env_p = ecma_create_object_lex_env (frame_ctx_p->lex_env_p, object_p, @@ -1874,7 +1853,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ { if (stack_top_p[-2] == MEM_CP_NULL) { - ecma_free_value (stack_top_p[-3], true); + ecma_free_value (stack_top_p[-3]); VM_MINUS_EQUAL_U16 (frame_ctx_p->context_depth, PARSER_FOR_IN_CONTEXT_STACK_ALLOCATION); stack_top_p -= PARSER_FOR_IN_CONTEXT_STACK_ALLOCATION; @@ -1974,8 +1953,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ } case VM_CONTEXT_FINALLY_THROW: { - last_completion_value = ecma_make_completion_value (ECMA_COMPLETION_TYPE_THROW, - stack_top_p[-2]); + last_completion_value = stack_top_p[-2]; VM_MINUS_EQUAL_U16 (frame_ctx_p->context_depth, PARSER_TRY_CONTEXT_STACK_ALLOCATION); @@ -1984,8 +1962,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ } case VM_CONTEXT_FINALLY_RETURN: { - last_completion_value = ecma_make_completion_value (ECMA_COMPLETION_TYPE_RETURN, - stack_top_p[-2]); + last_completion_value = stack_top_p[-2]; VM_MINUS_EQUAL_U16 (frame_ctx_p->context_depth, PARSER_TRY_CONTEXT_STACK_ALLOCATION); @@ -2041,7 +2018,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ if (literal_index < register_end) { - ecma_free_value (frame_ctx_p->registers_p[literal_index], true); + ecma_free_value (frame_ctx_p->registers_p[literal_index]); frame_ctx_p->registers_p[literal_index] = result; @@ -2066,15 +2043,15 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ ecma_deref_ecma_string (var_name_str_p); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { - ecma_free_value (result, true); + ecma_free_value (result); goto error; } if (!(opcode_data & (VM_OC_PUT_STACK | VM_OC_PUT_BLOCK))) { - ecma_free_value (result, true); + ecma_free_value (result); } } } @@ -2085,7 +2062,7 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ if (object == ecma_make_simple_value (ECMA_SIMPLE_VALUE_REGISTER_REF)) { - ecma_free_value (frame_ctx_p->registers_p[property], true); + ecma_free_value (frame_ctx_p->registers_p[property]); frame_ctx_p->registers_p[property] = result; @@ -2101,18 +2078,18 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ result, is_strict); - ecma_free_value (object, true); - ecma_free_value (property, true); + ecma_free_value (object); + ecma_free_value (property); - if (ecma_is_completion_value_throw (last_completion_value)) + if (ecma_is_value_error (last_completion_value)) { - ecma_free_value (result, true); + ecma_free_value (result); goto error; } if (!(opcode_data & (VM_OC_PUT_STACK | VM_OC_PUT_BLOCK))) { - ecma_free_value (result, true); + ecma_free_value (result); } } } @@ -2123,34 +2100,34 @@ vm_loop (vm_frame_ctx_t *frame_ctx_p) /**< frame context */ } else if (opcode_data & VM_OC_PUT_BLOCK) { - ecma_free_value (block_result, true); + ecma_free_value (block_result); block_result = result; } } if (free_flags & VM_FREE_LEFT_VALUE) { - ecma_free_value (left_value, true); + ecma_free_value (left_value); } if (free_flags & VM_FREE_RIGHT_VALUE) { - ecma_free_value (right_value, true); + ecma_free_value (right_value); } } error: if (free_flags & VM_FREE_LEFT_VALUE) { - ecma_free_value (left_value, true); + ecma_free_value (left_value); } if (free_flags & VM_FREE_RIGHT_VALUE) { - ecma_free_value (right_value, true); + ecma_free_value (right_value); } - if (unlikely (ecma_is_completion_value_throw (last_completion_value))) + if (unlikely (ecma_is_value_error (last_completion_value))) { ecma_value_t *vm_stack_p = stack_top_p; @@ -2165,7 +2142,7 @@ error: } else { - ecma_free_value (*vm_stack_p, true); + ecma_free_value (*vm_stack_p); } } @@ -2178,11 +2155,11 @@ error: { /* In most cases there is no context. */ - ecma_free_value (block_result, true); + ecma_free_value (block_result); return last_completion_value; } - if (ecma_is_completion_value_return (last_completion_value)) + if (!ecma_is_value_error (last_completion_value)) { JERRY_ASSERT (frame_ctx_p->registers_p + register_end + frame_ctx_p->context_depth == stack_top_p); @@ -2197,14 +2174,12 @@ error: JERRY_ASSERT (frame_ctx_p->registers_p + register_end + frame_ctx_p->context_depth == stack_top_p); byte_code_p = frame_ctx_p->byte_code_p; - stack_top_p[-2] = ecma_get_completion_value_value (last_completion_value); + stack_top_p[-2] = last_completion_value; continue; } } else { - JERRY_ASSERT (ecma_is_completion_value_throw (last_completion_value)); - if (vm_stack_find_finally (frame_ctx_p, &stack_top_p, VM_CONTEXT_FINALLY_THROW, @@ -2212,7 +2187,7 @@ error: { JERRY_ASSERT (frame_ctx_p->registers_p + register_end + frame_ctx_p->context_depth == stack_top_p); - result = ecma_get_completion_value_value (last_completion_value); + result = last_completion_value; byte_code_p = frame_ctx_p->byte_code_p; if (VM_GET_CONTEXT_TYPE (stack_top_p[-1]) == VM_CONTEXT_CATCH) @@ -2221,7 +2196,7 @@ error: ecma_object_t *catch_env_p; ecma_string_t *catch_name_p; - *stack_top_p++ = result; + *stack_top_p++ = ecma_get_value_from_error_value (result); JERRY_ASSERT (byte_code_p[0] == CBC_ASSIGN_SET_IDENT); @@ -2251,7 +2226,7 @@ error: } } - ecma_free_value (block_result, true); + ecma_free_value (block_result); return last_completion_value; } } /* vm_loop */ @@ -2262,15 +2237,15 @@ error: /** * Execute code block. * - * @return completion value + * @return ecma value */ -static ecma_completion_value_t __attr_noinline___ +static ecma_value_t __attr_noinline___ vm_execute (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ const void *arg_p, /**< arguments list */ ecma_length_t arg_list_len) /**< length of arguments list */ { const ecma_compiled_code_t *bytecode_header_p = frame_ctx_p->bytecode_header_p; - ecma_completion_value_t completion_value; + ecma_value_t completion_value; vm_frame_ctx_t *prev_context_p; uint16_t argument_end; uint16_t register_end; @@ -2352,12 +2327,9 @@ vm_execute (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ /* Free arguments and registers */ for (uint32_t i = 0; i < register_end; i++) { - ecma_free_value (frame_ctx_p->registers_p[i], true); + ecma_free_value (frame_ctx_p->registers_p[i]); } - JERRY_ASSERT (ecma_is_completion_value_throw (completion_value) - || ecma_is_completion_value_return (completion_value)); - vm_top_context_p = prev_context_p; return completion_value; } /* vm_execute */ @@ -2367,9 +2339,9 @@ vm_execute (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ /** * Run the code with inline stack. * - * @return completion value + * @return ecma value */ -static ecma_completion_value_t __attr_noinline___ +static ecma_value_t __attr_noinline___ vm_run_with_inline_stack (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ const void *arg_p, /**< arguments list */ ecma_length_t arg_list_len) /**< length of arguments list */ @@ -2384,9 +2356,9 @@ vm_run_with_inline_stack (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ /** * Run the code with inline stack. * - * @return completion value + * @return ecma value */ -static ecma_completion_value_t __attr_noinline___ +static ecma_value_t __attr_noinline___ vm_run_with_alloca (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ const void *arg_p, /**< arguments list */ ecma_length_t arg_list_len, /**< length of arguments list */ @@ -2404,9 +2376,9 @@ vm_run_with_alloca (vm_frame_ctx_t *frame_ctx_p, /**< frame context */ /** * Run the code. * - * @return completion value + * @return ecma value */ -ecma_completion_value_t +ecma_value_t vm_run (const ecma_compiled_code_t *bytecode_header_p, /**< byte-code data header */ ecma_value_t this_binding_value, /**< value of 'ThisBinding' */ ecma_object_t *lex_env_p, /**< lexical environment to use */ diff --git a/jerry-core/vm/vm.h b/jerry-core/vm/vm.h index 6541a9d6..bf356fb3 100644 --- a/jerry-core/vm/vm.h +++ b/jerry-core/vm/vm.h @@ -187,16 +187,13 @@ typedef enum extern void vm_init (ecma_compiled_code_t *, bool); extern void vm_finalize (void); extern jerry_completion_code_t vm_run_global (void); -extern ecma_completion_value_t vm_run_eval (ecma_compiled_code_t *, bool); +extern ecma_value_t vm_run_eval (ecma_compiled_code_t *, bool); -extern ecma_completion_value_t vm_loop (vm_frame_ctx_t *); +extern ecma_value_t vm_loop (vm_frame_ctx_t *); -extern ecma_completion_value_t vm_run (const ecma_compiled_code_t *, - ecma_value_t, - ecma_object_t *, - bool, - const ecma_value_t *, - ecma_length_t); +extern ecma_value_t vm_run (const ecma_compiled_code_t *, ecma_value_t, + ecma_object_t *, bool, const ecma_value_t *, + ecma_length_t); extern bool vm_is_strict_mode (void); extern bool vm_is_direct_eval_form_call (void); |