Rework resolving references and namespace creation in modules (#4695)
- Properties of namespace objects are ordered in lexical order - The namespace object is created and imports are bound during linking phase - Namespace imports are changed to read-only - Reduced memory consumption JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg zherczeg.u-szeged@partner.samsung.com
This commit is contained in:
@@ -865,17 +865,14 @@ jerry_module_get_namespace (const jerry_value_t module_val) /**< module */
|
||||
return jerry_throw (ecma_raise_type_error (ECMA_ERR_MSG (ecma_error_not_module_p)));
|
||||
}
|
||||
|
||||
if (module_p->namespace_object_p == NULL)
|
||||
if (module_p->header.u.cls.u1.module_state < JERRY_MODULE_STATE_LINKED
|
||||
|| module_p->header.u.cls.u1.module_state > JERRY_MODULE_STATE_EVALUATED)
|
||||
{
|
||||
if (module_p->header.u.cls.u1.module_state < JERRY_MODULE_STATE_LINKED
|
||||
|| module_p->header.u.cls.u1.module_state > JERRY_MODULE_STATE_EVALUATED)
|
||||
{
|
||||
return jerry_throw (ecma_raise_range_error (ECMA_ERR_MSG ("Namespace object cannot be created")));
|
||||
}
|
||||
|
||||
ecma_module_create_namespace_object (module_p);
|
||||
return jerry_throw (ecma_raise_range_error (ECMA_ERR_MSG ("Namespace object is not available")));
|
||||
}
|
||||
|
||||
JERRY_ASSERT (module_p->namespace_object_p != NULL);
|
||||
|
||||
ecma_ref_object (module_p->namespace_object_p);
|
||||
return ecma_make_object_value (module_p->namespace_object_p);
|
||||
#else /* !JERRY_MODULE_SYSTEM */
|
||||
|
||||
Reference in New Issue
Block a user