Implement WeakMap and WeakSet (#3328)

JerryScript-DCO-1.0-Signed-off-by: Dániel Bátyai dbatyai@inf.u-szeged.hu
This commit is contained in:
Dániel Bátyai
2019-11-19 19:27:31 +01:00
committed by Robert Fancsik
parent 830011c033
commit bd0cb33172
21 changed files with 1406 additions and 233 deletions
+2
View File
@@ -70,6 +70,8 @@ typedef enum
LIT_FIRST_INTERNAL_MAGIC_STRING = LIT_INTERNAL_MAGIC_STRING_NATIVE_POINTER, /**< first index of internal
* magic strings */
LIT_INTERNAL_MAGIC_STRING_CLASS_THIS_BINDING, /**< the this binding of the class constructor */
LIT_INTERNAL_MAGIC_STRING_WEAK_REFS, /**< Weak references to the current object */
LIT_INTERNAL_MAGIC_STRING_CONTAINER, /**< Literal ID for internal container objects */
LIT_MAGIC_STRING__COUNT /**< number of magic strings */
} lit_magic_string_id_t;
+24 -10
View File
@@ -44,12 +44,12 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_OF, "of")
#if ENABLED (JERRY_BUILTIN_MATH)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LN2_U, "LN2")
#endif
#if ENABLED (JERRY_ES2015_BUILTIN_MAP) \
|| ENABLED (JERRY_ES2015_BUILTIN_MAP) || ENABLED (JERRY_ES2015_BUILTIN_SET)
#if ENABLED (JERRY_ES2015_BUILTIN_CONTAINER) \
|| ENABLED (JERRY_ES2015_BUILTIN_MAP)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MAP_UL, "Map")
#endif
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NAN, "NaN")
#if ENABLED (JERRY_ES2015_BUILTIN_MAP) || ENABLED (JERRY_ES2015_BUILTIN_SET) \
#if ENABLED (JERRY_ES2015_BUILTIN_CONTAINER) \
|| ENABLED (JERRY_ES2015_BUILTIN_SET)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UL, "Set")
#endif
@@ -59,7 +59,9 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UTC_U, "UTC")
#if ENABLED (JERRY_BUILTIN_MATH)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ABS, "abs")
#endif
#if ENABLED (JERRY_ES2015_BUILTIN_SET)
#if ENABLED (JERRY_ES2015) && ENABLED (JERRY_ES2015_BUILTIN_CONTAINER) \
|| ENABLED (JERRY_ES2015_BUILTIN_SET) \
|| ENABLED (JERRY_ES2015_BUILTIN_WEAKSET)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ADD, "add")
#endif
#if ENABLED (JERRY_ES2015_BUILTIN_PROMISE)
@@ -74,7 +76,9 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FOR, "for")
#endif
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET, "get")
#if ENABLED (JERRY_ES2015_BUILTIN_MAP) \
|| ENABLED (JERRY_ES2015_BUILTIN_SET)
|| ENABLED (JERRY_ES2015_BUILTIN_SET) \
|| ENABLED (JERRY_ES2015_BUILTIN_WEAKMAP) \
|| ENABLED (JERRY_ES2015_BUILTIN_WEAKSET)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_HAS, "has")
#endif
#if ENABLED (JERRY_BUILTIN_MATH)
@@ -277,7 +281,9 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CONCAT, "concat")
#endif
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CREATE, "create")
#if ENABLED (JERRY_ES2015_BUILTIN_MAP) \
|| ENABLED (JERRY_ES2015_BUILTIN_SET)
|| ENABLED (JERRY_ES2015_BUILTIN_SET) \
|| ENABLED (JERRY_ES2015_BUILTIN_WEAKMAP) \
|| ENABLED (JERRY_ES2015_BUILTIN_WEAKSET)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DELETE, "delete")
#endif
#if ENABLED (JERRY_BUILTIN_ANNEXB)
@@ -362,6 +368,14 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SQRT1_2_U, "SQRT1_2")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SYMBOL_LEFT_PAREN_UL, "Symbol(")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SYMBOL_DOT_UL, "Symbol.")
#endif
#if ENABLED (JERRY_ES2015_BUILTIN_CONTAINER) \
|| ENABLED (JERRY_ES2015_BUILTIN_WEAKMAP)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_WEAKMAP_UL, "WeakMap")
#endif
#if ENABLED (JERRY_ES2015_BUILTIN_CONTAINER) \
|| ENABLED (JERRY_ES2015_BUILTIN_WEAKSET)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_WEAKSET_UL, "WeakSet")
#endif
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BOOLEAN, "boolean")
#if ENABLED (JERRY_BUILTIN_ANNEXB) && ENABLED (JERRY_BUILTIN_REGEXP)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_COMPILE, "compile")
@@ -791,16 +805,16 @@ LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_IS)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_OF)
#elif ENABLED (JERRY_BUILTIN_MATH)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_LN2_U)
#elif ENABLED (JERRY_ES2015_BUILTIN_MAP) \
|| ENABLED (JERRY_ES2015_BUILTIN_MAP) || ENABLED (JERRY_ES2015_BUILTIN_SET)
#elif ENABLED (JERRY_ES2015_BUILTIN_CONTAINER) \
|| ENABLED (JERRY_ES2015_BUILTIN_MAP)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_MAP_UL)
#else
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_NAN)
#endif
#if ENABLED (JERRY_BUILTIN_MATH)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (3, LIT_MAGIC_STRING_LN2_U)
#elif ENABLED (JERRY_ES2015_BUILTIN_MAP) \
|| ENABLED (JERRY_ES2015_BUILTIN_MAP) || ENABLED (JERRY_ES2015_BUILTIN_SET)
#elif ENABLED (JERRY_ES2015_BUILTIN_CONTAINER) \
|| ENABLED (JERRY_ES2015_BUILTIN_MAP)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (3, LIT_MAGIC_STRING_MAP_UL)
#else
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (3, LIT_MAGIC_STRING_NAN)
+2
View File
@@ -181,6 +181,8 @@ LIT_MAGIC_STRING_SPECIES = "species"
LIT_MAGIC_STRING_TO_FIXED_UL = "toFixed"
LIT_MAGIC_STRING_UNSHIFT = "unshift"
LIT_MAGIC_STRING_VALUE_OF_UL = "valueOf"
LIT_MAGIC_STRING_WEAKMAP_UL = "WeakMap"
LIT_MAGIC_STRING_WEAKSET_UL = "WeakSet"
LIT_MAGIC_STRING_EPSILON_U = "EPSILON"
LIT_MAGIC_STRING_DATAVIEW_UL = "DataView"
LIT_MAGIC_STRING_FUNCTION_UL = "Function"