aboutsummaryrefslogtreecommitdiff
path: root/jerry-core
diff options
context:
space:
mode:
authorLászló Langó <llango.u-szeged@partner.samsung.com>2018-07-16 08:13:18 +0200
committeryichoi <duddlf.choi@samsung.com>2018-07-16 15:13:18 +0900
commit5f4a220a6525593ff87076f64b9b78590118fbc4 (patch)
treeb0ccdae5ccb87044559140c1fa8793961873fe76 /jerry-core
parentf86d7459d195c8ba58479d1861b0cc726c8b3793 (diff)
Added literal list loading feature to the snapshot tool. (#2422)
It is needed to load literals and register them as magic strings to be able to generate static snapshots. Also modified the list format saving feature to save all of the literals not only the identifiers. JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com
Diffstat (limited to 'jerry-core')
-rw-r--r--jerry-core/api/jerry-snapshot.c19
-rw-r--r--jerry-core/lit/lit-magic-strings.c6
-rw-r--r--jerry-core/lit/lit-magic-strings.h5
3 files changed, 19 insertions, 11 deletions
diff --git a/jerry-core/api/jerry-snapshot.c b/jerry-core/api/jerry-snapshot.c
index a24eb2b9..ec5531ab 100644
--- a/jerry-core/api/jerry-snapshot.c
+++ b/jerry-core/api/jerry-snapshot.c
@@ -1633,9 +1633,15 @@ jerry_parse_and_save_literals (const jerry_char_t *source_p, /**< script source
{
ecma_string_t *literal_p = ecma_get_string_from_value (*iterator_p);
- /* We don't save a literal which isn't a valid identifier or it's a magic string. */
+ /* NOTE:
+ * We don't save a literal (in C format) which isn't a valid
+ * identifier or it's a magic string.
+ * TODO:
+ * Save all of the literals in C format as well.
+ */
if (ecma_get_string_magic (literal_p) == LIT_MAGIC_STRING__COUNT
- && ecma_string_is_valid_identifier (literal_p))
+ && (!is_c_format
+ || (is_c_format && ecma_string_is_valid_identifier (literal_p))))
{
literal_count++;
}
@@ -1666,8 +1672,15 @@ jerry_parse_and_save_literals (const jerry_char_t *source_p, /**< script source
{
ecma_string_t *literal_p = ecma_get_string_from_value (*iterator_p);
+ /* NOTE:
+ * We don't save a literal (in C format) which isn't a valid
+ * identifier or it's a magic string.
+ * TODO:
+ * Save all of the literals in C format as well.
+ */
if (ecma_get_string_magic (literal_p) == LIT_MAGIC_STRING__COUNT
- && ecma_string_is_valid_identifier (literal_p))
+ && (!is_c_format
+ || (is_c_format && ecma_string_is_valid_identifier (literal_p))))
{
literal_array[literal_idx++] = literal_p;
}
diff --git a/jerry-core/lit/lit-magic-strings.c b/jerry-core/lit/lit-magic-strings.c
index 78d10981..aee9837e 100644
--- a/jerry-core/lit/lit-magic-strings.c
+++ b/jerry-core/lit/lit-magic-strings.c
@@ -151,9 +151,7 @@ lit_magic_strings_ex_set (const lit_utf8_byte_t **ex_str_items, /**< character a
id < JERRY_CONTEXT (lit_magic_string_ex_count);
id = (lit_magic_string_ex_id_t) (id + 1))
{
- lit_utf8_size_t string_size = lit_zt_utf8_string_size (lit_get_magic_string_ex_utf8 (id));
- JERRY_ASSERT (JERRY_CONTEXT (lit_magic_string_ex_sizes)[id] == string_size);
- JERRY_ASSERT (JERRY_CONTEXT (lit_magic_string_ex_sizes)[id] <= LIT_MAGIC_STRING_LENGTH_LIMIT);
+ lit_utf8_size_t string_size = JERRY_CONTEXT (lit_magic_string_ex_sizes)[id];
/**
* Check whether the strings are sorted by size and lexicographically,
@@ -163,6 +161,8 @@ lit_magic_strings_ex_set (const lit_utf8_byte_t **ex_str_items, /**< character a
{
const lit_magic_string_ex_id_t prev_id = id - 1;
const lit_utf8_size_t prev_string_size = lit_get_magic_string_ex_size (prev_id);
+ JERRY_ASSERT (lit_is_valid_cesu8_string (lit_get_magic_string_ex_utf8 (id),
+ string_size));
JERRY_ASSERT (prev_string_size <= string_size);
if (prev_string_size == string_size)
diff --git a/jerry-core/lit/lit-magic-strings.h b/jerry-core/lit/lit-magic-strings.h
index 940330e1..c4a40107 100644
--- a/jerry-core/lit/lit-magic-strings.h
+++ b/jerry-core/lit/lit-magic-strings.h
@@ -19,11 +19,6 @@
#include "lit-globals.h"
/**
- * Limit for magic string length
- */
-#define LIT_MAGIC_STRING_LENGTH_LIMIT 32
-
-/**
* Identifiers of ECMA and implementation-defined magic string constants
*/
typedef enum