From 6ebb944530a307bef86d12d0bf08ca919f95ba4c Mon Sep 17 00:00:00 2001 From: Lyb <1576988680@qq.com> Date: Sat, 2 Apr 2022 10:49:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4jerryscript=E5=A0=86=E5=A4=A7?= =?UTF-8?q?=E5=B0=8F=E4=B8=BA=E5=8F=AF=E9=85=8D=E7=BD=AE=EF=BC=8C=E4=BF=9D?= =?UTF-8?q?=E8=AF=81=E5=85=B6=E5=8F=AF=E5=9C=A8RAM=E8=BE=83=E5=B0=8F?= =?UTF-8?q?=E7=9A=84=E5=BC=80=E5=8F=91=E6=9D=BF=E4=B8=8A=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/language/jerryscript/Kconfig | 6 ++++++ .../language/jerryscript/jerry_port/jerry_main.c | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/components/language/jerryscript/Kconfig b/components/language/jerryscript/Kconfig index b2816b3e4..6d80d8797 100644 --- a/components/language/jerryscript/Kconfig +++ b/components/language/jerryscript/Kconfig @@ -5,3 +5,9 @@ config LOSCFG_COMPONENTS_JERRYSCRIPT help Answer y to enable Jerryscript. +config JERRY_GLOBAL_HEAP_SIZE + int "Jerryscript Head Size" + depends on LOSCFG_COMPONENTS_JERRYSCRIPT + default 10 + help + Heap size occupied by jerryscript runtime. diff --git a/components/language/jerryscript/jerry_port/jerry_main.c b/components/language/jerryscript/jerry_port/jerry_main.c index 8698072f5..6a15e87fa 100644 --- a/components/language/jerryscript/jerry_port/jerry_main.c +++ b/components/language/jerryscript/jerry_port/jerry_main.c @@ -38,6 +38,7 @@ #include "jerry_main.h" #include "jerryscript.h" #include "jerryscript-ext/handler.h" +#include "jerryscript-port-default.h" #ifdef __cplusplus #if __cplusplus @@ -54,6 +55,12 @@ static void Usage(void) printf(" FILE input JS file\n"); } +static void *contextAlloc(size_t size, void *pCbData) +{ + (void)pCbData; + return malloc(size); +} + jerry_value_t JerryExit(const jerry_value_t function_obj, const jerry_value_t this_val, const jerry_value_t args_p[], const jerry_length_t args_count) { @@ -113,6 +120,11 @@ static int JerryEntry(int argc, char *argv[]) const char *filePath = argv[1]; uint32_t parseOpts = JERRY_PARSE_NO_OPTS; +#ifdef JERRY_GLOBAL_HEAP_SIZE + jerry_context_t *pContext = jerry_create_context(JERRY_GLOBAL_HEAP_SIZE * 1024, contextAlloc, NULL); // 1024: 1M + jerry_port_default_set_current_context(pContext); +#endif + jerry_init(JERRY_INIT_EMPTY); /* Initialize engine */ jerryx_handler_register_global((const jerry_char_t *)"print", jerryx_handler_print); jerryx_handler_register_global((const jerry_char_t *)"assert", JerryAssert); @@ -149,6 +161,9 @@ static int JerryEntry(int argc, char *argv[]) jerry_release_value(retValue); jerry_cleanup(); +#ifdef JERRY_GLOBAL_HEAP_SIZE + free(pContext); +#endif return 0; } -- Gitee