Fix magic-string generation (#4751)

In some cases the magic-string generator creates conditions like: A || !A . These conditions can be simplified.

JerryScript-DCO-1.0-Signed-off-by: Gergo Csizi csgergo92@gmail.com
This commit is contained in:
Gergo Csizi 2021-10-15 19:09:04 +02:00 committed by GitHub
parent d4231e7251
commit fe3a5c08b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 41 deletions

View File

@ -421,9 +421,7 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REVOKE, "revoke")
|| JERRY_ESNEXT
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SEARCH, "search")
#endif
#if !JERRY_ESNEXT && JERRY_BUILTIN_REGEXP \
|| JERRY_BUILTIN_REGEXP && JERRY_ESNEXT \
|| JERRY_BUILTIN_REGEXP && !(JERRY_ESNEXT)
#if JERRY_BUILTIN_REGEXP
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SOURCE, "source")
#endif
#if JERRY_BUILTIN_ARRAY
@ -602,10 +600,7 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MATCH_ALL, "matchAll")
#if JERRY_BUILTIN_STRING && JERRY_ESNEXT
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PAD_START, "padStart")
#endif
#if JERRY_ESNEXT \
|| !(JERRY_ESNEXT)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PARSE_INT, "parseInt")
#endif
#if JERRY_ESNEXT
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REJECTED, "rejected")
#endif
@ -680,13 +675,8 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UINT32_UL, "getUint32")
#if JERRY_ESNEXT
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS_INTEGER, "isInteger")
#endif
#if JERRY_BUILTIN_REGEXP \
|| JERRY_ESNEXT
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LASTINDEX_UL, "lastIndex")
#endif
#if !JERRY_ESNEXT && JERRY_BUILTIN_REGEXP \
|| JERRY_BUILTIN_REGEXP && JERRY_ESNEXT \
|| JERRY_BUILTIN_REGEXP && !(JERRY_ESNEXT)
#if JERRY_BUILTIN_REGEXP
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MULTILINE, "multiline")
#endif
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PROTOTYPE, "prototype")
@ -755,15 +745,10 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UTC_DATE_UL, "getUTCDate")
#if JERRY_BUILTIN_GLOBAL_THIS
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GLOBAL_THIS_UL, "globalThis")
#endif
#if !JERRY_ESNEXT && JERRY_BUILTIN_REGEXP \
|| JERRY_BUILTIN_REGEXP && JERRY_ESNEXT \
|| JERRY_BUILTIN_REGEXP && !(JERRY_ESNEXT)
#if JERRY_BUILTIN_REGEXP
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IGNORECASE_UL, "ignoreCase")
#endif
#if JERRY_ESNEXT \
|| !(JERRY_ESNEXT)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PARSE_FLOAT, "parseFloat")
#endif
#if JERRY_BUILTIN_REGEXP && JERRY_BUILTIN_STRING && JERRY_ESNEXT
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REPLACE_ALL, "replaceAll")
#endif
@ -781,10 +766,7 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UTC_DATE_UL, "setUTCDate")
#if JERRY_BUILTIN_STRING && JERRY_ESNEXT
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_STARTS_WITH, "startsWith")
#endif
#if JERRY_RESOURCE_NAME \
|| !(JERRY_RESOURCE_NAME)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RESOURCE_ANON, "<anonymous>")
#endif
#if JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ARRAY_BUFFER_UL, "ArrayBuffer")
#endif
@ -831,8 +813,7 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_FULL_YEAR_UL, "setFullYear")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UTC_HOURS_UL, "setUTCHours")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UTC_MONTH_UL, "setUTCMonth")
#endif
#if JERRY_BUILTIN_ANNEXB && JERRY_BUILTIN_DATE && JERRY_ESNEXT \
|| JERRY_BUILTIN_ANNEXB && JERRY_BUILTIN_DATE && !(JERRY_ESNEXT)
#if JERRY_BUILTIN_ANNEXB && JERRY_BUILTIN_DATE
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_GMT_STRING_UL, "toGMTString")
#endif
#if JERRY_BUILTIN_DATE
@ -848,7 +829,7 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_PRECISION_UL, "toPrecision")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_PRIMITIVE, "toPrimitive")
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_STRING_TAG, "toStringTag")
#endif
#if JERRY_BUILTIN_DATE && !(JERRY_ESNEXT) \
#if JERRY_BUILTIN_DATE \
|| JERRY_ESNEXT
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_UTC_STRING_UL, "toUTCString")
#endif
@ -1027,7 +1008,7 @@ LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTORS_UL, "getOwnP
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FUNCTION_TO_STRING_ANON_ASYNC_GENERATOR, "async function* anonymous(")
#endif
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FUNCTION_TO_STRING_NATIVE, "function () { [native code] }")
#if JERRY_FUNCTION_TO_STRING && JERRY_SNAPSHOT_EXEC \
#if JERRY_SNAPSHOT_EXEC \
|| !(JERRY_FUNCTION_TO_STRING)
LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FUNCTION_TO_STRING_ECMA, "function () { /* ecmascript */ }")
#endif
@ -1146,20 +1127,7 @@ LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_COPY_WITHIN)
#else
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_ENUMERABLE)
#endif
#if JERRY_RESOURCE_NAME \
|| !(JERRY_RESOURCE_NAME)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_RESOURCE_ANON)
#elif JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_ARRAY_BUFFER_UL)
#elif JERRY_BUILTIN_ERRORS
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_SYNTAX_ERROR_UL)
#elif JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_UINT16_ARRAY_UL)
#elif JERRY_BUILTIN_STRING && JERRY_ESNEXT
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_CODE_POINT_AT)
#else
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_CONSTRUCTOR)
#endif
#if JERRY_BUILTIN_TYPEDARRAY
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (12, LIT_MAGIC_STRING_FLOAT32_ARRAY_UL)
#elif JERRY_BUILTIN_TYPEDARRAY && JERRY_NUMBER_TYPE_FLOAT64
@ -1268,15 +1236,15 @@ LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (26, LIT_MAGIC_STRING_FUNCTION_TO_STRING
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (27, LIT_MAGIC_STRING_FUNCTION_TO_STRING_NATIVE)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (28, LIT_MAGIC_STRING_FUNCTION_TO_STRING_NATIVE)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (29, LIT_MAGIC_STRING_FUNCTION_TO_STRING_NATIVE)
#if JERRY_FUNCTION_TO_STRING && JERRY_SNAPSHOT_EXEC \
#if JERRY_SNAPSHOT_EXEC \
|| !(JERRY_FUNCTION_TO_STRING)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (30, LIT_MAGIC_STRING_FUNCTION_TO_STRING_ECMA)
#endif
#if JERRY_FUNCTION_TO_STRING && JERRY_SNAPSHOT_EXEC \
#if JERRY_SNAPSHOT_EXEC \
|| !(JERRY_FUNCTION_TO_STRING)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (31, LIT_MAGIC_STRING_FUNCTION_TO_STRING_ECMA)
#endif
#if JERRY_FUNCTION_TO_STRING && JERRY_SNAPSHOT_EXEC \
#if JERRY_SNAPSHOT_EXEC \
|| !(JERRY_FUNCTION_TO_STRING)
LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (32, LIT_MAGIC_STRING_FUNCTION_TO_STRING_ECMA)
#endif

View File

@ -176,6 +176,11 @@ def calculate_magic_string_guards(defs, uses, debug=False):
for i, guard_i in enumerate(guards):
if guard_i is None:
continue
for guard in guard_i.copy():
neg_guard = "!(" + guard[1:] + ")"
for guard_j in guards:
if guard_j is not None and neg_guard in guard_j:
guard_i.remove(guard)
for j, guard_j in enumerate(guards):
if j == i or guard_j is None:
continue