From 7d41d38e3c7f7b9ae8f9c25f36818b1105bf039f Mon Sep 17 00:00:00 2001 From: Zoltan Herczeg Date: Wed, 29 Aug 2018 12:51:37 +0200 Subject: [PATCH] Remove deprecated native handle support. (#2496) JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com --- docs/02.API-REFERENCE.md | 114 ------------------ jerry-core/api/jerry.c | 72 +---------- jerry-core/ecma/base/ecma-gc.c | 31 ++--- jerry-core/ecma/base/ecma-globals.h | 11 +- .../base/ecma-helpers-external-pointers.c | 70 ++--------- jerry-core/ecma/base/ecma-helpers.c | 3 +- jerry-core/ecma/base/ecma-helpers.h | 3 +- jerry-core/include/jerryscript-core.h | 18 +-- jerry-core/lit/lit-magic-strings.h | 5 +- 9 files changed, 32 insertions(+), 295 deletions(-) diff --git a/docs/02.API-REFERENCE.md b/docs/02.API-REFERENCE.md index 8a215af6..6b2a83d5 100644 --- a/docs/02.API-REFERENCE.md +++ b/docs/02.API-REFERENCE.md @@ -334,20 +334,6 @@ typedef jerry_value_t (*jerry_external_handler_t) (const jerry_value_t function_ const jerry_length_t args_count); ``` -## jerry_object_free_callback_t - -**Summary** - -**Deprecated: Please use jerry_object_native_free_callback_t instead.** - -Native free callback of an object. - -**Prototype** - -```c -typedef void (*jerry_object_free_callback_t) (const uintptr_t native_p); -``` - ## jerry_object_native_free_callback_t **Summary** @@ -4387,106 +4373,6 @@ jerry_set_prototype (const jerry_value_t obj_val, - [jerry_get_prototype](#jerry_get_prototype) -## jerry_get_object_native_handle - -**Summary** - -**Deprecated: Please use jerry_get_object_native_pointer instead.** - -Get native handle, previously associated with specified object. - -**Prototype** - -```c -bool -jerry_get_object_native_handle (const jerry_value_t obj_val, - uintptr_t *out_handle_p); -``` - -- `obj_val` - object value -- `out_handle_p` - handle value (output parameter). -- return value - - true, if there is handle associated with the object - - false, otherwise - -**Example** - -```c -{ - jerry_value_t object; - uintptr_t handle_set; - - ... // receive or construct object and handle_set value - - jerry_set_object_native_handle (object, handle_set, NULL); - - ... - - uintptr_t handle_get; - bool is_there_associated_handle = jerry_get_object_native_handle (object, &handle_get); -} -``` - -**See also** - -- [jerry_create_object](#jerry_create_object) -- [jerry_set_object_native_handle](#jerry_set_object_native_handle) -- [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) - - -## jerry_set_object_native_handle - -**Summary** - -**Deprecated: Please use jerry_set_object_native_pointer instead.** - -Set native handle and an optional free callback for the specified object. - -*Note*: If native handle was already set for the object, its value is updated. - -*Note*: If a non-NULL free callback is specified, it will be called - by the garbage collector when the object is freed. The free - callback always overwrites the previous value, so passing - a NULL value deletes the current free callback. - -**Prototype** - -```c -void -jerry_set_object_native_handle (const jerry_value_t obj_val, - uintptr_t handle_p, - jerry_object_free_callback_t freecb_p); -``` - -- `obj_val` - object value to set handle in -- `handle_p` - handle value -- `freecb_p` - pointer to "free" callback or NULL - -**Example** - -```c -{ - jerry_value_t object; - uintptr_t handle_set; - - ... // receive or construct object and handle_set value - - jerry_set_object_native_handle (object, handle_set, NULL); - - ... - - uintptr_t handle_get; - bool is_there_associated_handle = jerry_get_object_native_handle (object, &handle_get); -} -``` - -**See also** - -- [jerry_create_object](#jerry_create_object) -- [jerry_get_object_native_handle](#jerry_get_object_native_handle) -- [jerry_set_object_native_pointer](#jerry_set_object_native_pointer) - - ## jerry_get_object_native_pointer **Summary** diff --git a/jerry-core/api/jerry.c b/jerry-core/api/jerry.c index 6188fb3a..d2705a33 100644 --- a/jerry-core/api/jerry.c +++ b/jerry-core/api/jerry.c @@ -2355,69 +2355,6 @@ jerry_set_prototype (const jerry_value_t obj_val, /**< object value */ return ECMA_VALUE_TRUE; } /* jerry_set_prototype */ -/** - * Get native handle, associated with specified object. - * - * Note: This API is deprecated, please use jerry_get_object_native_pointer instaed. - * - * @return true - if there is an associated handle (handle is returned through out_handle_p), - * false - otherwise - */ -bool -jerry_get_object_native_handle (const jerry_value_t obj_val, /**< object to get handle from */ - uintptr_t *out_handle_p) /**< [out] handle value */ -{ - jerry_assert_api_available (); - - if (!ecma_is_value_object (obj_val)) - { - return false; - } - - ecma_native_pointer_t *native_pointer_p; - native_pointer_p = ecma_get_native_pointer_value (ecma_get_object_from_value (obj_val), - LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE); - - if (native_pointer_p == NULL) - { - return false; - } - - *out_handle_p = (uintptr_t) native_pointer_p->data_p; - return true; -} /* jerry_get_object_native_handle */ - -/** - * Set native handle and an optional free callback for the specified object. - * - * Note: This API is deprecated, please use jerry_set_object_native_pointer instaed. - * - * Note: - * If native handle was already set for the object, its value is updated. - * - * Note: - * If a non-NULL free callback is specified, it will be called - * by the garbage collector when the object is freed. The free - * callback always overwrites the previous value, so passing - * a NULL value deletes the current free callback. - */ -void -jerry_set_object_native_handle (const jerry_value_t obj_val, /**< object to set handle in */ - uintptr_t handle_p, /**< handle value */ - jerry_object_free_callback_t freecb_p) /**< object free callback or NULL */ -{ - jerry_assert_api_available (); - - if (ecma_is_value_object (obj_val)) - { - ecma_object_t *object_p = ecma_get_object_from_value (obj_val); - - ecma_create_native_handle_property (object_p, - (void *) handle_p, - (void *) (ecma_external_pointer_t) freecb_p); - } -} /* jerry_set_object_native_handle */ - /** * Traverse objects. * @@ -2472,9 +2409,9 @@ jerry_objects_foreach_by_native_info (const jerry_object_native_info_t *native_i { if (!ecma_is_lexical_environment (iter_p)) { - native_pointer_p = ecma_get_native_pointer_value (iter_p, LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER); + native_pointer_p = ecma_get_native_pointer_value (iter_p); if (native_pointer_p - && ((const jerry_object_native_info_t *) native_pointer_p->u.info_p) == native_info_p + && ((const jerry_object_native_info_t *) native_pointer_p->info_p) == native_info_p && !foreach_p (ecma_make_object_value (iter_p), native_pointer_p->data_p, user_data_p)) { return true; @@ -2509,8 +2446,7 @@ jerry_get_object_native_pointer (const jerry_value_t obj_val, /**< object to get } ecma_native_pointer_t *native_pointer_p; - native_pointer_p = ecma_get_native_pointer_value (ecma_get_object_from_value (obj_val), - LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER); + native_pointer_p = ecma_get_native_pointer_value (ecma_get_object_from_value (obj_val)); if (native_pointer_p == NULL) { @@ -2524,7 +2460,7 @@ jerry_get_object_native_pointer (const jerry_value_t obj_val, /**< object to get if (out_native_info_p != NULL) { - *out_native_info_p = (const jerry_object_native_info_t *) native_pointer_p->u.info_p; + *out_native_info_p = (const jerry_object_native_info_t *) native_pointer_p->info_p; } return true; diff --git a/jerry-core/ecma/base/ecma-gc.c b/jerry-core/ecma/base/ecma-gc.c index b5c7d3b0..d9a5f8b5 100644 --- a/jerry-core/ecma/base/ecma-gc.c +++ b/jerry-core/ecma/base/ecma-gc.c @@ -404,37 +404,23 @@ ecma_gc_mark (ecma_object_t *object_p) /**< object to mark from */ * Free the native handle/pointer by calling its free callback. */ static void -ecma_gc_free_native_pointer (ecma_property_t *property_p, /**< property */ - lit_magic_string_id_t id) /**< identifier of internal property */ +ecma_gc_free_native_pointer (ecma_property_t *property_p) /**< property */ { JERRY_ASSERT (property_p != NULL); - JERRY_ASSERT (id == LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE - || id == LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER); - ecma_property_value_t *value_p = ECMA_PROPERTY_VALUE_PTR (property_p); ecma_native_pointer_t *native_pointer_p; native_pointer_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_native_pointer_t, value_p->value); - if (id == LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE) - { - if (native_pointer_p->u.callback_p != NULL) - { - native_pointer_p->u.callback_p ((uintptr_t) native_pointer_p->data_p); - } - } - else + if (native_pointer_p->info_p != NULL) { - if (native_pointer_p->u.info_p != NULL) - { - ecma_object_native_free_callback_t free_cb = native_pointer_p->u.info_p->free_cb; + ecma_object_native_free_callback_t free_cb = native_pointer_p->info_p->free_cb; - if (free_cb != NULL) - { - free_cb (native_pointer_p->data_p); - } + if (free_cb != NULL) + { + free_cb (native_pointer_p->data_p); } } } /* ecma_gc_free_native_pointer */ @@ -479,10 +465,9 @@ ecma_gc_free_object (ecma_object_t *object_p) /**< object to free */ /* Call the native's free callback. */ if (ECMA_PROPERTY_GET_NAME_TYPE (*property_p) == ECMA_DIRECT_STRING_MAGIC - && (name_cp == LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE - || name_cp == LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER)) + && (name_cp == LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER)) { - ecma_gc_free_native_pointer (property_p, (lit_magic_string_id_t) name_cp); + ecma_gc_free_native_pointer (property_p); } if (prop_iter_p->types[i] != ECMA_PROPERTY_TYPE_DELETED) diff --git a/jerry-core/ecma/base/ecma-globals.h b/jerry-core/ecma/base/ecma-globals.h index 344893b8..9f04f7bd 100644 --- a/jerry-core/ecma/base/ecma-globals.h +++ b/jerry-core/ecma/base/ecma-globals.h @@ -261,11 +261,6 @@ typedef ecma_value_t (*ecma_external_handler_t) (const ecma_value_t function_obj const ecma_value_t args_p[], const ecma_length_t args_count); -/** - * Native free callback of an object (deprecated). - */ -typedef void (*ecma_object_free_callback_t) (const uintptr_t native_p); - /** * Native free callback of an object. */ @@ -285,11 +280,7 @@ typedef struct typedef struct { void *data_p; /**< points to the data of the object */ - union - { - ecma_object_free_callback_t callback_p; /**< callback */ - ecma_object_native_info_t *info_p; /**< native info */ - } u; + ecma_object_native_info_t *info_p; /**< native info */ } ecma_native_pointer_t; /** diff --git a/jerry-core/ecma/base/ecma-helpers-external-pointers.c b/jerry-core/ecma/base/ecma-helpers-external-pointers.c index bb77067a..8f765552 100644 --- a/jerry-core/ecma/base/ecma-helpers-external-pointers.c +++ b/jerry-core/ecma/base/ecma-helpers-external-pointers.c @@ -25,27 +25,17 @@ */ /** - * Create internal property with specified identifier and store native handle/pointer of the object. - * - * Note: - * property identifier should be one of the following: - * - LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE - * - LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER + * Create a native pointer property to store the native pointer and its type info. * * @return true - if property was just created with specified value, * false - otherwise, if property existed before the call, it's value was updated */ -static bool -ecma_create_native_property (ecma_object_t *obj_p, /**< object to create property in */ - lit_magic_string_id_t id, /**< identifier of internal - * property to create */ - void *data_p, /**< native pointer data */ - void *info_p) /**< native pointer's info */ +bool +ecma_create_native_pointer_property (ecma_object_t *obj_p, /**< object to create property in */ + void *native_p, /**< native pointer */ + void *info_p) /**< native pointer's type info */ { - JERRY_ASSERT (id == LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE - || id == LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER); - - ecma_string_t *name_p = ecma_get_magic_string (id); + ecma_string_t *name_p = ecma_get_magic_string (LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER); ecma_property_t *property_p = ecma_find_named_property (obj_p, name_p); bool is_new = (property_p == NULL); @@ -68,44 +58,10 @@ ecma_create_native_property (ecma_object_t *obj_p, /**< object to create propert native_pointer_p = ECMA_GET_INTERNAL_VALUE_POINTER (ecma_native_pointer_t, value_p->value); } - native_pointer_p->data_p = data_p; - native_pointer_p->u.info_p = info_p; + native_pointer_p->data_p = native_p; + native_pointer_p->info_p = info_p; return is_new; -} /* ecma_create_native_property */ - -/** - * Create a native handle property to store the native handle and its free callback. - * - * @return true - if property was just created with specified value, - * false - otherwise, if property existed before the call, it's value was updated - */ -bool -ecma_create_native_handle_property (ecma_object_t *obj_p, /**< object to create property in */ - void *handle_p, /**< native handle */ - void *free_cb) /**< native handle's free callback*/ -{ - return ecma_create_native_property (obj_p, - LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE, - handle_p, - free_cb); -} /* ecma_create_native_handle_property */ - -/** - * Create a native pointer property to store the native pointer and its type info. - * - * @return true - if property was just created with specified value, - * false - otherwise, if property existed before the call, it's value was updated - */ -bool -ecma_create_native_pointer_property (ecma_object_t *obj_p, /**< object to create property in */ - void *native_p, /**< native pointer */ - void *info_p) /**< native pointer's type info */ -{ - return ecma_create_native_property (obj_p, - LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER, - native_p, - info_p); } /* ecma_create_native_pointer_property */ /** @@ -120,14 +76,10 @@ ecma_create_native_pointer_property (ecma_object_t *obj_p, /**< object to create * NULL otherwise */ ecma_native_pointer_t * -ecma_get_native_pointer_value (ecma_object_t *obj_p, /**< object to get property value from */ - lit_magic_string_id_t id) /**< identifier of internal property - * to get value from */ +ecma_get_native_pointer_value (ecma_object_t *obj_p) /**< object to get property value from */ { - JERRY_ASSERT (id == LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE - || id == LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER); - - ecma_property_t *property_p = ecma_find_named_property (obj_p, ecma_get_magic_string (id)); + ecma_string_t *name_p = ecma_get_magic_string (LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER); + ecma_property_t *property_p = ecma_find_named_property (obj_p, name_p); if (property_p == NULL) { diff --git a/jerry-core/ecma/base/ecma-helpers.c b/jerry-core/ecma/base/ecma-helpers.c index 0f10e7d8..fa2d410e 100644 --- a/jerry-core/ecma/base/ecma-helpers.c +++ b/jerry-core/ecma/base/ecma-helpers.c @@ -744,8 +744,7 @@ ecma_free_property (ecma_object_t *object_p, /**< object the property belongs to case ECMA_PROPERTY_TYPE_NAMEDDATA: { if (ECMA_PROPERTY_GET_NAME_TYPE (*property_p) == ECMA_DIRECT_STRING_MAGIC - && (name_cp == LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE - || name_cp == LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER)) + && (name_cp == LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER)) { ecma_free_native_pointer (property_p); break; diff --git a/jerry-core/ecma/base/ecma-helpers.h b/jerry-core/ecma/base/ecma-helpers.h index dfffd496..41e892eb 100644 --- a/jerry-core/ecma/base/ecma-helpers.h +++ b/jerry-core/ecma/base/ecma-helpers.h @@ -355,9 +355,8 @@ void ecma_bytecode_ref (ecma_compiled_code_t *bytecode_p); void ecma_bytecode_deref (ecma_compiled_code_t *bytecode_p); /* ecma-helpers-external-pointers.c */ -bool ecma_create_native_handle_property (ecma_object_t *obj_p, void *handle_p, void *free_cb); bool ecma_create_native_pointer_property (ecma_object_t *obj_p, void *native_p, void *info_p); -ecma_native_pointer_t *ecma_get_native_pointer_value (ecma_object_t *obj_p, lit_magic_string_id_t id); +ecma_native_pointer_t *ecma_get_native_pointer_value (ecma_object_t *obj_p); void ecma_free_native_pointer (ecma_property_t *prop_p); /* ecma-helpers-conversion.c */ diff --git a/jerry-core/include/jerryscript-core.h b/jerry-core/include/jerryscript-core.h index 6e455ac6..c4951f54 100644 --- a/jerry-core/include/jerryscript-core.h +++ b/jerry-core/include/jerryscript-core.h @@ -203,11 +203,6 @@ typedef jerry_value_t (*jerry_external_handler_t) (const jerry_value_t function_ const jerry_value_t args_p[], const jerry_length_t args_count); -/** - * Native free callback of an object (deprecated). - */ -typedef void (*jerry_object_free_callback_t) (const uintptr_t native_p); - /** * Native free callback of an object. */ @@ -497,23 +492,18 @@ jerry_value_t jerry_get_object_keys (const jerry_value_t obj_val); jerry_value_t jerry_get_prototype (const jerry_value_t obj_val); jerry_value_t jerry_set_prototype (const jerry_value_t obj_val, const jerry_value_t proto_obj_val); -JERRY_ATTR_DEPRECATED -bool jerry_get_object_native_handle (const jerry_value_t obj_val, uintptr_t *out_handle_p); -JERRY_ATTR_DEPRECATED -void jerry_set_object_native_handle (const jerry_value_t obj_val, uintptr_t handle_p, - jerry_object_free_callback_t freecb_p); - bool jerry_get_object_native_pointer (const jerry_value_t obj_val, void **out_native_pointer_p, const jerry_object_native_info_t **out_pointer_info_p); +void jerry_set_object_native_pointer (const jerry_value_t obj_val, + void *native_pointer_p, + const jerry_object_native_info_t *native_info_p); + bool jerry_objects_foreach (jerry_objects_foreach_t foreach_p, void *user_data); bool jerry_objects_foreach_by_native_info (const jerry_object_native_info_t *native_info_p, jerry_objects_foreach_by_native_info_t foreach_p, void *user_data_p); -void jerry_set_object_native_pointer (const jerry_value_t obj_val, - void *native_pointer_p, - const jerry_object_native_info_t *native_info_p); bool jerry_foreach_object_property (const jerry_value_t obj_val, jerry_object_property_foreach_t foreach_p, void *user_data_p); diff --git a/jerry-core/lit/lit-magic-strings.h b/jerry-core/lit/lit-magic-strings.h index 8d470e8d..70197c99 100644 --- a/jerry-core/lit/lit-magic-strings.h +++ b/jerry-core/lit/lit-magic-strings.h @@ -39,9 +39,8 @@ typedef enum LIT_INTERNAL_MAGIC_STRING_REJECT_FUNCTION, /**< the reject function of the promise object */ LIT_NEED_MARK_MAGIC_STRING__COUNT, /**< number of internal magic strings which will be used as properties' names, * and the properties need to be marked during gc. */ - LIT_INTERNAL_MAGIC_STRING_NATIVE_HANDLE = LIT_NEED_MARK_MAGIC_STRING__COUNT, /**< native handle package - * associated with an object */ - LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER, /**< native pointer package associated with an object */ + LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER = LIT_NEED_MARK_MAGIC_STRING__COUNT, /**< native pointer info associated + * with an object */ LIT_MAGIC_STRING__COUNT /**< number of magic strings */ } lit_magic_string_id_t; -- GitLab