mirror of
https://github.com/jerryscript-project/jerryscript.git
synced 2025-12-15 16:29:21 +00:00
Simplify jerry_get_resource_name (#4730)
JerryScript-DCO-1.0-Signed-off-by: Gergo Csizi csgergo92@gmail.com
This commit is contained in:
parent
3ed93cfb51
commit
fc29019165
@ -5388,26 +5388,24 @@ jerry_value_t
|
||||
jerry_get_resource_name (const jerry_value_t value) /**< jerry api value */
|
||||
{
|
||||
#if JERRY_RESOURCE_NAME
|
||||
if (ecma_is_value_undefined (value))
|
||||
if (ecma_is_value_undefined (value) && JERRY_CONTEXT (vm_top_context_p) != NULL)
|
||||
{
|
||||
if (JERRY_CONTEXT (vm_top_context_p) != NULL)
|
||||
{
|
||||
return ecma_copy_value (ecma_get_resource_name (JERRY_CONTEXT (vm_top_context_p)->shared_p->bytecode_header_p));
|
||||
}
|
||||
return ecma_copy_value (ecma_get_resource_name (JERRY_CONTEXT (vm_top_context_p)->shared_p->bytecode_header_p));
|
||||
}
|
||||
else if (ecma_is_value_object (value))
|
||||
|
||||
const ecma_compiled_code_t *bytecode_p = ecma_bytecode_get_from_value (value);
|
||||
|
||||
if (bytecode_p == NULL)
|
||||
{
|
||||
ecma_object_t *obj_p = ecma_get_object_from_value (value);
|
||||
return ecma_make_magic_string_value (LIT_MAGIC_STRING_RESOURCE_ANON);
|
||||
}
|
||||
|
||||
if (ecma_get_object_type (obj_p) == ECMA_OBJECT_TYPE_FUNCTION
|
||||
&& !ecma_get_object_is_builtin (obj_p))
|
||||
{
|
||||
ecma_extended_object_t *ext_func_p = (ecma_extended_object_t *) obj_p;
|
||||
ecma_value_t script_value = ((cbc_uint8_arguments_t *) bytecode_p)->script_value;
|
||||
cbc_script_t *script_p = ECMA_GET_INTERNAL_VALUE_POINTER (cbc_script_t, script_value);
|
||||
|
||||
const ecma_compiled_code_t *bytecode_data_p = ecma_op_function_get_compiled_code (ext_func_p);
|
||||
|
||||
return ecma_copy_value (ecma_get_resource_name (bytecode_data_p));
|
||||
}
|
||||
if (CBC_SCRIPT_GET_TYPE (script_p) == CBC_SCRIPT_GENERIC)
|
||||
{
|
||||
return ecma_copy_value (script_p->resource_name);
|
||||
}
|
||||
#endif /* JERRY_RESOURCE_NAME */
|
||||
|
||||
|
||||
@ -114,6 +114,62 @@ main (void)
|
||||
jerry_release_value (resource_value);
|
||||
jerry_release_value (parse_options.resource_name);
|
||||
|
||||
jerry_release_value (run_result);
|
||||
jerry_release_value (program);
|
||||
if (jerry_is_feature_enabled (JERRY_FEATURE_MODULE))
|
||||
{
|
||||
const char *source_3 = "";
|
||||
|
||||
parse_options.options = JERRY_PARSE_MODULE | JERRY_PARSE_HAS_RESOURCE;
|
||||
parse_options.resource_name = jerry_create_string ((const jerry_char_t *) "demo3.js");
|
||||
|
||||
program = jerry_parse ((const jerry_char_t *) source_3,
|
||||
strlen (source_3),
|
||||
&parse_options);
|
||||
TEST_ASSERT (!jerry_value_is_error (program));
|
||||
|
||||
resource_value = jerry_get_resource_name (program);
|
||||
TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name));
|
||||
jerry_release_value (resource_value);
|
||||
|
||||
run_result = jerry_module_link (program, NULL, NULL);
|
||||
TEST_ASSERT (!jerry_value_is_error (run_result));
|
||||
|
||||
resource_value = jerry_get_resource_name (run_result);
|
||||
TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name));
|
||||
jerry_release_value (resource_value);
|
||||
jerry_release_value (run_result);
|
||||
|
||||
run_result = jerry_module_evaluate (program);
|
||||
TEST_ASSERT (!jerry_value_is_error (run_result));
|
||||
|
||||
resource_value = jerry_get_resource_name (run_result);
|
||||
TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name));
|
||||
jerry_release_value (resource_value);
|
||||
jerry_release_value (run_result);
|
||||
jerry_release_value (program);
|
||||
jerry_release_value (parse_options.resource_name);
|
||||
}
|
||||
const char *source_4 = ("function f(){} \n"
|
||||
"f.bind().bind();");
|
||||
|
||||
parse_options.options = JERRY_PARSE_HAS_RESOURCE;
|
||||
parse_options.resource_name = jerry_create_string ((jerry_char_t *) "demo4.js");
|
||||
|
||||
program = jerry_parse ((const jerry_char_t *) source_4,
|
||||
strlen (source_4),
|
||||
&parse_options);
|
||||
TEST_ASSERT (!jerry_value_is_error (program));
|
||||
|
||||
run_result = jerry_run (program);
|
||||
TEST_ASSERT (!jerry_value_is_error (run_result));
|
||||
TEST_ASSERT (jerry_value_is_object (run_result));
|
||||
|
||||
resource_value = jerry_get_resource_name (run_result);
|
||||
TEST_ASSERT (jerry_binary_operation (JERRY_BIN_OP_STRICT_EQUAL, resource_value, parse_options.resource_name));
|
||||
|
||||
jerry_release_value (resource_value);
|
||||
jerry_release_value (parse_options.resource_name);
|
||||
jerry_release_value (run_result);
|
||||
jerry_release_value (program);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user