Change resource name to a string. (#4724)

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2021-07-27 13:40:19 +02:00
committed by GitHub
parent d99905aca6
commit 951044c036
17 changed files with 105 additions and 106 deletions
+41 -53
View File
@@ -242,7 +242,7 @@ Option bits for [jerry_parse_options_t](#jerry_parse_options_t).
- JERRY_PARSE_NO_OPTS - No options passed
- JERRY_PARSE_STRICT_MODE - Enable strict mode
- 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_RESOURCE - `resource_name` field is valid
- JERRY_PARSE_HAS_START - `start_line` and `start_column` fields are valid
- JERRY_PARSE_HAS_USER_VALUE - `user_value` field is valid
@@ -312,9 +312,9 @@ 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
- JERRY_SNAPSHOT_EXEC_HAS_RESOURCE - `resource_name` field is 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
- 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,
@@ -548,10 +548,9 @@ or [jerry_parse_function](#jerry_parse_function)
typedef struct
{
uint32_t options; /**< combination of jerry_parse_option_enable_feature_t values */
const jerry_char_t *resource_name_p; /**< resource name (usually a file name)
* if JERRY_PARSE_HAS_RESOURCE is set in options */
size_t resource_name_length; /**< length of resource name
* if JERRY_PARSE_HAS_RESOURCE is set in options */
jerry_value_t resource_name; /**< resource name string (usually a file name)
* if JERRY_PARSE_HAS_RESOURCE is set in options
* Note: non-string values are ignored */
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
@@ -1305,10 +1304,9 @@ Various configuration options for [jerry_exec_snapshot](#jerry_exec_snapshot)
```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 resource_name; /**< resource name string (usually a file name)
* if JERRY_SNAPSHOT_EXEC_HAS_RESOURCE is set in exec_snapshot_opts
* Note: non-string values are ignored */
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 */
@@ -1710,17 +1708,16 @@ main (void)
jerry_init (JERRY_INIT_EMPTY);
const jerry_char_t script[] = "print ('Hello, World!');";
const jerry_char_t file[] = "hello.js";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_STRICT_MODE | JERRY_PARSE_HAS_RESOURCE | JERRY_PARSE_HAS_START;
parse_options.resource_name_p = file;
parse_options.resource_name_length = sizeof(file) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "hello.js");
/* This example script is extracted from the middle of a file. */
parse_options.start_line = 10;
parse_options.start_column = 1;
jerry_value_t parsed_code = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
jerry_release_value (parsed_code);
jerry_cleanup ();
@@ -4621,14 +4618,14 @@ module_resolve_callback (const jerry_value_t specifier,
* returns with a new module. */
const jerry_char_t script[] = "export var a = 5";
const jerry_char_t file[] = "b.mjs";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = file;
parse_options.resource_name_length = sizeof (file) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "b.mjs");
return jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_value_t result = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
return result;
} /* module_resolve_callback */
int
@@ -4637,14 +4634,13 @@ main (void)
jerry_init (JERRY_INIT_EMPTY);
const jerry_char_t script[] = "import a from 'b.mjs'";
const jerry_char_t file[] = "a.mjs";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = file;
parse_options.resource_name_length = sizeof (file) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "a.mjs");
jerry_value_t ret_value = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
jerry_module_link (ret_value, module_resolve_callback, NULL);
@@ -4696,14 +4692,13 @@ main (void)
jerry_init (JERRY_INIT_EMPTY);
const jerry_char_t script[] = "export var a = 6";
const jerry_char_t file[] = "a.mjs";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = file;
parse_options.resource_name_length = sizeof (file) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "a.mjs");
jerry_value_t module_value = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
jerry_release_value (jerry_module_link (module_value, NULL, NULL));
jerry_release_value (jerry_module_evaluate (module_value));
@@ -4758,14 +4753,13 @@ main (void)
jerry_init (JERRY_INIT_EMPTY);
const jerry_char_t script[] = "import a from 'b.mjs'";
const jerry_char_t file[] = "a.mjs";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = file;
parse_options.resource_name_length = sizeof (file) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "a.mjs");
jerry_value_t module_value = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
if (jerry_module_get_state (module_value) == JERRY_MODULE_STATE_UNLINKED)
{
@@ -4837,16 +4831,15 @@ main (void)
jerry_init (JERRY_INIT_EMPTY);
const jerry_char_t script[] = "12";
const jerry_char_t file[] = "a.mjs";
jerry_module_set_state_changed_callback (module_state_changed, NULL);
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = file;
parse_options.resource_name_length = sizeof (file) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "a.mjs");
jerry_value_t module_value = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
jerry_release_value (jerry_module_link (module_value, NULL, NULL));
@@ -4903,14 +4896,13 @@ main (void)
const jerry_char_t script[] = "export * from 'b.mjs'"
"import a from 'c.mjs'";
const jerry_char_t file[] = "a.mjs";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = file;
parse_options.resource_name_length = sizeof (file) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "a.mjs");
jerry_value_t module_value = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
/* Prints 2. */
printf ("Number of requests: %d\n", (int) jerry_module_get_number_of_requests (module_value));
@@ -4979,10 +4971,10 @@ main (void)
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = file;
parse_options.resource_name_length = sizeof (file) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "a.mjs");
jerry_value_t module_value = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
jerry_value_t request_value = jerry_module_get_request (module_value, 0);
/* Returns with b.mjs */
@@ -5043,14 +5035,13 @@ main (void)
jerry_init (JERRY_INIT_EMPTY);
const jerry_char_t script[] = "export var a = 6";
const jerry_char_t file[] = "a.mjs";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = file;
parse_options.resource_name_length = sizeof (file) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "a.mjs");
jerry_value_t module_value = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
jerry_release_value (jerry_module_link (module_value, NULL, NULL));
jerry_release_value (jerry_module_evaluate (module_value));
@@ -5144,20 +5135,19 @@ main (void)
" function (namespace) { /* use namespace */},\n"
" function (error) { /* handle error */}\n"
")";
const jerry_char_t resource[] = "dir/my_script.js";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_HAS_RESOURCE | JERRY_PARSE_HAS_USER_VALUE;
/* Resource is usually used for debugging purposes, e.g. for generating backtrace. */
parse_options.resource_name_p = resource;
parse_options.resource_name_length = sizeof (resource) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "dir/my_script.js");
/* User value should provide information for resolving dynamic imports.
* In this case it contains the full path excluding the filename. */
parse_options.user_value = jerry_create_string ((const jerry_char_t *) "/home/user/dir");
jerry_value_t script_value = jerry_parse (script, sizeof (script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
jerry_release_value (parse_options.user_value);
jerry_release_value (jerry_run (script_value));
jerry_release_value (script_value);
@@ -5165,14 +5155,13 @@ main (void)
/* The application resolves both the module and the promise using the specifier
* and the user_value. In this example the specifier is modules/my_module.mjs. */
const jerry_char_t module_script[] = "export var a = 5";
const jerry_char_t module_resource[] = "modules/my_module.mjs";
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE | JERRY_PARSE_HAS_USER_VALUE;
parse_options.resource_name_p = module_resource;
parse_options.resource_name_length = sizeof (module_resource) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "modules/my_module.mjs");
parse_options.user_value = jerry_create_string ((const jerry_char_t *) "/home/user/dir/modules");
jerry_value_t module_value = jerry_parse (module_script, sizeof (module_script) - 1, &parse_options);
jerry_release_value (parse_options.resource_name);
jerry_release_value (parse_options.user_value);
jerry_release_value (jerry_module_link (module_value, NULL, NULL));
jerry_release_value (jerry_module_evaluate (module_value));
@@ -10905,16 +10894,16 @@ main (void)
"function g() { h (); }\n"
"function h() { backtrace (); }\n"
"f ();\n");
const char *resource = "demo_memoryjs";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = (jerry_char_t *) resource;
parse_options.resource_name_length = (size_t) strlen (resource);
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "demo_memory.js");
jerry_value_t program = jerry_parse ((const jerry_char_t *) source,
strlen (source),
&parse_options);
jerry_release_value (parse_options.resource_name);
if (!jerry_value_is_error (program))
{
jerry_value_t run_result = jerry_run (program);
@@ -11011,16 +11000,16 @@ main (void)
"function g() { h (); }\n"
"function h() { backtrace (g); }\n"
"f ();\n");
const char *resource = "demo_backtrace.js";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = (jerry_char_t *) resource;
parse_options.resource_name_length = (size_t) strlen (resource);
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "demo_backtrace.js");
jerry_value_t program = jerry_parse ((const jerry_char_t *) source,
strlen (source),
&parse_options);
jerry_release_value (parse_options.resource_name);
if (!jerry_value_is_error (program))
{
jerry_value_t run_result = jerry_run (program);
@@ -11481,16 +11470,15 @@ main (void)
jerry_release_value (global);
const jerry_char_t source[] = "function myFunction() { return resourceName() }; myFunction()";
const jerry_char_t resource[] = "demo.js";
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = resource;
parse_options.resource_name_length = sizeof (resource) - 1;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "demo.js");
jerry_value_t program = jerry_parse (source,
sizeof (source) - 1,
&parse_options);
jerry_release_value (parse_options.resource_name);
if (!jerry_value_is_error (program))
{
+2 -2
View File
@@ -316,12 +316,12 @@ wait_for_source_callback (const jerry_char_t *resource_name_p, /**< resource nam
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_HAS_RESOURCE;
parse_options.resource_name_p = resource_name_p;
parse_options.resource_name_length = resource_name_size;
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) resource_name_p);
jerry_value_t ret_val = jerry_parse (source_p,
source_size,
&parse_options);
jerry_release_value (parse_options.resource_name);
if (!jerry_value_is_error (ret_val))
{