From 48c42251d5d09718a2bb3430bbc0c5310123d2e6 Mon Sep 17 00:00:00 2001 From: Gavin1012 Date: Mon, 7 Mar 2022 11:36:37 +0800 Subject: [PATCH] make context records array with dynamic size Signed-off-by: Gavin1012 --- jerry-core/api/jerryscript_adapter.c | 13 +++++++++++++ jerry-core/include/jerryscript_adapter.h | 1 + jerry-port/default/default-external-context.c | 6 ++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/jerry-core/api/jerryscript_adapter.c b/jerry-core/api/jerryscript_adapter.c index 1b751f5a..9b102735 100644 --- a/jerry-core/api/jerryscript_adapter.c +++ b/jerry-core/api/jerryscript_adapter.c @@ -18,11 +18,16 @@ #include "jerryscript.h" #include "jmem.h" #include "config-jupiter.h" +#include "generate-bytecode.h" +#include "los_task.h" + +#define MAX_CONTEXT_NUM (g_taskMaxNum+1) uint8_t* input_buffer; uint8_t* snapshot_buffer; uint8_t* bms_context_and_heap; uint8_t* js_context_and_heap; +ContextRecord* g_contextRecords; void JerryPsRamMemInit() { @@ -42,4 +47,12 @@ void JerryBmsPsRamMemInit() bms_context_and_heap = OhosMalloc(MEM_TYPE_JERRY_LSRAM, BMS_TASK_CONTEXT_AND_HEAP_SIZE * CONVERTION_RATIO); } +void JerryInitContextRecords() +{ + g_contextRecords = (ContextRecord*)OhosMalloc(MEM_TYPE_JERRY, (MAX_CONTEXT_NUM) * sizeof(ContextRecord)); + if (g_contextRecords == NULL) { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, "[JERRYSCRIPT]Init g_contextRecords Error.\n"); + } +} + #endif // JERRY_IAR_JUPITER diff --git a/jerry-core/include/jerryscript_adapter.h b/jerry-core/include/jerryscript_adapter.h index dd8d63bf..5af4e82f 100755 --- a/jerry-core/include/jerryscript_adapter.h +++ b/jerry-core/include/jerryscript_adapter.h @@ -14,6 +14,7 @@ extern "C" void JerryPsRamMemInit(); void JerryBmsPsRamMemInit(); +void JerryInitContextRecords(); #ifdef __cplusplus } diff --git a/jerry-port/default/default-external-context.c b/jerry-port/default/default-external-context.c index c08363ee..46ac88dc 100755 --- a/jerry-port/default/default-external-context.c +++ b/jerry-port/default/default-external-context.c @@ -24,13 +24,11 @@ extern jerry_context_t *jerry_dynamic_global_context_p; #include "generate-bytecode.h" #include "los_task.h" -#include "target_config.h" /** - * use array to record the correspondence between task id and jerry-heap/context + * use dynamic size array to record the correspondence between task id and jerry-heap/context */ -#define MAX_CONTEXT_NUM (LOSCFG_BASE_CORE_TSK_LIMIT+1) -ContextRecord g_contextRecords[MAX_CONTEXT_NUM] = {0}; +extern ContextRecord* g_contextRecords; void jerry_switch_context(); -- Gitee