[API] Introduce jerry_parse_and_save_literals() (#1500)
This function can be used to save literals into a specific file in a list or C format. These literals are valid identifiers, and doesn't match to any magic-string. The '--save-literals-list-format FILE' and '--save-literals-c-format FILE' options are used to save into the given file, when the snapshot-save is enabled. The saved literals are sorted by size and lexicographically. The C-format is useful for jerry_register_magic_strings() to generate the array of external magic strings. JerryScript-DCO-1.0-Signed-off-by: Zsolt Borbély zsborbely.u-szeged@partner.samsung.com
This commit is contained in:
@@ -299,6 +299,7 @@ jerry_register_magic_strings (const jerry_char_ptr_t *ex_str_items_p,
|
||||
|
||||
- [jerry_init](#jerry_init)
|
||||
- [jerry_cleanup](#jerry_cleanup)
|
||||
- [jerry_parse_and_save_literals](#jerry_parse_and_save_literals)
|
||||
|
||||
|
||||
## jerry_get_memory_limits
|
||||
@@ -3250,3 +3251,67 @@ jerry_exec_snapshot (const void *snapshot_p,
|
||||
- [jerry_init](#jerry_init)
|
||||
- [jerry_cleanup](#jerry_cleanup)
|
||||
- [jerry_parse_and_save_snapshot](#jerry_parse_and_save_snapshot)
|
||||
|
||||
|
||||
## jerry_parse_and_save_literals
|
||||
|
||||
**Summary**
|
||||
|
||||
Collect the used literals from the given source code and save them into a specific file in a list or C format.
|
||||
These literals are generated by the parser, they are valid identifiers and none of them are magic string.
|
||||
|
||||
**Prototype**
|
||||
|
||||
```c
|
||||
size_t
|
||||
jerry_parse_and_save_literals (const jerry_char_t *source_p,
|
||||
size_t source_size,
|
||||
bool is_strict,
|
||||
uint8_t *buffer_p,
|
||||
size_t buffer_size,
|
||||
bool is_c_format);
|
||||
```
|
||||
|
||||
- `source_p` - script source, it must be a valid utf8 string.
|
||||
- `source_size` - script source size, in bytes.
|
||||
- `is_strict` - strict mode.
|
||||
- `buffer_p` - buffer to save literals to.
|
||||
- `buffer_size` - the buffer's size.
|
||||
- `is_c_format` - the output format would be C-style (true) or a simple list (false).
|
||||
- return value
|
||||
- the size of the literal-list, if it was generated succesfully (i.e. the list of literals isn't empty,
|
||||
and literal-save support is enabled in current configuration through JERRY_ENABLE_SNAPSHOT_SAVE)
|
||||
- 0 otherwise.
|
||||
|
||||
**Example**
|
||||
|
||||
```c
|
||||
{
|
||||
jerry_init (JERRY_INIT_EMPTY);
|
||||
|
||||
static uint8_t save_literal_buffer[1024];
|
||||
const jerry_char_t *code_for_literal_save_p = "var obj = { a:'aa', bb:'Bb' }";
|
||||
|
||||
size_t literal_sizes = jerry_parse_and_save_literals (code_for_literal_save_p,
|
||||
strlen ((const char *) code_for_literal_save_p),
|
||||
false,
|
||||
save_literal_buffer,
|
||||
sizeof (save_literal_buffer),
|
||||
true);
|
||||
|
||||
if (literal_sizes != 0)
|
||||
{
|
||||
FILE *literal_file_p = fopen ("literals.txt", "w");
|
||||
fwrite (save_literal_buffer, sizeof (uint8_t), literal_sizes, literal_file_p);
|
||||
fclose (literal_file_p);
|
||||
}
|
||||
|
||||
jerry_cleanup ();
|
||||
}
|
||||
```
|
||||
|
||||
**See also**
|
||||
|
||||
- [jerry_init](#jerry_init)
|
||||
- [jerry_cleanup](#jerry_cleanup)
|
||||
- [jerry_register_magic_strings](#jerry_register_magic_strings)
|
||||
|
||||
Reference in New Issue
Block a user