From 76a1fc567458ba61601795c4b70140ae331c5467 Mon Sep 17 00:00:00 2001 From: Robert Fancsik Date: Mon, 13 May 2019 16:07:39 +0200 Subject: [PATCH] Support external context in the snapshot tool (#2870) This patch fixes #2869. JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu --- jerry-main/main-unix-snapshot.c | 29 +++++++++++++++++++++++++++++ jerry-main/main-unix.c | 2 +- 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/jerry-main/main-unix-snapshot.c b/jerry-main/main-unix-snapshot.c index 62a5fa31b..a13e133b3 100644 --- a/jerry-main/main-unix-snapshot.c +++ b/jerry-main/main-unix-snapshot.c @@ -46,6 +46,20 @@ static const char *output_file_name_p = "js.snapshot"; static jerry_length_t magic_string_lengths[JERRY_LITERAL_LENGTH]; static const jerry_char_t *magic_string_items[JERRY_LITERAL_LENGTH]; +#ifdef JERRY_ENABLE_EXTERNAL_CONTEXT +/** + * The alloc function passed to jerry_create_context + */ +static void * +context_alloc (size_t size, + void *cb_data_p) +{ + (void) cb_data_p; /* unused */ + return malloc (size); +} /* context_alloc */ + +#endif /* JERRY_ENABLE_EXTERNAL_CONTEXT */ + /** * Check whether JerryScript has a requested feature enabled or not. If not, * print a warning message. @@ -294,6 +308,11 @@ process_generate (cli_state_t *cli_state_p, /**< cli state */ return JERRY_STANDALONE_EXIT_CODE_FAIL; } +#ifdef JERRY_ENABLE_EXTERNAL_CONTEXT + jerry_context_t *context_p = jerry_create_context (CONFIG_MEM_HEAP_AREA_SIZE, context_alloc, NULL); + jerry_port_default_set_current_context (context_p); +#endif /* JERRY_ENABLE_EXTERNAL_CONTEXT */ + jerry_init (flags); if (!jerry_is_valid_utf8_string (source_p, (jerry_size_t) source_length)) @@ -497,6 +516,11 @@ process_literal_dump (cli_state_t *cli_state_p, /**< cli state */ return JERRY_STANDALONE_EXIT_CODE_FAIL; } +#ifdef JERRY_ENABLE_EXTERNAL_CONTEXT + jerry_context_t *context_p = jerry_create_context (CONFIG_MEM_HEAP_AREA_SIZE, context_alloc, NULL); + jerry_port_default_set_current_context (context_p); +#endif /* JERRY_ENABLE_EXTERNAL_CONTEXT */ + jerry_init (JERRY_INIT_EMPTY); size_t lit_buf_sz = 0; @@ -661,6 +685,11 @@ process_merge (cli_state_t *cli_state_p, /**< cli state */ return JERRY_STANDALONE_EXIT_CODE_FAIL; } +#ifdef JERRY_ENABLE_EXTERNAL_CONTEXT + jerry_context_t *context_p = jerry_create_context (CONFIG_MEM_HEAP_AREA_SIZE, context_alloc, NULL); + jerry_port_default_set_current_context (context_p); +#endif /* JERRY_ENABLE_EXTERNAL_CONTEXT */ + jerry_init (JERRY_INIT_EMPTY); const char *error_p = NULL; diff --git a/jerry-main/main-unix.c b/jerry-main/main-unix.c index 9b4cacc8e..1650f14ec 100644 --- a/jerry-main/main-unix.c +++ b/jerry-main/main-unix.c @@ -668,7 +668,7 @@ main (int argc, #ifdef JERRY_ENABLE_EXTERNAL_CONTEXT - jerry_context_t *context_p = jerry_create_context (512*1024, context_alloc, NULL); + jerry_context_t *context_p = jerry_create_context (CONFIG_MEM_HEAP_AREA_SIZE, context_alloc, NULL); jerry_port_default_set_current_context (context_p); #endif /* JERRY_ENABLE_EXTERNAL_CONTEXT */