Support parsing of scripts / functions stored in string values (#4728)

Function arguments must be passed as string values.
Snapshots are generated from compiled code rather than source code.

JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
Zoltan Herczeg
2021-08-11 17:37:12 +02:00
committed by GitHub
parent b7dead7b05
commit 3ed93cfb51
24 changed files with 601 additions and 696 deletions
+18 -14
View File
@@ -374,32 +374,36 @@ process_generate (cli_state_t *cli_state_p, /**< cli state */
}
}
jerry_value_t snapshot_result;
jerry_parse_options_t parse_options;
parse_options.options = JERRY_PARSE_HAS_RESOURCE;
/* To avoid cppcheck warning. */
parse_options.argument_list = 0;
parse_options.resource_name = jerry_create_string_sz ((const jerry_char_t *) file_name_p,
(jerry_size_t) strlen (file_name_p));
if (function_args_p != NULL)
{
snapshot_result = jerry_generate_function_snapshot ((jerry_char_t *) source_p,
source_length,
(const jerry_char_t *) function_args_p,
strlen (function_args_p),
&parse_options,
snapshot_flags,
output_buffer,
sizeof (output_buffer) / sizeof (uint32_t));
parse_options.options |= JERRY_PARSE_HAS_ARGUMENT_LIST;
parse_options.argument_list = jerry_create_string_from_utf8 ((const jerry_char_t *) function_args_p);
}
else
{
snapshot_result = jerry_generate_snapshot ((jerry_char_t *) source_p,
jerry_value_t snapshot_result = jerry_parse ((jerry_char_t *) source_p,
source_length,
&parse_options,
&parse_options);
if (!jerry_value_is_error (snapshot_result))
{
jerry_value_t parse_result = snapshot_result;
snapshot_result = jerry_generate_snapshot (parse_result,
snapshot_flags,
output_buffer,
sizeof (output_buffer) / sizeof (uint32_t));
jerry_release_value (parse_result);
}
if (parse_options.options & JERRY_PARSE_HAS_ARGUMENT_LIST)
{
jerry_release_value (parse_options.argument_list);
}
jerry_release_value (parse_options.resource_name);