diff options
author | Zoltan Herczeg <zherczeg.u-szeged@partner.samsung.com> | 2021-07-20 10:33:23 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-20 10:33:23 +0200 |
commit | 713d90b5a0aa163bd1de4a792642a9eaadd74d1d (patch) | |
tree | f26b8992b06c38ad4e7bb2173583ff05a01c099a /docs/02.API-REFERENCE.md | |
parent | 9ff25dbc1220097b9dc04746bdf07a3b66c2e2d4 (diff) |
Support shared user data for scripts (#4710)
The same data is returned for the script and all of its functions,
including those which are created by an eval call.
JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
Diffstat (limited to 'docs/02.API-REFERENCE.md')
-rw-r--r-- | docs/02.API-REFERENCE.md | 116 |
1 files changed, 113 insertions, 3 deletions
diff --git a/docs/02.API-REFERENCE.md b/docs/02.API-REFERENCE.md index 75023173..854c72df 100644 --- a/docs/02.API-REFERENCE.md +++ b/docs/02.API-REFERENCE.md @@ -243,6 +243,7 @@ Option bits for [jerry_parse_options_t](#jerry_parse_options_t). - JERRY_PARSE_MODULE - Parse source as an ECMAScript module - JERRY_PARSE_HAS_RESOURCE - `resource_name_p` and `resource_name_length` fields are valid - JERRY_PARSE_HAS_START - `start_line` and `start_column` fields are valid + - JERRY_PARSE_HAS_USER_VALUE - `user_value` field is valid *New in version [[NEXT_RELEASE]]*. @@ -310,6 +311,10 @@ Flags for [jerry_exec_snapshot](#jerry_exec_snapshot) functions: - JERRY_SNAPSHOT_EXEC_COPY_DATA - copy snapshot data into memory (see below) - JERRY_SNAPSHOT_EXEC_ALLOW_STATIC - allow executing static snapshots - JERRY_SNAPSHOT_EXEC_LOAD_AS_FUNCTION - load snapshot as function instead of executing it + - JERRY_SNAPSHOT_EXEC_HAS_RESOURCE - resource_name_p and resource_name_length fields are valid + in [jerry_exec_snapshot_option_values_t](#jerry_exec_snapshot_option_values_t) + - JERRY_SNAPSHOT_EXEC_HAS_USER_VALUE - user_value field is valid + in [jerry_exec_snapshot_option_values_t](#jerry_exec_snapshot_option_values_t) *Changed in version [[NEXT_RELEASE]]*: The `JERRY_SNAPSHOT_EXEC_LOAD_AS_FUNCTION` value is added, which replaces the `jerry_load_function_snapshot` function. @@ -536,6 +541,8 @@ typedef struct * if JERRY_PARSE_HAS_RESOURCE is set in options */ uint32_t start_line; /**< start line of the source code if JERRY_PARSE_HAS_START is set in options */ uint32_t start_column; /**< start column of the source code if JERRY_PARSE_HAS_START is set in options */ + jerry_value_t user_value; /**< user value assigned to all functions created by this script including eval + * calls executed by the script if JERRY_PARSE_HAS_USER_VALUE is set in options */ } jerry_parse_options_t; ``` @@ -547,6 +554,7 @@ typedef struct - [jerry_parse_function](#jerry_parse_function) - [jerry_generate_snapshot](#jerry_generate_snapshot) - [jerry_generate_function_snapshot](#jerry_generate_function_snapshot) +- [jerry_exec_snapshot](#jerry_exec_snapshot) - [jerry_parse_option_enable_feature_t](#jerry_parse_option_enable_feature_t) ## jerry_property_descriptor_t @@ -1231,6 +1239,33 @@ TypedArray support is not in the engine. - [jerry_get_typedarray_type](#jerry_get_typedarray_type) +## jerry_exec_snapshot_option_values_t + +**Summary** + +Various configuration options for [jerry_exec_snapshot](#jerry_exec_snapshot) + +**Prototype** + +```c +typedef struct +{ + const jerry_char_t *resource_name_p; /**< resource name (usually a file name) + * if JERRY_SNAPSHOT_EXEC_HAS_RESOURCE is set in exec_snapshot_opts */ + size_t resource_name_length; /**< length of resource name + * if JERRY_SNAPSHOT_EXEC_HAS_RESOURCE is set in exec_snapshot_opts */ + jerry_value_t user_value; /**< user value assigned to all functions created by this script including + * eval calls executed by the script if JERRY_SNAPSHOT_EXEC_HAS_USER_VALUE + * is set in exec_snapshot_opts */ +} jerry_exec_snapshot_option_values_t; +``` + +*New in version [[NEXT_RELEASE]]*. + +**See also** + +- [jerry_exec_snapshot](#jerry_exec_snapshot) + # General engine functions ## jerry_init @@ -10221,19 +10256,24 @@ jerry_value_t jerry_exec_snapshot (const uint32_t *snapshot_p, size_t snapshot_size, size_t func_index, - uint32_t exec_snapshot_opts); + uint32_t exec_snapshot_opts, + const jerry_exec_snapshot_option_values_t *options_values_p); ``` - `snapshot_p` - pointer to snapshot. - `snapshot_size` - size of snapshot in bytes. - `func_index` - index of executed function. - `exec_snapshot_opts` - any combination of [jerry_exec_snapshot_opts_t](#jerry_exec_snapshot_opts_t) flags. +- `options_values_p` - additional loadig options, can be NULL if not used. The fields are described in + [jerry_exec_snapshot_option_values_t](#jerry_exec_snapshot_option_values_t). - return value - result of bytecode, if run was successful. - thrown error, otherwise (an error is reported if the snapshot execution feature is not enabled). *Changed in version 2.0*: Added `func_index` and `exec_snapshot_opts` arguments. Removed the `copy_bytecode` last argument. +*Changed in version [[NEXT_RELEASE]]*: Added `options_p` argument. + **Example 1** [doctest]: # () @@ -10269,7 +10309,8 @@ main (void) jerry_value_t res = jerry_exec_snapshot (snapshot_buffer, snapshot_size, 0, - 0); + 0, + NULL); /* 'res' now contains 'string from snapshot' */ jerry_release_value (res); @@ -10317,7 +10358,8 @@ main (void) jerry_value_t func = jerry_exec_snapshot (snapshot_buffer, snapshot_size, 0, - JERRY_SNAPSHOT_EXEC_LOAD_AS_FUNCTION); + JERRY_SNAPSHOT_EXEC_LOAD_AS_FUNCTION, + NULL); /* 'func' can be used now as a function object. */ jerry_value_t this_value = jerry_create_undefined (); @@ -11141,6 +11183,74 @@ main (void) - [jerry_create_external_function](#jerry_create_external_function) +## jerry_get_user_value + +**Summary** + +Returns the user value assigned to a script / module / function. This value is +set by the parser when the JERRY_PARSE_HAS_USER_VALUE flag is set in the `options` +member of the [jerry_parse_options_t](#jerry_parse_options_t) structure. + +*Notes*: +- Returned value must be freed with [jerry_release_value](#jerry_release_value) when it +is no longer needed. + +**Prototype** + +```c +jerry_value_t +jerry_get_user_value (const jerry_value_t value); +``` +- `value` - script / module / function value which executes JavaScript + code (native modules / functions do not have user value). +- return + - user value - if available, + - undefined - otherwise + +*New in version [[NEXT_RELEASE]]*. + +**Example** + +```c +#include "jerryscript.h" + +int +main (void) +{ + jerry_init (JERRY_INIT_EMPTY); + + const jerry_char_t script[] = "function abc() {} abc"; + + jerry_value user_value = jerry_create_object (); + + jerry_parse_options_t parse_options; + parse_options.options = ECMA_PARSE_HAS_USER_VALUE; + parse_options.user_value = user_value; + + jerry_value_t parsed_code = jerry_parse (script, sizeof (script) - 1, &parse_options); + jerry_release_value (user_value); + + /* The jerry_get_user_value returns the object which + * was created by jerry_create_object before. */ + + jerry_value user_value = jerry_get_user_value (parsed_code); + jerry_release_value (parsed_code); + + jerry_release_value (user_value); + jerry_cleanup (); + return 0; +} +``` + +**See also** + +- [jerry_parse](#jerry_parse) +- [jerry_parse_function](#jerry_parse_function) +- [jerry_generate_snapshot](#jerry_generate_snapshot) +- [jerry_generate_function_snapshot](#jerry_generate_function_snapshot) +- [jerry_exec_snapshot](#jerry_exec_snapshot) + + # Functions for realm objects These APIs all depend on build option (`JERRY_BUILTIN_REALMS`). |