From 67c641e567dc48cc40f431cb12b45cb2205ad71e Mon Sep 17 00:00:00 2001 From: Akos Kiss Date: Fri, 21 Apr 2017 11:42:36 +0200 Subject: [PATCH] Generate lit-magic-strings.inc.h (#1690) Currently, `lit-magic-strings.inc.h` is manually maintained. This has several drawbacks: - keeping the list of magic strings sorted first by length then alphabetically is error prone, - it is easy to leave unused magic strings in the list by accident (e.g., `LIT_MAGIC_STRING_JERRY_UL` is defined as a magic string but not used anywhere in the code) and, - it is very hard to add `CONFIG_DISABLE_*_BUILTIN` guards to the list, even though there are several magic strings, which are used in some of the configurations only (e.g, "setPrototypeOf" is used in ES2015 only). To ease the maintenance of magic strings, this commit moves the definition of magic strings to a config file (`lit-magic-strings.ini`), and adds `tools/gen-magic-strings.py` to generate the `.inc.h` file from this config file and from the use cases of the strings in the code. - The magic strings in the config file can appear in any order, the generator will ensure that they are correctly sorted. - The generator skips those definitions that are not used anywhere (and emits a warning to signal that such definitions can be removed). - The generator applies the same guards to the definitions in the `.inc.h` file as found in the code around the use of the strings to optimize for size. The commit also changes some builtin-related `.inc.h` files by adding guards that don't affect functionality but improve the results of the generator. To ensure that the invocation of the generator does not get forgotten, the commit also adds `tools/check-magic-strings.sh` and binds it into the testing infrastructure. JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu --- .travis.yml | 2 +- docs/04.INTERNALS.md | 2 +- .../ecma-builtin-array-prototype.inc.h | 4 + .../builtin-objects/ecma-builtin-array.inc.h | 4 + .../ecma-builtin-arraybuffer-prototype.inc.h | 4 + .../ecma-builtin-arraybuffer.inc.h | 4 + .../ecma-builtin-boolean-prototype.inc.h | 4 + .../ecma-builtin-boolean.inc.h | 4 + .../ecma-builtin-date-prototype.inc.h | 4 + .../builtin-objects/ecma-builtin-date.inc.h | 4 + .../ecma-builtin-evalerror-prototype.inc.h | 4 + .../ecma-builtin-evalerror.inc.h | 4 + .../builtin-objects/ecma-builtin-json.inc.h | 4 + .../builtin-objects/ecma-builtin-math.inc.h | 4 + .../ecma-builtin-number-prototype.inc.h | 4 + .../builtin-objects/ecma-builtin-number.inc.h | 4 + .../ecma-builtin-promise-prototype.inc.h | 4 + .../ecma-builtin-rangeerror-prototype.inc.h | 4 + .../ecma-builtin-rangeerror.inc.h | 4 + ...cma-builtin-referenceerror-prototype.inc.h | 4 + .../ecma-builtin-referenceerror.inc.h | 4 + .../ecma-builtin-regexp-prototype.inc.h | 4 + .../builtin-objects/ecma-builtin-regexp.inc.h | 4 + .../ecma-builtin-string-prototype.inc.h | 4 + .../builtin-objects/ecma-builtin-string.inc.h | 4 + .../ecma-builtin-syntaxerror-prototype.inc.h | 4 + .../ecma-builtin-syntaxerror.inc.h | 4 + .../ecma-builtin-typeerror-prototype.inc.h | 4 + .../ecma-builtin-typeerror.inc.h | 4 + .../ecma-builtin-urierror-prototype.inc.h | 4 + .../ecma-builtin-urierror.inc.h | 4 + .../ecma-builtin-float32array-prototype.inc.h | 4 + .../ecma-builtin-float32array.inc.h | 4 + .../ecma-builtin-float64array-prototype.inc.h | 6 + .../ecma-builtin-float64array.inc.h | 6 + .../ecma-builtin-int16array-prototype.inc.h | 4 + .../typedarray/ecma-builtin-int16array.inc.h | 4 + .../ecma-builtin-int32array-prototype.inc.h | 4 + .../typedarray/ecma-builtin-int32array.inc.h | 4 + .../ecma-builtin-int8array-prototype.inc.h | 4 + .../typedarray/ecma-builtin-int8array.inc.h | 4 + .../ecma-builtin-typedarray-prototype.inc.h | 4 + .../typedarray/ecma-builtin-typedarray.inc.h | 4 + .../ecma-builtin-uint16array-prototype.inc.h | 4 + .../typedarray/ecma-builtin-uint16array.inc.h | 4 + .../ecma-builtin-uint32array-prototype.inc.h | 4 + .../typedarray/ecma-builtin-uint32array.inc.h | 4 + .../ecma-builtin-uint8array-prototype.inc.h | 4 + .../typedarray/ecma-builtin-uint8array.inc.h | 4 + ...-builtin-uint8clampedarray-prototype.inc.h | 4 + .../ecma-builtin-uint8clampedarray.inc.h | 4 + jerry-core/lit/lit-magic-strings.inc.h | 397 ++++++++++++++++-- jerry-core/lit/lit-magic-strings.ini | 271 ++++++++++++ tools/check-magic-strings.sh | 32 ++ tools/gen-magic-strings.py | 289 +++++++++++++ tools/run-tests.py | 5 + tools/settings.py | 1 + 57 files changed, 1161 insertions(+), 38 deletions(-) create mode 100644 jerry-core/lit/lit-magic-strings.ini create mode 100755 tools/check-magic-strings.sh create mode 100755 tools/gen-magic-strings.py diff --git a/.travis.yml b/.travis.yml index 7add771fe..6a1cbc90c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ sudo: required env: matrix: - - OPTS="--check-signed-off-travis --check-cppcheck --check-doxygen --check-vera --check-license" + - OPTS="--check-signed-off-travis --check-cppcheck --check-doxygen --check-vera --check-license --check-magic-strings" - OPTS="--jerry-debugger" - OPTS="--jerry-tests --jerry-test-suite" - OPTS="--jerry-tests --jerry-test-suite --toolchain=cmake/toolchain_linux_armv7l.cmake" TIMEOUT=300 INSTALL_QEMU_ARM=yes diff --git a/docs/04.INTERNALS.md b/docs/04.INTERNALS.md index cac2f92cf..45d3a2689 100644 --- a/docs/04.INTERNALS.md +++ b/docs/04.INTERNALS.md @@ -261,7 +261,7 @@ Several references to single allocated number are not supported. Each reference ### String -Strings in JerryScript are not just character sequences, but can hold numbers and so-called magic ids too. For common character sequences there is a table in the read only memory that contains magic id and character sequence pairs. If a string is already in this table, the magic id of its string is stored, not the character sequence itself. Using numbers speeds up the property access. These techniques save memory. +Strings in JerryScript are not just character sequences, but can hold numbers and so-called magic ids too. For common character sequences (defined in `./jerry-core/lit/lit-magic-strings.ini`) there is a table in the read only memory that contains magic id and character sequence pairs. If a string is already in this table, the magic id of its string is stored, not the character sequence itself. Using numbers speeds up the property access. These techniques save memory. ### Object / Lexical Environment diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.inc.h index 6e2ad0f99..0da3c0597 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-array-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ARRAY_BUILTIN + /* Object properties: * (property name, object pointer getter) */ @@ -59,4 +61,6 @@ ROUTINE (LIT_MAGIC_STRING_FILTER, ecma_builtin_array_prototype_object_filter, 2, ROUTINE (LIT_MAGIC_STRING_REDUCE, ecma_builtin_array_prototype_object_reduce, NON_FIXED, 1) ROUTINE (LIT_MAGIC_STRING_REDUCE_RIGHT_UL, ecma_builtin_array_prototype_object_reduce_right, NON_FIXED, 1) +#endif /* !CONFIG_DISABLE_ARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h index 9bcb936ee..0279c1305 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-array.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ARRAY_BUILTIN + /* Object properties: * (property name, object pointer getter) */ @@ -39,4 +41,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, * (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */ ROUTINE (LIT_MAGIC_STRING_IS_ARRAY_UL, ecma_builtin_array_object_is_array, 1, 1) +#endif /* !CONFIG_DISABLE_ARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer-prototype.inc.h index 75a6dc52f..c73c52795 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* Object properties: * (property name, object pointer getter) */ @@ -35,4 +37,6 @@ ACCESSOR_READ_ONLY (LIT_MAGIC_STRING_BYTE_LENGTH_UL, * (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */ ROUTINE (LIT_MAGIC_STRING_SLICE, ecma_builtin_arraybuffer_prototype_object_slice, 2, 2) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h index dff590c01..f94419df4 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-arraybuffer.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -39,4 +41,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, /* ES2015 24.1.3.1 */ ROUTINE (LIT_MAGIC_STRING_IS_VIEW_UL, ecma_builtin_arraybuffer_object_is_view, 1, 1) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean-prototype.inc.h index 8e6e988d6..fe92469ea 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_BOOLEAN_BUILTIN + /* Object properties: * (property name, object pointer getter) */ @@ -32,4 +34,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ecma_builtin_boolean_prototype_object_to_string, 0, 0) ROUTINE (LIT_MAGIC_STRING_VALUE_OF_UL, ecma_builtin_boolean_prototype_object_value_of, 0, 0) +#endif /* !CONFIG_DISABLE_BOOLEAN_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h index 294d3ee43..031c6a6a9 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-boolean.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_BOOLEAN_BUILTIN + /* Object properties: * (property name, object pointer getter) */ @@ -35,4 +37,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 1, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_BOOLEAN_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-date-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-date-prototype.inc.h index 2524e9a95..f6a4266f1 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-date-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-date-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_DATE_BUILTIN + OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_DATE, ECMA_PROPERTY_CONFIGURABLE_WRITABLE) @@ -75,4 +77,6 @@ ROUTINE (LIT_MAGIC_STRING_TO_GMT_STRING_UL, ECMA_DATE_PROTOTYPE_TO_UTC_STRING, 0 #endif /* !CONFIG_DISABLE_ANNEXB_BUILTIN */ +#endif /* !CONFIG_DISABLE_DATE_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h index c2a46e49e..c1d07bc31 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-date.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_DATE_BUILTIN + /* ECMA-262 v5, 15.9.4.1 */ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_DATE_PROTOTYPE, @@ -32,4 +34,6 @@ ROUTINE (LIT_MAGIC_STRING_PARSE, ecma_builtin_date_parse, 1, 1) ROUTINE (LIT_MAGIC_STRING_UTC_U, ecma_builtin_date_utc, NON_FIXED, 7) ROUTINE (LIT_MAGIC_STRING_NOW, ecma_builtin_date_now, 0, 0) +#endif /* !CONFIG_DISABLE_DATE_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror-prototype.inc.h index d9d5013ce..74d6230ae 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Object properties: * (property name, object pointer getter) */ @@ -37,4 +39,6 @@ STRING_VALUE (LIT_MAGIC_STRING_MESSAGE, LIT_MAGIC_STRING__EMPTY, ECMA_PROPERTY_CONFIGURABLE_WRITABLE) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h index 30a43e1d1..32c10ab56 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-evalerror.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -35,4 +37,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_EVAL_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-json.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-json.inc.h index 8cf38c696..8a3a8022f 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-json.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-json.inc.h @@ -19,9 +19,13 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_JSON_BUILTIN + /* Routine properties: * (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */ ROUTINE (LIT_MAGIC_STRING_PARSE, ecma_builtin_json_parse, 2, 2) ROUTINE (LIT_MAGIC_STRING_STRINGIFY, ecma_builtin_json_stringify, 3, 3) +#endif /* !CONFIG_DISABLE_JSON_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-math.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-math.inc.h index 4d1b8083e..63f7f64d7 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-math.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-math.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_MATH_BUILTIN + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -83,4 +85,6 @@ ROUTINE (LIT_MAGIC_STRING_SIN, ECMA_MATH_OBJECT_SIN, 1, 1) ROUTINE (LIT_MAGIC_STRING_SQRT, ECMA_MATH_OBJECT_SQRT, 1, 1) ROUTINE (LIT_MAGIC_STRING_TAN, ECMA_MATH_OBJECT_TAN, 1, 1) +#endif /* !CONFIG_DISABLE_MATH_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.inc.h index da68afd20..1e64071ea 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-number-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_NUMBER_BUILTIN + /* Object properties: * (property name, object pointer getter) */ @@ -36,4 +38,6 @@ ROUTINE (LIT_MAGIC_STRING_TO_FIXED_UL, ecma_builtin_number_prototype_object_to_f ROUTINE (LIT_MAGIC_STRING_TO_EXPONENTIAL_UL, ecma_builtin_number_prototype_object_to_exponential, 1, 1) ROUTINE (LIT_MAGIC_STRING_TO_PRECISION_UL, ecma_builtin_number_prototype_object_to_precision, 1, 1) +#endif /* !CONFIG_DISABLE_NUMBER_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h index f1fb5cfa5..1b48f1c4a 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-number.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_NUMBER_BUILTIN + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -60,4 +62,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_NUMBER_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_NUMBER_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-promise-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-promise-prototype.inc.h index 2ff629068..3e750e7c5 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-promise-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-promise-prototype.inc.h @@ -15,6 +15,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_PROMISE_BUILTIN + /* Object properties: * (property name, object pointer getter) */ @@ -28,4 +30,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, ROUTINE (LIT_MAGIC_STRING_THEN, ecma_builtin_promise_prototype_then, 2, 2) +#endif /* !CONFIG_DISABLE_ES2015_PROMISE_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror-prototype.inc.h index 45850242f..9b0651e60 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Object properties: * (property name, object pointer getter) */ @@ -37,4 +39,6 @@ STRING_VALUE (LIT_MAGIC_STRING_MESSAGE, LIT_MAGIC_STRING__EMPTY, ECMA_PROPERTY_CONFIGURABLE_WRITABLE) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h index 8bd174a84..a30957149 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-rangeerror.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -35,4 +37,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_RANGE_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror-prototype.inc.h index b30281a87..44ad7ef06 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Object properties: * (property name, object pointer getter) */ @@ -37,4 +39,6 @@ STRING_VALUE (LIT_MAGIC_STRING_MESSAGE, LIT_MAGIC_STRING__EMPTY, ECMA_PROPERTY_CONFIGURABLE_WRITABLE) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h index 55ed05ae0..bf7729fc0 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-referenceerror.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -35,4 +37,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_REFERENCE_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp-prototype.inc.h index 857aef5eb..9c2c30596 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_REGEXP_BUILTIN + /* ECMA-262 v5, 15.10.6.1 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_REGEXP, @@ -56,4 +58,6 @@ ROUTINE (LIT_MAGIC_STRING_EXEC, ecma_builtin_regexp_prototype_exec, 1, 1) ROUTINE (LIT_MAGIC_STRING_TEST, ecma_builtin_regexp_prototype_test, 1, 1) ROUTINE (LIT_MAGIC_STRING_TO_STRING_UL, ecma_builtin_regexp_prototype_to_string, 0, 0) +#endif /* !CONFIG_DISABLE_REGEXP_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h index 0099ec08e..60ae51db0 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-regexp.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_REGEXP_BUILTIN + /* ECMA-262 v5, 15.10.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 2, @@ -29,4 +31,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_REGEXP_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_REGEXP_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-string-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-string-prototype.inc.h index 25852facf..64ccc28ca 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-string-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-string-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_STRING_BUILTIN + /* Object properties: * (property name, object pointer getter) */ @@ -65,4 +67,6 @@ ROUTINE (LIT_MAGIC_STRING_TRIM, ecma_builtin_string_prototype_object_trim, 0, 0) ROUTINE (LIT_MAGIC_STRING_SUBSTR, ecma_builtin_string_prototype_object_substr, 2, 2) #endif /* !CONFIG_DISABLE_ANNEXB_BUILTIN */ +#endif /* !CONFIG_DISABLE_STRING_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h index f990413f3..2dcbaf3ab 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-string.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_STRING_BUILTIN + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -39,4 +41,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, * (property name, C routine name, arguments number or NON_FIXED, value of the routine's length property) */ ROUTINE (LIT_MAGIC_STRING_FROM_CHAR_CODE_UL, ecma_builtin_string_object_from_char_code, NON_FIXED, 1) +#endif /* !CONFIG_DISABLE_STRING_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror-prototype.inc.h index 90210b08a..cd56ddb27 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Object properties: * (property name, object pointer getter) */ @@ -37,4 +39,6 @@ STRING_VALUE (LIT_MAGIC_STRING_MESSAGE, LIT_MAGIC_STRING__EMPTY, ECMA_PROPERTY_CONFIGURABLE_WRITABLE) +#endif /* CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h index 1fc975352..54dc5ea90 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-syntaxerror.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -35,4 +37,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_SYNTAX_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror-prototype.inc.h index 425700fc2..5a6b391fc 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Object properties: * (property name, object pointer getter) */ @@ -37,4 +39,6 @@ STRING_VALUE (LIT_MAGIC_STRING_MESSAGE, LIT_MAGIC_STRING__EMPTY, ECMA_PROPERTY_CONFIGURABLE_WRITABLE) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h index 46b94e64d..93910dd15 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-typeerror.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -35,4 +37,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_TYPE_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-urierror-prototype.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-urierror-prototype.inc.h index 3ac881ea9..8fe6ff23f 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-urierror-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-urierror-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Object properties: * (property name, object pointer getter) */ @@ -37,4 +39,6 @@ STRING_VALUE (LIT_MAGIC_STRING_MESSAGE, LIT_MAGIC_STRING__EMPTY, ECMA_PROPERTY_CONFIGURABLE_WRITABLE) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h b/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h index 11b3953c2..966c95086 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-urierror.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ERROR_BUILTINS + /* Number properties: * (property name, number value, writable, enumerable, configurable) */ @@ -35,4 +37,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_URI_ERROR_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ERROR_BUILTINS */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h index faa852e0d..23149f33b 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_FLOAT32ARRAY, @@ -29,4 +31,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, 4, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h index 8bb31feb1..259bf6afd 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float32array.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -44,4 +46,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_FLOAT32ARRAY_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.inc.h index 7a7453d0f..52fccbd2a 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array-prototype.inc.h @@ -19,6 +19,9 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN +#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_FLOAT64ARRAY, @@ -29,4 +32,7 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, 8, ECMA_PROPERTY_FIXED) +#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */ +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h index 77f951a9b..4e4299790 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-float64array.inc.h @@ -19,6 +19,9 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN +#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 + /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -44,4 +47,7 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_FLOAT64ARRAY_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 */ +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.inc.h index 36b3add63..3455e12c4 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_INT16ARRAY, @@ -29,4 +31,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, 2, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h index 78fd79994..887b446f6 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int16array.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -44,4 +46,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_INT16ARRAY_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.inc.h index 34e2af4fa..5867495be 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_INT32ARRAY, @@ -29,4 +31,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, 4, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h index b61e60f30..f45d486a4 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int32array.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -44,4 +46,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_INT32ARRAY_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h index 9e0a72656..29a084220 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_INT8ARRAY, @@ -29,4 +31,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, 1, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h index 57ec37757..d88bb0a32 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-int8array.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -44,4 +46,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_INT8ARRAY_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h index 5f87dcf57..47a9794ce 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_TYPEDARRAY, @@ -52,4 +54,6 @@ ROUTINE (LIT_MAGIC_STRING_REDUCE_RIGHT_UL, ecma_builtin_typedarray_prototype_red ROUTINE (LIT_MAGIC_STRING_FILTER, ecma_builtin_typedarray_prototype_filter, 2, 1) ROUTINE (LIT_MAGIC_STRING_REVERSE, ecma_builtin_typedarray_prototype_reverse, 0, 0) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h index 61be6d385..39a8757a8 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-typedarray.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.2 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -43,4 +45,6 @@ ROUTINE (LIT_MAGIC_STRING_FROM, ecma_builtin_typedarray_from, NON_FIXED, 1) /* ES2015 22.2.2.2 */ ROUTINE (LIT_MAGIC_STRING_OF, ecma_builtin_typedarray_of, NON_FIXED, 0) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h index d3d013859..f77cbfd8d 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_UINT16ARRAY, @@ -29,4 +31,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, 2, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h index c36e7c8b0..d25cc9cc1 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint16array.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -44,4 +46,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_UINT16ARRAY_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.inc.h index 33a4f27bf..9d730d286 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_UINT32ARRAY, @@ -29,4 +31,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, 4, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.inc.h index 64c06f907..ba1eab907 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint32array.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -44,4 +46,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_UINT32ARRAY_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.inc.h index b649173fb..d55b45061 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_UINT8ARRAY, @@ -29,4 +31,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, 1, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h index 59b1c2f26..ed36f15bf 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8array.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -44,4 +46,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_UINT8ARRAY_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.inc.h index 38b256830..014922b00 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray-prototype.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.3.4 */ OBJECT_VALUE (LIT_MAGIC_STRING_CONSTRUCTOR, ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY, @@ -29,4 +31,6 @@ NUMBER_VALUE (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, 1, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.inc.h b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.inc.h index ac79f47fa..fe02d87fd 100644 --- a/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.inc.h +++ b/jerry-core/ecma/builtin-objects/typedarray/ecma-builtin-uint8clampedarray.inc.h @@ -19,6 +19,8 @@ #include "ecma-builtin-helpers-macro-defines.inc.h" +#ifndef CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN + /* ES2015 22.2.5 */ NUMBER_VALUE (LIT_MAGIC_STRING_LENGTH, 3, @@ -44,4 +46,6 @@ OBJECT_VALUE (LIT_MAGIC_STRING_PROTOTYPE, ECMA_BUILTIN_ID_UINT8CLAMPEDARRAY_PROTOTYPE, ECMA_PROPERTY_FIXED) +#endif /* !CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN */ + #include "ecma-builtin-helpers-macro-undefs.inc.h" diff --git a/jerry-core/lit/lit-magic-strings.inc.h b/jerry-core/lit/lit-magic-strings.inc.h index 966e390c9..957a4e036 100644 --- a/jerry-core/lit/lit-magic-strings.inc.h +++ b/jerry-core/lit/lit-magic-strings.inc.h @@ -13,292 +13,617 @@ * limitations under the License. */ -/* - * List of ECMA magic strings - * - * These strings must be ascii strings and needs to be defined in size order - * then by lexicographical order. The NULL character cannot be part of magic - * strings, because it must be the terminator character of all magic strings. - */ +/* This file is automatically generated by the gen-magic-strings.py script + * from lit-magic-strings.ini. Do not edit! */ + -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (0, LIT_MAGIC_STRING__EMPTY) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING__EMPTY, "") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (1, LIT_MAGIC_STRING_NEW_LINE_CHAR) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NEW_LINE_CHAR, "\n") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SPACE_CHAR, " ") -LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DOUBLE_QUOTE_CHAR,"\"") +#if !defined (CONFIG_DISABLE_JSON_BUILTIN) +LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DOUBLE_QUOTE_CHAR, "\"") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LEFT_PARENTHESIS_CHAR, "(") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RIGHT_PARENTHESIS_CHAR, ")") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_COMMA_CHAR, ",") +#if !defined (CONFIG_DISABLE_NUMBER_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MINUS_CHAR, "-") -LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DOT_CHAR, ".") +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SLASH_CHAR, "/") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_COLON_CHAR, ":") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_E_U, "E") -LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TIME_SEP_U, "T") -LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_Z_CHAR, "Z") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LEFT_SQUARE_CHAR, "[") +#if !defined (CONFIG_DISABLE_JSON_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BACKSLASH_CHAR, "\\") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RIGHT_SQUARE_CHAR, "]") +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_G_CHAR, "g") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_I_CHAR, "i") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_M_CHAR, "m") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LEFT_BRACE_CHAR, "{") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RIGHT_BRACE_CHAR, "}") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_PI_U) +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PI_U, "PI") +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_OF, "of") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (3, LIT_MAGIC_STRING_LN2_U) +#endif +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LN2_U, "LN2") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NAN, "NaN") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UTC_U, "UTC") +#endif +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ABS, "abs") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_COS, "cos") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_EXP, "exp") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET, "get") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LOG, "log") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MAP, "map") +#endif +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MAX, "max") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MIN, "min") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NOW, "now") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_POP, "pop") +#endif +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_POW, "pow") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET, "set") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SIN, "sin") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TAN, "tan") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (4, LIT_MAGIC_STRING_EMPTY_NON_CAPTURE_GROUP) +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_EMPTY_NON_CAPTURE_GROUP, "(?:)") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DATE_UL, "Date") +#if !defined (CONFIG_DISABLE_JSON_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_JSON_U, "JSON") +#endif +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LN10_U, "LN10") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MATH_UL, "Math") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NULL_UL, "Null") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ACOS, "acos") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ASIN, "asin") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ATAN, "atan") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BIND, "bind") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CALL, "call") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CEIL, "ceil") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_EVAL, "eval") +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_EXEC, "exec") +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FROM, "from") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_JOIN, "join") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_KEYS, "keys") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NAME, "name") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NULL, "null") +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PUSH, "push") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SEAL, "seal") +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SOME, "some") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SORT, "sort") +#endif +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SQRT, "sqrt") +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TEST, "test") +#endif +#if !defined (CONFIG_DISABLE_ES2015_PROMISE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_THEN, "then") +#endif +#if !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TRIM, "trim") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TRUE, "true") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (5, LIT_MAGIC_STRING_ARRAY_UL) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ARRAY_UL, "Array") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ERROR_UL, "Error") -LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_JERRY_UL, "Jerry") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LOG2E_U, "LOG2E") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SQRT2_U, "SQRT2") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_APPLY, "apply") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ATAN2, "atan2") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_EVERY, "every") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FALSE, "false") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FLOOR, "floor") +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INDEX, "index") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INPUT, "input") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS_NAN, "isNaN") +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) && !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MATCH, "match") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) \ +|| !defined (CONFIG_DISABLE_JSON_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PARSE, "parse") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PRINT, "print") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ROUND, "round") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SHIFT, "shift") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SLICE, "slice") +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) && !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SPLIT, "split") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_VALUE, "value") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (6, LIT_MAGIC_STRING_LOG10E_U) +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LOG10E_U, "LOG10E") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NUMBER_UL, "Number") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_OBJECT_UL, "Object") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REGEXP_UL, "RegExp") -LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REGEXP_SOURCE_UL, "Source") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_STRING_UL, "String") +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BUFFER, "buffer") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CALLEE, "callee") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CALLER, "caller") +#if !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CHAR_AT_UL, "charAt") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CONCAT, "concat") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CREATE, "create") +#if !defined (CONFIG_DISABLE_ANNEXB_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ESCAPE, "escape") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FILTER, "filter") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FREEZE, "freeze") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_DAY_UL, "getDay") +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GLOBAL, "global") +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS_VIEW_UL, "isView") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LENGTH, "length") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NUMBER, "number") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_OBJECT, "object") +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RANDOM, "random") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REDUCE, "reduce") +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) && !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SEARCH, "search") +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SOURCE, "source") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SPLICE, "splice") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_STRING, "string") +#if !defined (CONFIG_DISABLE_ANNEXB_BUILTIN) && !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SUBSTR, "substr") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) \ +|| !defined (CONFIG_DISABLE_JSON_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_JSON_UL, "toJSON") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (7, LIT_MAGIC_STRING_BOOLEAN_UL) +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BOOLEAN_UL, "Boolean") +#if !defined (CONFIG_DISABLE_ES2015_PROMISE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PROMISE_UL, "Promise") +#endif +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SQRT1_2_U, "SQRT1_2") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BOOLEAN, "boolean") +#if !defined (CONFIG_DISABLE_ANNEXB_BUILTIN) && !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_COMPILE, "compile") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FOR_EACH_UL, "forEach") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_DATE_UL, "getDate") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_TIME_UL, "getTime") +#endif +#if !defined (CONFIG_DISABLE_ANNEXB_BUILTIN) && !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_YEAR_UL, "getYear") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INDEX_OF_UL, "indexOf") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS_ARRAY_UL, "isArray") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MESSAGE, "message") +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) && !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REPLACE, "replace") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REVERSE, "reverse") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_DATE_UL, "setDate") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_TIME_UL, "setTime") +#endif +#if !defined (CONFIG_DISABLE_ANNEXB_BUILTIN) && !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_YEAR_UL, "setYear") +#endif +#if !defined (CONFIG_DISABLE_NUMBER_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_FIXED_UL, "toFixed") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UNSHIFT, "unshift") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_VALUE_OF_UL, "valueOf") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (8, LIT_MAGIC_STRING_FUNCTION_UL) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FUNCTION_UL, "Function") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INFINITY_UL, "Infinity") +#if !defined (CONFIG_DISABLE_ERROR_BUILTINS) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_URI_ERROR_UL, "URIError") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FUNCTION, "function") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_HOURS_UL, "getHours") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_MONTH_UL, "getMonth") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS_FINITE, "isFinite") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS_FROZEN_UL, "isFrozen") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS_SEALED_UL, "isSealed") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PARSE_INT, "parseInt") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_HOURS_UL, "setHours") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_MONTH_UL, "setMonth") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_STRING_UL, "toString") +#if !defined (CONFIG_DISABLE_ANNEXB_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UNESCAPE, "unescape") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_WRITABLE, "writable") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (9, LIT_MAGIC_STRING_NEGATIVE_INFINITY_UL) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NEGATIVE_INFINITY_UL, "-Infinity") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ARGUMENTS_UL, "Arguments") +#if !defined (CONFIG_DISABLE_ERROR_BUILTINS) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_EVAL_ERROR_UL, "EvalError") +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INT8_ARRAY_UL, "Int8Array") +#endif +#if !defined (CONFIG_DISABLE_NUMBER_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MAX_VALUE_U, "MAX_VALUE") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MIN_VALUE_U, "MIN_VALUE") +#endif +#if !defined (CONFIG_DISABLE_ERROR_BUILTINS) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TYPE_ERROR_UL, "TypeError") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UNDEFINED_UL, "Undefined") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ARGUMENTS, "arguments") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DECODE_URI, "decodeURI") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ENCODE_URI, "encodeURI") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UTC_DAY_UL, "getUTCDay") +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LASTINDEX_UL, "lastIndex") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_MULTILINE, "multiline") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PROTOTYPE, "prototype") +#if !defined (CONFIG_DISABLE_JSON_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_STRINGIFY, "stringify") +#endif +#if !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SUBSTRING, "substring") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UNDEFINED, "undefined") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_INT16_ARRAY_UL) +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INT16_ARRAY_UL, "Int16Array") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INT32_ARRAY_UL, "Int32Array") +#endif +#if !defined (CONFIG_DISABLE_ERROR_BUILTINS) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_RANGE_ERROR_UL, "RangeError") +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TYPED_ARRAY_UL, "TypedArray") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UINT8_ARRAY_UL, "Uint8Array") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BYTE_LENGTH_UL, "byteLength") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BYTE_OFFSET_UL, "byteOffset") +#endif +#if !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CHAR_CODE_AT_UL, "charCodeAt") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ENUMERABLE, "enumerable") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_MINUTES_UL, "getMinutes") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_SECONDS_UL, "getSeconds") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UTC_DATE_UL, "getUTCDate") +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IGNORECASE_UL, "ignoreCase") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PARSE_FLOAT, "parseFloat") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_MINUTES_UL, "setMinutes") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_SECONDS_UL, "setSeconds") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UTC_DATE_UL, "setUTCDate") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_ARRAY_BUFFER_UL) +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ARRAY_BUFFER_UL, "ArrayBuffer") +#endif +#if !defined (CONFIG_DISABLE_ERROR_BUILTINS) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SYNTAX_ERROR_UL, "SyntaxError") +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UINT16_ARRAY_UL, "Uint16Array") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UINT32_ARRAY_UL, "Uint32Array") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CONSTRUCTOR, "constructor") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_FULL_YEAR_UL, "getFullYear") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UTC_HOURS_UL, "getUTCHours") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UTC_MONTH_UL, "getUTCMonth") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LAST_INDEX_OF_UL, "lastIndexOf") +#endif +#if !defined (CONFIG_DISABLE_ARRAY_BUILTIN) \ +|| !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REDUCE_RIGHT_UL, "reduceRight") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) 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 !defined (CONFIG_DISABLE_ANNEXB_BUILTIN) && !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_GMT_STRING_UL, "toGMTString") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_ISO_STRING_UL, "toISOString") +#endif +#if !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_LOWER_CASE_UL, "toLowerCase") +#endif +#if !defined (CONFIG_DISABLE_NUMBER_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_PRECISION_UL, "toPrecision") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_UTC_STRING_UL, "toUTCString") +#endif +#if !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_UPPER_CASE_UL, "toUpperCase") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (12, LIT_MAGIC_STRING_FLOAT32_ARRAY_UL) +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FLOAT32_ARRAY_UL, "Float32Array") +#endif +#if CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 && !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FLOAT64_ARRAY_UL, "Float64Array") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_INVALID_DATE_UL, "Invalid Date") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_CONFIGURABLE, "configurable") +#if !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_FROM_CHAR_CODE_UL, "fromCharCode") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS_EXTENSIBLE, "isExtensible") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_DATE_STRING_UL, "toDateString") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_TIME_STRING_UL, "toTimeString") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (13, LIT_MAGIC_STRING_GET_UTC_MINUTES_UL) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UTC_MINUTES_UL, "getUTCMinutes") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UTC_SECONDS_UL, "getUTCSeconds") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_IS_PROTOTYPE_OF_UL, "isPrototypeOf") +#if !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_LOCALE_COMPARE_UL, "localeCompare") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UTC_MINUTES_UL, "setUTCMinutes") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UTC_SECONDS_UL, "setUTCSeconds") +#endif +#if !defined (CONFIG_DISABLE_NUMBER_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_EXPONENTIAL_UL, "toExponential") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (14, LIT_MAGIC_STRING_REFERENCE_ERROR_UL) +#endif +#if !defined (CONFIG_DISABLE_ERROR_BUILTINS) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_REFERENCE_ERROR_UL, "ReferenceError") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DEFINE_PROPERTY_UL, "defineProperty") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_PROTOTYPE_OF_UL, "getPrototypeOf") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UTC_FULL_YEAR_UL, "getUTCFullYear") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_HAS_OWN_PROPERTY_UL, "hasOwnProperty") +#if !defined (CONFIG_DISABLE_ES2015_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_PROTOTYPE_OF_UL, "setPrototypeOf") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UTC_FULL_YEAR_UL, "setUTCFullYear") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_LOCALE_STRING_UL, "toLocaleString") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (15, LIT_MAGIC_STRING_GET_MILLISECONDS_UL) +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_MILLISECONDS_UL, "getMilliseconds") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_MILLISECONDS_UL, "setMilliseconds") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (16, LIT_MAGIC_STRING_DEFINE_PROPERTIES_UL) +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DEFINE_PROPERTIES_UL, "defineProperties") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U) +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U, "BYTES_PER_ELEMENT") +#endif +#if !defined (CONFIG_DISABLE_NUMBER_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_NEGATIVE_INFINITY_U, "NEGATIVE_INFINITY") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_POSITIVE_INFINITY_U, "POSITIVE_INFINITY") +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL, "Uint8ClampedArray") +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_TIMEZONE_OFFSET_UL, "getTimezoneOffset") +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PREVENT_EXTENSIONS_UL, "preventExtensions") +#if !defined (CONFIG_DISABLE_STRING_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_LOCALE_LOWER_CASE_UL, "toLocaleLowerCase") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_LOCALE_UPPER_CASE_UL, "toLocaleUpperCase") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (18, LIT_MAGIC_STRING_DECODE_URI_COMPONENT) +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_DECODE_URI_COMPONENT, "decodeURIComponent") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_ENCODE_URI_COMPONENT, "encodeURIComponent") +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_UTC_MILLISECONDS_UL, "getUTCMilliseconds") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_SET_UTC_MILLISECONDS_UL, "setUTCMilliseconds") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_LOCALE_DATE_STRING_UL, "toLocaleDateString") LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_TO_LOCALE_TIME_STRING_UL, "toLocaleTimeString") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (19, LIT_MAGIC_STRING_GET_OWN_PROPERTY_NAMES_UL) +#endif LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_OWN_PROPERTY_NAMES_UL, "getOwnPropertyNames") -LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (20, LIT_MAGIC_STRING_PROPERTY_IS_ENUMERABLE_UL) LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_PROPERTY_IS_ENUMERABLE_UL, "propertyIsEnumerable") +LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTOR_UL, "getOwnPropertyDescriptor") +LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING__FUNCTION_TO_STRING, "function(){/* ecmascript */}") + +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (0, LIT_MAGIC_STRING__EMPTY) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (1, LIT_MAGIC_STRING_NEW_LINE_CHAR) +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_PI_U) +#elif !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_OF) +#elif !defined (CONFIG_DISABLE_MATH_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_LN2_U) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (2, LIT_MAGIC_STRING_NAN) +#endif +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (3, LIT_MAGIC_STRING_LN2_U) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (3, LIT_MAGIC_STRING_NAN) +#endif +#if !defined (CONFIG_DISABLE_REGEXP_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (4, LIT_MAGIC_STRING_EMPTY_NON_CAPTURE_GROUP) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (4, LIT_MAGIC_STRING_DATE_UL) +#endif +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (5, LIT_MAGIC_STRING_ARRAY_UL) +#if !defined (CONFIG_DISABLE_MATH_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (6, LIT_MAGIC_STRING_LOG10E_U) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (6, LIT_MAGIC_STRING_NUMBER_UL) +#endif +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (7, LIT_MAGIC_STRING_BOOLEAN_UL) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (8, LIT_MAGIC_STRING_FUNCTION_UL) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (9, LIT_MAGIC_STRING_NEGATIVE_INFINITY_UL) +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_INT16_ARRAY_UL) +#elif !defined (CONFIG_DISABLE_ERROR_BUILTINS) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_RANGE_ERROR_UL) +#elif !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_TYPED_ARRAY_UL) +#elif !defined (CONFIG_DISABLE_STRING_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_CHAR_CODE_AT_UL) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (10, LIT_MAGIC_STRING_ENUMERABLE) +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_ARRAY_BUFFER_UL) +#elif !defined (CONFIG_DISABLE_ERROR_BUILTINS) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_SYNTAX_ERROR_UL) +#elif !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_UINT16_ARRAY_UL) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (11, LIT_MAGIC_STRING_CONSTRUCTOR) +#endif +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (12, LIT_MAGIC_STRING_FLOAT32_ARRAY_UL) +#elif CONFIG_ECMA_NUMBER_TYPE == CONFIG_ECMA_NUMBER_FLOAT64 && !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (12, LIT_MAGIC_STRING_FLOAT64_ARRAY_UL) +#elif !defined (CONFIG_DISABLE_DATE_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (12, LIT_MAGIC_STRING_INVALID_DATE_UL) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (12, LIT_MAGIC_STRING_CONFIGURABLE) +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (13, LIT_MAGIC_STRING_GET_UTC_MINUTES_UL) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (13, LIT_MAGIC_STRING_IS_PROTOTYPE_OF_UL) +#endif +#if !defined (CONFIG_DISABLE_ERROR_BUILTINS) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (14, LIT_MAGIC_STRING_REFERENCE_ERROR_UL) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (14, LIT_MAGIC_STRING_DEFINE_PROPERTY_UL) +#endif +#if !defined (CONFIG_DISABLE_DATE_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (15, LIT_MAGIC_STRING_GET_MILLISECONDS_UL) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (15, LIT_MAGIC_STRING_DEFINE_PROPERTIES_UL) +#endif +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (16, LIT_MAGIC_STRING_DEFINE_PROPERTIES_UL) +#if !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U) +#elif !defined (CONFIG_DISABLE_NUMBER_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_NEGATIVE_INFINITY_U) +#elif !defined (CONFIG_DISABLE_ES2015_TYPEDARRAY_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL) +#elif !defined (CONFIG_DISABLE_DATE_BUILTIN) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_GET_TIMEZONE_OFFSET_UL) +#else +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (17, LIT_MAGIC_STRING_PREVENT_EXTENSIONS_UL) +#endif +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (18, LIT_MAGIC_STRING_DECODE_URI_COMPONENT) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (19, LIT_MAGIC_STRING_GET_OWN_PROPERTY_NAMES_UL) +LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (20, LIT_MAGIC_STRING_PROPERTY_IS_ENUMERABLE_UL) LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (21, LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTOR_UL) LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (22, LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTOR_UL) LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (23, LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTOR_UL) LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (24, LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTOR_UL) -LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTOR_UL, "getOwnPropertyDescriptor") LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (25, LIT_MAGIC_STRING__FUNCTION_TO_STRING) 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) LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE (28, LIT_MAGIC_STRING__FUNCTION_TO_STRING) -LIT_MAGIC_STRING_DEF (LIT_MAGIC_STRING__FUNCTION_TO_STRING, "function(){/* ecmascript */}") diff --git a/jerry-core/lit/lit-magic-strings.ini b/jerry-core/lit/lit-magic-strings.ini new file mode 100644 index 000000000..2fa3320e3 --- /dev/null +++ b/jerry-core/lit/lit-magic-strings.ini @@ -0,0 +1,271 @@ +# Copyright JS Foundation and other contributors, http://js.foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# List of ECMA magic strings +# +# These strings must be ascii strings. The NULL character cannot be part of +# magic strings, because it must be the terminator character of all magic +# strings. +# +# If the list is modified, tools/gen-magic-strings.py must be executed! + +[LIT_MAGIC_STRINGS] + +LIT_MAGIC_STRING__EMPTY = "" +LIT_MAGIC_STRING_NEW_LINE_CHAR = "\n" +LIT_MAGIC_STRING_SPACE_CHAR = " " +LIT_MAGIC_STRING_DOUBLE_QUOTE_CHAR = "\"" +LIT_MAGIC_STRING_LEFT_PARENTHESIS_CHAR = "(" +LIT_MAGIC_STRING_RIGHT_PARENTHESIS_CHAR = ")" +LIT_MAGIC_STRING_COMMA_CHAR = "," +LIT_MAGIC_STRING_MINUS_CHAR = "-" +LIT_MAGIC_STRING_SLASH_CHAR = "/" +LIT_MAGIC_STRING_COLON_CHAR = ":" +LIT_MAGIC_STRING_E_U = "E" +LIT_MAGIC_STRING_LEFT_SQUARE_CHAR = "[" +LIT_MAGIC_STRING_BACKSLASH_CHAR = "\\" +LIT_MAGIC_STRING_RIGHT_SQUARE_CHAR = "]" +LIT_MAGIC_STRING_G_CHAR = "g" +LIT_MAGIC_STRING_I_CHAR = "i" +LIT_MAGIC_STRING_M_CHAR = "m" +LIT_MAGIC_STRING_LEFT_BRACE_CHAR = "{" +LIT_MAGIC_STRING_RIGHT_BRACE_CHAR = "}" +LIT_MAGIC_STRING_PI_U = "PI" +LIT_MAGIC_STRING_OF = "of" +LIT_MAGIC_STRING_LN2_U = "LN2" +LIT_MAGIC_STRING_NAN = "NaN" +LIT_MAGIC_STRING_UTC_U = "UTC" +LIT_MAGIC_STRING_ABS = "abs" +LIT_MAGIC_STRING_COS = "cos" +LIT_MAGIC_STRING_EXP = "exp" +LIT_MAGIC_STRING_GET = "get" +LIT_MAGIC_STRING_LOG = "log" +LIT_MAGIC_STRING_MAP = "map" +LIT_MAGIC_STRING_MAX = "max" +LIT_MAGIC_STRING_MIN = "min" +LIT_MAGIC_STRING_NOW = "now" +LIT_MAGIC_STRING_POP = "pop" +LIT_MAGIC_STRING_POW = "pow" +LIT_MAGIC_STRING_SET = "set" +LIT_MAGIC_STRING_SIN = "sin" +LIT_MAGIC_STRING_TAN = "tan" +LIT_MAGIC_STRING_EMPTY_NON_CAPTURE_GROUP = "(?:)" +LIT_MAGIC_STRING_DATE_UL = "Date" +LIT_MAGIC_STRING_JSON_U = "JSON" +LIT_MAGIC_STRING_LN10_U = "LN10" +LIT_MAGIC_STRING_MATH_UL = "Math" +LIT_MAGIC_STRING_NULL_UL = "Null" +LIT_MAGIC_STRING_ACOS = "acos" +LIT_MAGIC_STRING_ASIN = "asin" +LIT_MAGIC_STRING_ATAN = "atan" +LIT_MAGIC_STRING_BIND = "bind" +LIT_MAGIC_STRING_CALL = "call" +LIT_MAGIC_STRING_CEIL = "ceil" +LIT_MAGIC_STRING_EVAL = "eval" +LIT_MAGIC_STRING_EXEC = "exec" +LIT_MAGIC_STRING_FROM = "from" +LIT_MAGIC_STRING_JOIN = "join" +LIT_MAGIC_STRING_KEYS = "keys" +LIT_MAGIC_STRING_NAME = "name" +LIT_MAGIC_STRING_NULL = "null" +LIT_MAGIC_STRING_PUSH = "push" +LIT_MAGIC_STRING_SEAL = "seal" +LIT_MAGIC_STRING_SOME = "some" +LIT_MAGIC_STRING_SORT = "sort" +LIT_MAGIC_STRING_SQRT = "sqrt" +LIT_MAGIC_STRING_TEST = "test" +LIT_MAGIC_STRING_THEN = "then" +LIT_MAGIC_STRING_TRIM = "trim" +LIT_MAGIC_STRING_TRUE = "true" +LIT_MAGIC_STRING_ARRAY_UL = "Array" +LIT_MAGIC_STRING_ERROR_UL = "Error" +LIT_MAGIC_STRING_LOG2E_U = "LOG2E" +LIT_MAGIC_STRING_SQRT2_U = "SQRT2" +LIT_MAGIC_STRING_APPLY = "apply" +LIT_MAGIC_STRING_ATAN2 = "atan2" +LIT_MAGIC_STRING_EVERY = "every" +LIT_MAGIC_STRING_FALSE = "false" +LIT_MAGIC_STRING_FLOOR = "floor" +LIT_MAGIC_STRING_INDEX = "index" +LIT_MAGIC_STRING_INPUT = "input" +LIT_MAGIC_STRING_IS_NAN = "isNaN" +LIT_MAGIC_STRING_MATCH = "match" +LIT_MAGIC_STRING_PARSE = "parse" +LIT_MAGIC_STRING_PRINT = "print" +LIT_MAGIC_STRING_ROUND = "round" +LIT_MAGIC_STRING_SHIFT = "shift" +LIT_MAGIC_STRING_SLICE = "slice" +LIT_MAGIC_STRING_SPLIT = "split" +LIT_MAGIC_STRING_VALUE = "value" +LIT_MAGIC_STRING_LOG10E_U = "LOG10E" +LIT_MAGIC_STRING_NUMBER_UL = "Number" +LIT_MAGIC_STRING_OBJECT_UL = "Object" +LIT_MAGIC_STRING_REGEXP_UL = "RegExp" +LIT_MAGIC_STRING_STRING_UL = "String" +LIT_MAGIC_STRING_BUFFER = "buffer" +LIT_MAGIC_STRING_CALLEE = "callee" +LIT_MAGIC_STRING_CALLER = "caller" +LIT_MAGIC_STRING_CHAR_AT_UL = "charAt" +LIT_MAGIC_STRING_CONCAT = "concat" +LIT_MAGIC_STRING_CREATE = "create" +LIT_MAGIC_STRING_ESCAPE = "escape" +LIT_MAGIC_STRING_FILTER = "filter" +LIT_MAGIC_STRING_FREEZE = "freeze" +LIT_MAGIC_STRING_GET_DAY_UL = "getDay" +LIT_MAGIC_STRING_GLOBAL = "global" +LIT_MAGIC_STRING_IS_VIEW_UL = "isView" +LIT_MAGIC_STRING_LENGTH = "length" +LIT_MAGIC_STRING_NUMBER = "number" +LIT_MAGIC_STRING_OBJECT = "object" +LIT_MAGIC_STRING_RANDOM = "random" +LIT_MAGIC_STRING_REDUCE = "reduce" +LIT_MAGIC_STRING_SEARCH = "search" +LIT_MAGIC_STRING_SOURCE = "source" +LIT_MAGIC_STRING_SPLICE = "splice" +LIT_MAGIC_STRING_STRING = "string" +LIT_MAGIC_STRING_SUBSTR = "substr" +LIT_MAGIC_STRING_TO_JSON_UL = "toJSON" +LIT_MAGIC_STRING_BOOLEAN_UL = "Boolean" +LIT_MAGIC_STRING_PROMISE_UL = "Promise" +LIT_MAGIC_STRING_SQRT1_2_U = "SQRT1_2" +LIT_MAGIC_STRING_BOOLEAN = "boolean" +LIT_MAGIC_STRING_COMPILE = "compile" +LIT_MAGIC_STRING_FOR_EACH_UL = "forEach" +LIT_MAGIC_STRING_GET_DATE_UL = "getDate" +LIT_MAGIC_STRING_GET_TIME_UL = "getTime" +LIT_MAGIC_STRING_GET_YEAR_UL = "getYear" +LIT_MAGIC_STRING_INDEX_OF_UL = "indexOf" +LIT_MAGIC_STRING_IS_ARRAY_UL = "isArray" +LIT_MAGIC_STRING_MESSAGE = "message" +LIT_MAGIC_STRING_REPLACE = "replace" +LIT_MAGIC_STRING_REVERSE = "reverse" +LIT_MAGIC_STRING_SET_DATE_UL = "setDate" +LIT_MAGIC_STRING_SET_TIME_UL = "setTime" +LIT_MAGIC_STRING_SET_YEAR_UL = "setYear" +LIT_MAGIC_STRING_TO_FIXED_UL = "toFixed" +LIT_MAGIC_STRING_UNSHIFT = "unshift" +LIT_MAGIC_STRING_VALUE_OF_UL = "valueOf" +LIT_MAGIC_STRING_FUNCTION_UL = "Function" +LIT_MAGIC_STRING_INFINITY_UL = "Infinity" +LIT_MAGIC_STRING_URI_ERROR_UL = "URIError" +LIT_MAGIC_STRING_FUNCTION = "function" +LIT_MAGIC_STRING_GET_HOURS_UL = "getHours" +LIT_MAGIC_STRING_GET_MONTH_UL = "getMonth" +LIT_MAGIC_STRING_IS_FINITE = "isFinite" +LIT_MAGIC_STRING_IS_FROZEN_UL = "isFrozen" +LIT_MAGIC_STRING_IS_SEALED_UL = "isSealed" +LIT_MAGIC_STRING_PARSE_INT = "parseInt" +LIT_MAGIC_STRING_SET_HOURS_UL = "setHours" +LIT_MAGIC_STRING_SET_MONTH_UL = "setMonth" +LIT_MAGIC_STRING_TO_STRING_UL = "toString" +LIT_MAGIC_STRING_UNESCAPE = "unescape" +LIT_MAGIC_STRING_WRITABLE = "writable" +LIT_MAGIC_STRING_NEGATIVE_INFINITY_UL = "-Infinity" +LIT_MAGIC_STRING_ARGUMENTS_UL = "Arguments" +LIT_MAGIC_STRING_EVAL_ERROR_UL = "EvalError" +LIT_MAGIC_STRING_INT8_ARRAY_UL = "Int8Array" +LIT_MAGIC_STRING_MAX_VALUE_U = "MAX_VALUE" +LIT_MAGIC_STRING_MIN_VALUE_U = "MIN_VALUE" +LIT_MAGIC_STRING_TYPE_ERROR_UL = "TypeError" +LIT_MAGIC_STRING_UNDEFINED_UL = "Undefined" +LIT_MAGIC_STRING_ARGUMENTS = "arguments" +LIT_MAGIC_STRING_DECODE_URI = "decodeURI" +LIT_MAGIC_STRING_ENCODE_URI = "encodeURI" +LIT_MAGIC_STRING_GET_UTC_DAY_UL = "getUTCDay" +LIT_MAGIC_STRING_LASTINDEX_UL = "lastIndex" +LIT_MAGIC_STRING_MULTILINE = "multiline" +LIT_MAGIC_STRING_PROTOTYPE = "prototype" +LIT_MAGIC_STRING_STRINGIFY = "stringify" +LIT_MAGIC_STRING_SUBSTRING = "substring" +LIT_MAGIC_STRING_UNDEFINED = "undefined" +LIT_MAGIC_STRING_INT16_ARRAY_UL = "Int16Array" +LIT_MAGIC_STRING_INT32_ARRAY_UL = "Int32Array" +LIT_MAGIC_STRING_RANGE_ERROR_UL = "RangeError" +LIT_MAGIC_STRING_TYPED_ARRAY_UL = "TypedArray" +LIT_MAGIC_STRING_UINT8_ARRAY_UL = "Uint8Array" +LIT_MAGIC_STRING_BYTE_LENGTH_UL = "byteLength" +LIT_MAGIC_STRING_BYTE_OFFSET_UL = "byteOffset" +LIT_MAGIC_STRING_CHAR_CODE_AT_UL = "charCodeAt" +LIT_MAGIC_STRING_ENUMERABLE = "enumerable" +LIT_MAGIC_STRING_GET_MINUTES_UL = "getMinutes" +LIT_MAGIC_STRING_GET_SECONDS_UL = "getSeconds" +LIT_MAGIC_STRING_GET_UTC_DATE_UL = "getUTCDate" +LIT_MAGIC_STRING_IGNORECASE_UL = "ignoreCase" +LIT_MAGIC_STRING_PARSE_FLOAT = "parseFloat" +LIT_MAGIC_STRING_SET_MINUTES_UL = "setMinutes" +LIT_MAGIC_STRING_SET_SECONDS_UL = "setSeconds" +LIT_MAGIC_STRING_SET_UTC_DATE_UL = "setUTCDate" +LIT_MAGIC_STRING_ARRAY_BUFFER_UL = "ArrayBuffer" +LIT_MAGIC_STRING_SYNTAX_ERROR_UL = "SyntaxError" +LIT_MAGIC_STRING_UINT16_ARRAY_UL = "Uint16Array" +LIT_MAGIC_STRING_UINT32_ARRAY_UL = "Uint32Array" +LIT_MAGIC_STRING_CONSTRUCTOR = "constructor" +LIT_MAGIC_STRING_GET_FULL_YEAR_UL = "getFullYear" +LIT_MAGIC_STRING_GET_UTC_HOURS_UL = "getUTCHours" +LIT_MAGIC_STRING_GET_UTC_MONTH_UL = "getUTCMonth" +LIT_MAGIC_STRING_LAST_INDEX_OF_UL = "lastIndexOf" +LIT_MAGIC_STRING_REDUCE_RIGHT_UL = "reduceRight" +LIT_MAGIC_STRING_SET_FULL_YEAR_UL = "setFullYear" +LIT_MAGIC_STRING_SET_UTC_HOURS_UL = "setUTCHours" +LIT_MAGIC_STRING_SET_UTC_MONTH_UL = "setUTCMonth" +LIT_MAGIC_STRING_TO_GMT_STRING_UL = "toGMTString" +LIT_MAGIC_STRING_TO_ISO_STRING_UL = "toISOString" +LIT_MAGIC_STRING_TO_LOWER_CASE_UL = "toLowerCase" +LIT_MAGIC_STRING_TO_PRECISION_UL = "toPrecision" +LIT_MAGIC_STRING_TO_UTC_STRING_UL = "toUTCString" +LIT_MAGIC_STRING_TO_UPPER_CASE_UL = "toUpperCase" +LIT_MAGIC_STRING_FLOAT32_ARRAY_UL = "Float32Array" +LIT_MAGIC_STRING_FLOAT64_ARRAY_UL = "Float64Array" +LIT_MAGIC_STRING_INVALID_DATE_UL = "Invalid Date" +LIT_MAGIC_STRING_CONFIGURABLE = "configurable" +LIT_MAGIC_STRING_FROM_CHAR_CODE_UL = "fromCharCode" +LIT_MAGIC_STRING_IS_EXTENSIBLE = "isExtensible" +LIT_MAGIC_STRING_TO_DATE_STRING_UL = "toDateString" +LIT_MAGIC_STRING_TO_TIME_STRING_UL = "toTimeString" +LIT_MAGIC_STRING_GET_UTC_MINUTES_UL = "getUTCMinutes" +LIT_MAGIC_STRING_GET_UTC_SECONDS_UL = "getUTCSeconds" +LIT_MAGIC_STRING_IS_PROTOTYPE_OF_UL = "isPrototypeOf" +LIT_MAGIC_STRING_LOCALE_COMPARE_UL = "localeCompare" +LIT_MAGIC_STRING_SET_UTC_MINUTES_UL = "setUTCMinutes" +LIT_MAGIC_STRING_SET_UTC_SECONDS_UL = "setUTCSeconds" +LIT_MAGIC_STRING_TO_EXPONENTIAL_UL = "toExponential" +LIT_MAGIC_STRING_REFERENCE_ERROR_UL = "ReferenceError" +LIT_MAGIC_STRING_DEFINE_PROPERTY_UL = "defineProperty" +LIT_MAGIC_STRING_GET_PROTOTYPE_OF_UL = "getPrototypeOf" +LIT_MAGIC_STRING_GET_UTC_FULL_YEAR_UL = "getUTCFullYear" +LIT_MAGIC_STRING_HAS_OWN_PROPERTY_UL = "hasOwnProperty" +LIT_MAGIC_STRING_SET_PROTOTYPE_OF_UL = "setPrototypeOf" +LIT_MAGIC_STRING_SET_UTC_FULL_YEAR_UL = "setUTCFullYear" +LIT_MAGIC_STRING_TO_LOCALE_STRING_UL = "toLocaleString" +LIT_MAGIC_STRING_GET_MILLISECONDS_UL = "getMilliseconds" +LIT_MAGIC_STRING_SET_MILLISECONDS_UL = "setMilliseconds" +LIT_MAGIC_STRING_DEFINE_PROPERTIES_UL = "defineProperties" +LIT_MAGIC_STRING_BYTES_PER_ELEMENT_U = "BYTES_PER_ELEMENT" +LIT_MAGIC_STRING_NEGATIVE_INFINITY_U = "NEGATIVE_INFINITY" +LIT_MAGIC_STRING_POSITIVE_INFINITY_U = "POSITIVE_INFINITY" +LIT_MAGIC_STRING_UINT8_CLAMPED_ARRAY_UL = "Uint8ClampedArray" +LIT_MAGIC_STRING_GET_TIMEZONE_OFFSET_UL = "getTimezoneOffset" +LIT_MAGIC_STRING_PREVENT_EXTENSIONS_UL = "preventExtensions" +LIT_MAGIC_STRING_TO_LOCALE_LOWER_CASE_UL = "toLocaleLowerCase" +LIT_MAGIC_STRING_TO_LOCALE_UPPER_CASE_UL = "toLocaleUpperCase" +LIT_MAGIC_STRING_DECODE_URI_COMPONENT = "decodeURIComponent" +LIT_MAGIC_STRING_ENCODE_URI_COMPONENT = "encodeURIComponent" +LIT_MAGIC_STRING_GET_UTC_MILLISECONDS_UL = "getUTCMilliseconds" +LIT_MAGIC_STRING_SET_UTC_MILLISECONDS_UL = "setUTCMilliseconds" +LIT_MAGIC_STRING_TO_LOCALE_DATE_STRING_UL = "toLocaleDateString" +LIT_MAGIC_STRING_TO_LOCALE_TIME_STRING_UL = "toLocaleTimeString" +LIT_MAGIC_STRING_GET_OWN_PROPERTY_NAMES_UL = "getOwnPropertyNames" +LIT_MAGIC_STRING_PROPERTY_IS_ENUMERABLE_UL = "propertyIsEnumerable" +LIT_MAGIC_STRING_GET_OWN_PROPERTY_DESCRIPTOR_UL = "getOwnPropertyDescriptor" +LIT_MAGIC_STRING__FUNCTION_TO_STRING = "function(){/* ecmascript */}" diff --git a/tools/check-magic-strings.sh b/tools/check-magic-strings.sh new file mode 100755 index 000000000..23b96e1db --- /dev/null +++ b/tools/check-magic-strings.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +# Copyright JS Foundation and other contributors, http://js.foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +MAGIC_STRINGS_GEN="tools/gen-magic-strings.py" +MAGIC_STRINGS_INC_H="jerry-core/lit/lit-magic-strings.inc.h" +MAGIC_STRINGS_TEMP=`mktemp lit-magic-strings.inc.h.XXXXXXXXXX` + +cp $MAGIC_STRINGS_INC_H $MAGIC_STRINGS_TEMP +$MAGIC_STRINGS_GEN +diff -q $MAGIC_STRINGS_INC_H $MAGIC_STRINGS_TEMP +DIFF_RESULT=$? +mv $MAGIC_STRINGS_TEMP $MAGIC_STRINGS_INC_H + +if [ $DIFF_RESULT -ne 0 ] +then + echo -e "\e[1;33m$MAGIC_STRINGS_INC_H must be re-generated. Run $MAGIC_STRINGS_GEN\e[0m" +fi + +exit $DIFF_RESULT diff --git a/tools/gen-magic-strings.py b/tools/gen-magic-strings.py new file mode 100755 index 000000000..970ab3d83 --- /dev/null +++ b/tools/gen-magic-strings.py @@ -0,0 +1,289 @@ +#!/usr/bin/env python + +# Copyright JS Foundation and other contributors, http://js.foundation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import print_function + +try: + from configparser import ConfigParser +except ImportError: + from ConfigParser import ConfigParser + +import argparse +import fileinput +import json +import os +import re + +from settings import PROJECT_DIR + + +MAGIC_STRINGS_INI = os.path.join(PROJECT_DIR, 'jerry-core', 'lit', 'lit-magic-strings.ini') +MAGIC_STRINGS_INC_H = os.path.join(PROJECT_DIR, 'jerry-core', 'lit', 'lit-magic-strings.inc.h') + + +def debug_dump(obj): + def deepcopy(obj): + if isinstance(obj, (list, tuple)): + return [deepcopy(e) for e in obj] + if isinstance(obj, set): + return [repr(e) for e in obj] + if isinstance(obj, dict): + return {repr(k): deepcopy(e) for k, e in obj.items()} + return obj + return json.dumps(deepcopy(obj), indent=4) + + +def read_magic_string_defs(debug=False): + # Read the `jerry-core/lit/lit-magic-strings.ini` file and returns the magic + # string definitions found therein in the form of + # [LIT_MAGIC_STRINGS] + # LIT_MAGIC_STRING_xxx = "vvv" + # ... + # as + # [('LIT_MAGIC_STRING_xxx', 'vvv'), ...] + # sorted by length and alpha. + ini_parser = ConfigParser() + ini_parser.optionxform = str # case sensitive options (magic string IDs) + ini_parser.read(MAGIC_STRINGS_INI) + + defs = [(str_ref, json.loads(str_value) if str_value != '' else '') + for str_ref, str_value in ini_parser.items('LIT_MAGIC_STRINGS')] + defs = sorted(defs, key=lambda ref_value: (len(ref_value[1]), ref_value[1])) + + if debug: + print('debug: magic string definitions: {dump}' + .format(dump=debug_dump(defs))) + + return defs + + +def extract_magic_string_refs(debug=False): + results = {} + + def process_line(fname, lnum, line, guard_stack): + # Build `results` dictionary as + # results['LIT_MAGIC_STRING_xxx'][('!defined (CONFIG_DISABLE_yyy_BUILTIN)', ...)] + # = [('zzz.c', 123), ...] + # meaning that the given literal is referenced under the given guards at + # the listed (file, line number) locations. + for str_ref in re.findall('LIT_MAGIC_STRING_[a-zA-Z0-9_]+', line): + if str_ref in ['LIT_MAGIC_STRING_DEF', + 'LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE', + 'LIT_MAGIC_STRING_LENGTH_LIMIT', + 'LIT_MAGIC_STRING__COUNT']: + continue + + guard_set = set() + for guards in guard_stack: + guard_set.update(guards) + guard_tuple = tuple(sorted(guard_set)) + + if str_ref not in results: + results[str_ref] = {} + str_guards = results[str_ref] + + if guard_tuple not in str_guards: + str_guards[guard_tuple] = [] + file_list = str_guards[guard_tuple] + + file_list.append((fname, lnum)) + + def process_guard(guard): + # Transform `#ifndef MACRO` to `#if !defined (MACRO)` and + # `#ifdef MACRO` to `#if defined (MACRO)` to enable or-ing/and-ing the + # conditions later on. + if guard.startswith('ndef '): + guard = guard.replace('ndef ', '!defined (', 1) + ')' + elif guard.startswith('def '): + guard = guard.replace('def ', 'defined (', 1) + ')' + return guard + + def process_file(fname): + # Builds `guard_stack` list for each line of a file as + # [['!defined (CONFIG_DISABLE_yyy_BUILTIN)', ...], ...] + # meaning that all the listed guards (conditionals) have to hold for the + # line to be kept by the preprocessor. + guard_stack = [] + + for line in fileinput.input(fname): + if_match = re.match('^# *if(.*)', line) + elif_match = re.match('^# *elif(.*)', line) + else_match = re.match('^# *else', line) + endif_match = re.match('^# *endif', line) + if if_match is not None: + guard_stack.append([process_guard(if_match.group(1))]) + elif elif_match is not None: + guards = guard_stack[-1] + guards[-1] = '!(%s)' % guards[-1] + guards.append(process_guard(elif_match.group(1))) + elif else_match is not None: + guards = guard_stack[-1] + guards[-1] = '!(%s)' % guards[-1] + elif endif_match is not None: + guard_stack.pop() + + lnum = fileinput.filelineno() + process_line(fname, lnum, line, guard_stack) + + if guard_stack: + print('warning: {fname}: unbalanced preprocessor conditional ' + 'directives (analysis finished with no closing `#endif` ' + 'for {guard_stack})' + .format(fname=fname, guard_stack=guard_stack)) + + for root, _, files in os.walk(os.path.join(PROJECT_DIR, 'jerry-core')): + for fname in files: + if (fname.endswith('.c') or fname.endswith('.h')) \ + and fname != 'lit-magic-strings.inc.h': + process_file(os.path.join(root, fname)) + + if debug: + print('debug: magic string references: {dump}' + .format(dump=debug_dump(results))) + + return results + + +def calculate_magic_string_guards(defs, uses, debug=False): + extended_defs = [] + + for str_ref, str_value in defs: + if str_ref not in uses: + print('warning: unused magic string {str_ref}' + .format(str_ref=str_ref)) + continue + + # Calculate the most compact guard, i.e., if a magic string is + # referenced under various guards, keep the one that is more generic. + # E.g., + # guard1 = A and B and C and D and E and F + # guard2 = A and B and C + # then guard1 or guard2 == guard2. + guards = [set(guard_tuple) for guard_tuple in uses[str_ref].keys()] + for i, guard_i in enumerate(guards): + if guard_i is None: + continue + for j, guard_j in enumerate(guards): + if j == i or guard_j is None: + continue + if guard_i < guard_j: + guards[j] = None + guards = {tuple(sorted(guard)) for guard in guards if guard is not None} + + extended_defs.append((str_ref, str_value, guards)) + + if debug: + print('debug: magic string definitions (with guards): {dump}' + .format(dump=debug_dump(extended_defs))) + + return extended_defs + + +def guards_to_str(guards): + return ' \\\n|| '.join(' && '.join(g for g in sorted(guard)) + for guard in sorted(guards)) + + +def generate_header(gen_file): + header = \ +"""/* Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* This file is automatically generated by the %s script + * from %s. Do not edit! */ +""" % (os.path.basename(__file__), os.path.basename(MAGIC_STRINGS_INI)) + print(header, file=gen_file) + + +def generate_magic_string_defs(gen_file, defs): + print(file=gen_file) # empty line separator + + last_guards = set([()]) + for str_ref, str_value, guards in defs: + if last_guards != guards: + if () not in last_guards: + print('#endif', file=gen_file) + if () not in guards: + print('#if {guards}'.format(guards=guards_to_str(guards)), file=gen_file) + + print('LIT_MAGIC_STRING_DEF ({str_ref}, {str_value})' + .format(str_ref=str_ref, str_value=json.dumps(str_value)), file=gen_file) + + last_guards = guards + + if () not in last_guards: + print('#endif', file=gen_file) + + +def generate_first_magic_strings(gen_file, defs): + print(file=gen_file) # empty line separator + + max_size = len(defs[-1][1]) + for size in range(max_size + 1): + last_guards = set([()]) + for str_ref, str_value, guards in defs: + if len(str_value) >= size: + if () not in guards and () in last_guards: + print('#if {guards}'.format(guards=guards_to_str(guards)), file=gen_file) + elif () not in guards and () not in last_guards: + if guards == last_guards: + continue + print('#elif {guards}'.format(guards=guards_to_str(guards)), file=gen_file) + elif () in guards and () not in last_guards: + print('#else', file=gen_file) + + print('LIT_MAGIC_STRING_FIRST_STRING_WITH_SIZE ({size}, {str_ref})' + .format(size=size, str_ref=str_ref), file=gen_file) + + if () in guards: + break + + last_guards = guards + + if () not in last_guards: + print('#endif', file=gen_file) + + +def main(): + parser = argparse.ArgumentParser(description='lit-magic-strings.inc.h generator') + parser.add_argument('--debug', action='store_true', help='enable debug output') + args = parser.parse_args() + + defs = read_magic_string_defs(debug=args.debug) + uses = extract_magic_string_refs(debug=args.debug) + + extended_defs = calculate_magic_string_guards(defs, uses, debug=args.debug) + + with open(MAGIC_STRINGS_INC_H, 'w') as gen_file: + generate_header(gen_file) + generate_magic_string_defs(gen_file, extended_defs) + generate_first_magic_strings(gen_file, extended_defs) + + +if __name__ == '__main__': + main() diff --git a/tools/run-tests.py b/tools/run-tests.py index 5c4d9b01d..fbbd31330 100755 --- a/tools/run-tests.py +++ b/tools/run-tests.py @@ -142,6 +142,8 @@ def get_arguments(): parser.add_argument('--check-pylint', action='store_true', default=False, help='Run pylint') parser.add_argument('--check-vera', action='store_true', default=False, help='Run vera check') parser.add_argument('--check-license', action='store_true', default=False, help='Run license check') + parser.add_argument('--check-magic-strings', action='store_true', default=False, + help='Run "magic string source code generator should be executed" check') parser.add_argument('--buildoption-test', action='store_true', default=False, help='Run buildoption-test') parser.add_argument('--jerry-debugger', action='store_true', default=False, help='Run jerry-debugger tests') parser.add_argument('--jerry-tests', action='store_true', default=False, help='Run jerry-tests') @@ -350,6 +352,9 @@ def main(options): if not ret and (options.all or options.check_license): ret = run_check([settings.LICENSE_SCRIPT]) + if not ret and (options.all or options.check_magic_strings): + ret = run_check([settings.MAGIC_STRINGS_SCRIPT]) + if not ret and (options.all or options.jerry_debugger): ret = run_jerry_debugger_tests(options) diff --git a/tools/settings.py b/tools/settings.py index f0cfe6f71..d0344eec6 100755 --- a/tools/settings.py +++ b/tools/settings.py @@ -31,6 +31,7 @@ DEBUGGER_CLIENT_SCRIPT = path.join(PROJECT_DIR, 'jerry-debugger/jerry-client-ws. DEBUGGER_TEST_RUNNER_SCRIPT = path.join(TOOLS_DIR, 'runners/run-debugger-test.sh') DOXYGEN_SCRIPT = path.join(TOOLS_DIR, 'check-doxygen.sh') LICENSE_SCRIPT = path.join(TOOLS_DIR, 'check-license.py') +MAGIC_STRINGS_SCRIPT = path.join(TOOLS_DIR, 'check-magic-strings.sh') PYLINT_SCRIPT = path.join(TOOLS_DIR, 'check-pylint.sh') SIGNED_OFF_SCRIPT = path.join(TOOLS_DIR, 'check-signed-off.sh') TEST_RUNNER_SCRIPT = path.join(TOOLS_DIR, 'runners/run-test-suite.sh')