diff options
author | Istvan Miklos <imiklos2@inf.u-szeged.hu> | 2018-06-28 08:09:03 +0200 |
---|---|---|
committer | László Langó <llango.u-szeged@partner.samsung.com> | 2018-06-28 08:09:03 +0200 |
commit | b9f2b1cf25107b7eb6ff3e7a5a8cd18d8334a1dc (patch) | |
tree | d5dabe50adbf928cf1002455dcebf8d1104598d9 /jerry-core | |
parent | 34c081095ae74a8ade23346e5461e9e383efdcc0 (diff) |
Replace jerry_value_set_abort_flag with jerry_create_abort_from_value (#2411)
Replaced the function, added some tests for it. Also changed the functions order to
alphabetical.
JerryScript-DCO-1.0-Signed-off-by: Istvan Miklos imiklos2@inf.u-szeged.hu
Diffstat (limited to 'jerry-core')
-rw-r--r-- | jerry-core/api/jerry.c | 73 | ||||
-rw-r--r-- | jerry-core/include/jerryscript-core.h | 4 |
2 files changed, 45 insertions, 32 deletions
diff --git a/jerry-core/api/jerry.c b/jerry-core/api/jerry.c index 79af048c..622705fb 100644 --- a/jerry-core/api/jerry.c +++ b/jerry-core/api/jerry.c @@ -904,35 +904,39 @@ jerry_is_feature_enabled (const jerry_feature_t feature) /**< feature to check * } /* jerry_is_feature_enabled */ /** - * Get the value from an error value. - * - * Extract the api value from an error. If the second argument is true - * it will release the input error value. + * Create abort from an api value. * - * Note: - * returned value must be freed with jerry_release_value, when it is no longer needed. + * Create abort value from an api value. If the second argument is true + * it will release the input api value. * - * @return jerry_value_t value + * @return api abort value */ jerry_value_t -jerry_get_value_from_error (jerry_value_t value, /**< api value */ - bool release) /**< release api value */ +jerry_create_abort_from_value (jerry_value_t value, /**< api value */ + bool release) /**< release api value */ { jerry_assert_api_available (); - if (!ecma_is_value_error_reference (value)) + if (JERRY_UNLIKELY (ecma_is_value_error_reference (value))) { - return release ? value : ecma_copy_value (value); - } + /* This is a rare case so it is optimized for + * binary size rather than performance. */ + if (jerry_value_is_abort (value)) + { + return release ? value : jerry_acquire_value (value); + } - jerry_value_t ret_val = jerry_acquire_value (ecma_get_error_reference_from_value (value)->value); + value = jerry_get_value_from_error (value, release); + release = true; + } - if (release) + if (!release) { - jerry_release_value (value); + value = ecma_copy_value (value); } - return ret_val; -} /* jerry_get_value_from_error */ + + return ecma_create_error_reference (value, false); +} /* jerry_create_abort_from_value */ /** * Create error from an api value. @@ -970,26 +974,35 @@ jerry_create_error_from_value (jerry_value_t value, /**< api value */ } /* jerry_create_error_from_value */ /** - * Set both the abort and error flags if the value is not an error reference. + * Get the value from an error value. + * + * Extract the api value from an error. If the second argument is true + * it will release the input error value. + * + * Note: + * returned value must be freed with jerry_release_value, when it is no longer needed. + * + * @return jerry_value_t value */ -void -jerry_value_set_abort_flag (jerry_value_t *value_p) /**< api value */ +jerry_value_t +jerry_get_value_from_error (jerry_value_t value, /**< api value */ + bool release) /**< release api value */ { jerry_assert_api_available (); - if (JERRY_UNLIKELY (ecma_is_value_error_reference (*value_p))) + if (!ecma_is_value_error_reference (value)) { - /* This is a rare case so it is optimized for - * binary size rather than performance. */ - if (jerry_value_is_abort (*value_p)) - { - return; - } - *value_p = ecma_clear_error_reference (*value_p, false); + return release ? value : ecma_copy_value (value); } - *value_p = ecma_create_error_reference (*value_p, false); -} /* jerry_value_set_abort_flag */ + jerry_value_t ret_val = jerry_acquire_value (ecma_get_error_reference_from_value (value)->value); + + if (release) + { + jerry_release_value (value); + } + return ret_val; +} /* jerry_get_value_from_error */ /** * Return the type of the Error object if possible. diff --git a/jerry-core/include/jerryscript-core.h b/jerry-core/include/jerryscript-core.h index 6862b230..561e6986 100644 --- a/jerry-core/include/jerryscript-core.h +++ b/jerry-core/include/jerryscript-core.h @@ -379,9 +379,9 @@ bool jerry_is_feature_enabled (const jerry_feature_t feature); /** * Error manipulation functions. */ -jerry_value_t jerry_get_value_from_error (jerry_value_t value, bool release); +jerry_value_t jerry_create_abort_from_value (jerry_value_t value, bool release); jerry_value_t jerry_create_error_from_value (jerry_value_t value, bool release); -void jerry_value_set_abort_flag (jerry_value_t *value_p); +jerry_value_t jerry_get_value_from_error (jerry_value_t value, bool release); /** * Error object function(s). |