Skip to content

Commit 3e23a3b

Browse files
galpeterdbatyai
authored andcommitted
Improve documentation on native pointer API methods (#3191)
Added extra notes on the native pointer API usages to clarify when the free callback function is invoked. Also added a note for the free callback typedef to inform users to not call API methods in the callback. JerryScript-DCO-1.0-Signed-off-by: Peter Gal [email protected]
1 parent e54666b commit 3e23a3b

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

docs/02.API-REFERENCE.md

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,9 @@ typedef jerry_value_t (*jerry_external_handler_t) (const jerry_value_t function_
441441

442442
Native free callback of an object. It is used in `jerry_object_native_info_t` and for external Array buffers.
443443

444+
*Note*:
445+
- This callback method **must not** call any JerryScript API methods.
446+
444447
**Prototype**
445448

446449
```c
@@ -5542,7 +5545,8 @@ jerry_set_prototype (const jerry_value_t obj_val,
55425545
**Summary**
55435546

55445547
Get native pointer by the given type information.
5545-
The pointer and the type information are previously associated with the object by jerry_set_object_native_pointer.
5548+
The pointer and the type information are previously associated with the object by
5549+
[jerry_set_object_native_pointer](#jerry_set_object_native_pointer).
55465550

55475551
*Note*: `out_native_pointer_p` can be NULL, and it means the
55485552
caller doesn't want to get the native_pointer.
@@ -5749,15 +5753,15 @@ main (void)
57495753
**Summary**
57505754

57515755
Set native pointer and an optional type information for the specified object.
5752-
You can get them by calling jerry_get_object_native_pointer later.
5753-
5754-
*Note*: If native pointer was already set for the object, its value is updated.
5756+
You can get them by calling [jerry_get_object_native_pointer](#jerry_get_object_native_pointer) later.
57555757

5756-
*Note*: If a non-NULL free callback is specified in the native type information,
5757-
it will be called by the garbage collector when the object is freed.
5758-
This callback **must not** invoke API functions.
5759-
The type info always overwrites the previous value, so passing
5760-
a NULL value deletes the current type info.
5758+
*Notes*:
5759+
- If a native pointer was already set for the object with the same type information, its value is updated.
5760+
- If a non-NULL free callback is specified in the native type information,
5761+
it will be called by the garbage collector when the object is freed.
5762+
- If the object is only referenced via the "global" object (or one of it's "child"),
5763+
the free callback will be invoked during the execution of `jerry_cleanup`.
5764+
- The free callback **must not** invoke API functions.
57615765

57625766
**Prototype**
57635767

@@ -5792,10 +5796,12 @@ best-practice example.
57925796
**Summary**
57935797

57945798
Delete the native pointer of the specified object associated with the given native type info.
5795-
You can get them by calling jerry_get_object_native_pointer later.
57965799

5797-
*Note*:
5800+
*Notes*:
57985801
- If the specified object has no matching native pointer for the given native type info the operation has no effect.
5802+
- The method does not invoke the free callback specified in the type info.
5803+
If the native pointer should be freed then one must get the native pointer first and invoke the free callback manually
5804+
before calling this method.
57995805
- This operation cannot throw an exception.
58005806

58015807
**Prototype**

0 commit comments

Comments
 (0)