Skip to content

Commit db26cb2

Browse files
committed
Optimize 'lit_get_magic_string_size' calls
Calculate magic string length sizes in compile time. JerryScript-DCO-1.0-Signed-off-by: László Langó llango.u-szeged@partner.samsung.com
1 parent b2426a7 commit db26cb2

File tree

3 files changed

+11
-44
lines changed

3 files changed

+11
-44
lines changed

jerry-core/lit/lit-literal.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@ lit_init (void)
3131

3232
rcs_chunked_list_init (&rcs_lit_storage);
3333

34-
lit_magic_strings_init ();
3534
lit_magic_strings_ex_init ();
3635
} /* lit_init */
3736

jerry-core/lit/lit-magic-strings.c

Lines changed: 11 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -17,51 +17,13 @@
1717

1818
#include "lit-strings.h"
1919

20-
/**
21-
* Lengths of magic strings
22-
*/
23-
static lit_magic_size_t lit_magic_string_sizes[LIT_MAGIC_STRING__COUNT];
24-
2520
/**
2621
* External magic strings data array, count and lengths
2722
*/
2823
static const lit_utf8_byte_t **lit_magic_string_ex_array = NULL;
2924
static uint32_t lit_magic_string_ex_count = 0;
3025
static const lit_utf8_size_t *lit_magic_string_ex_sizes = NULL;
3126

32-
#ifndef JERRY_NDEBUG
33-
/**
34-
* Maximum length among lengths of magic strings
35-
*/
36-
static ecma_length_t ecma_magic_string_max_length;
37-
#endif /* JERRY_NDEBUG */
38-
39-
/**
40-
* Initialize data for string helpers
41-
*/
42-
void
43-
lit_magic_strings_init (void)
44-
{
45-
/* Initializing magic strings information */
46-
47-
#ifndef JERRY_NDEBUG
48-
ecma_magic_string_max_length = 0;
49-
#endif /* !JERRY_NDEBUG */
50-
51-
for (lit_magic_string_id_t id = (lit_magic_string_id_t) 0;
52-
id < LIT_MAGIC_STRING__COUNT;
53-
id = (lit_magic_string_id_t) (id + 1))
54-
{
55-
lit_magic_string_sizes[id] = (lit_magic_size_t) lit_zt_utf8_string_size (lit_get_magic_string_utf8 (id));
56-
57-
#ifndef JERRY_NDEBUG
58-
ecma_magic_string_max_length = JERRY_MAX (ecma_magic_string_max_length, lit_magic_string_sizes[id]);
59-
60-
JERRY_ASSERT (ecma_magic_string_max_length <= LIT_MAGIC_STRING_LENGTH_LIMIT);
61-
#endif /* !JERRY_NDEBUG */
62-
}
63-
} /* lit_magic_strings_init */
64-
6527
/**
6628
* Initialize external magic strings
6729
*/
@@ -114,6 +76,16 @@ lit_get_magic_string_utf8 (lit_magic_string_id_t id) /**< magic string id */
11476
lit_utf8_size_t
11577
lit_get_magic_string_size (lit_magic_string_id_t id) /**< magic string id */
11678
{
79+
static const lit_magic_size_t lit_magic_string_sizes[] =
80+
{
81+
#define LIT_MAGIC_STRING_DEF(id, utf8_string) \
82+
sizeof(utf8_string) - 1,
83+
#include "lit-magic-strings.inc.h"
84+
#undef LIT_MAGIC_STRING_DEF
85+
};
86+
87+
JERRY_ASSERT (id < LIT_MAGIC_STRING__COUNT);
88+
11789
return lit_magic_string_sizes[id];
11890
} /* lit_get_magic_string_size */
11991

@@ -172,10 +144,7 @@ lit_magic_strings_ex_set (const lit_utf8_byte_t **ex_str_items, /**< character a
172144
id = (lit_magic_string_ex_id_t) (id + 1))
173145
{
174146
JERRY_ASSERT (lit_magic_string_ex_sizes[id] == lit_zt_utf8_string_size (lit_get_magic_string_ex_utf8 (id)));
175-
176-
ecma_magic_string_max_length = JERRY_MAX (ecma_magic_string_max_length, lit_magic_string_ex_sizes[id]);
177-
178-
JERRY_ASSERT (ecma_magic_string_max_length <= LIT_MAGIC_STRING_LENGTH_LIMIT);
147+
JERRY_ASSERT (lit_magic_string_ex_sizes[id] <= LIT_MAGIC_STRING_LENGTH_LIMIT);
179148
}
180149
#endif /* !JERRY_NDEBUG */
181150
} /* lit_magic_strings_ex_set */

jerry-core/lit/lit-magic-strings.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@ typedef enum
4141
*/
4242
typedef uint32_t lit_magic_string_ex_id_t;
4343

44-
extern void lit_magic_strings_init (void);
4544
extern void lit_magic_strings_ex_init (void);
4645

4746
extern uint32_t lit_get_magic_string_ex_count (void);

0 commit comments

Comments
 (0)