Reduce the size of vm_frame_ctx_t. (#2886)
The reference to the previous context is only used by the debugger and the backtrace info, so this element should not be part of the structure by default. JerryScript-DCO-1.0-Signed-off-by: Robert Fancsik frobert@inf.u-szeged.hu
This commit is contained in:
committed by
Dániel Bátyai
parent
78657e667d
commit
b707c3f8da
@@ -47,7 +47,9 @@ typedef struct vm_frame_ctx_t
|
|||||||
ecma_value_t *stack_top_p; /**< stack top pointer */
|
ecma_value_t *stack_top_p; /**< stack top pointer */
|
||||||
ecma_value_t *literal_start_p; /**< literal list start pointer */
|
ecma_value_t *literal_start_p; /**< literal list start pointer */
|
||||||
ecma_object_t *lex_env_p; /**< current lexical environment */
|
ecma_object_t *lex_env_p; /**< current lexical environment */
|
||||||
|
#if defined (JERRY_DEBUGGER) || defined (JERRY_ENABLE_LINE_INFO)
|
||||||
struct vm_frame_ctx_t *prev_context_p; /**< previous context */
|
struct vm_frame_ctx_t *prev_context_p; /**< previous context */
|
||||||
|
#endif /* defined (JERRY_DEBUGGER) || defined (JERRY_ENABLE_LINE_INFO) */
|
||||||
ecma_value_t this_binding; /**< this binding */
|
ecma_value_t this_binding; /**< this binding */
|
||||||
ecma_value_t block_result; /**< block result */
|
ecma_value_t block_result; /**< block result */
|
||||||
#if ENABLED (JERRY_LINE_INFO)
|
#if ENABLED (JERRY_LINE_INFO)
|
||||||
|
|||||||
+4
-1
@@ -3552,6 +3552,7 @@ vm_execute (vm_frame_ctx_t *frame_ctx_p, /**< frame context */
|
|||||||
|
|
||||||
JERRY_CONTEXT (status_flags) &= (uint32_t) ~ECMA_STATUS_DIRECT_EVAL;
|
JERRY_CONTEXT (status_flags) &= (uint32_t) ~ECMA_STATUS_DIRECT_EVAL;
|
||||||
|
|
||||||
|
vm_frame_ctx_t *prev_context_p = JERRY_CONTEXT (vm_top_context_p);
|
||||||
JERRY_CONTEXT (vm_top_context_p) = frame_ctx_p;
|
JERRY_CONTEXT (vm_top_context_p) = frame_ctx_p;
|
||||||
|
|
||||||
vm_init_loop (frame_ctx_p);
|
vm_init_loop (frame_ctx_p);
|
||||||
@@ -3602,7 +3603,7 @@ vm_execute (vm_frame_ctx_t *frame_ctx_p, /**< frame context */
|
|||||||
JERRY_CONTEXT (vm_recursion_counter)++;
|
JERRY_CONTEXT (vm_recursion_counter)++;
|
||||||
#endif /* defined (JERRY_VM_RECURSION_LIMIT) && (JERRY_VM_RECURSION_LIMIT != 0) */
|
#endif /* defined (JERRY_VM_RECURSION_LIMIT) && (JERRY_VM_RECURSION_LIMIT != 0) */
|
||||||
|
|
||||||
JERRY_CONTEXT (vm_top_context_p) = frame_ctx_p->prev_context_p;
|
JERRY_CONTEXT (vm_top_context_p) = prev_context_p;
|
||||||
return completion_value;
|
return completion_value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3662,7 +3663,9 @@ vm_run (const ecma_compiled_code_t *bytecode_header_p, /**< byte-code data heade
|
|||||||
frame_ctx.byte_code_p = (uint8_t *) literal_p;
|
frame_ctx.byte_code_p = (uint8_t *) literal_p;
|
||||||
frame_ctx.byte_code_start_p = (uint8_t *) literal_p;
|
frame_ctx.byte_code_start_p = (uint8_t *) literal_p;
|
||||||
frame_ctx.lex_env_p = lex_env_p;
|
frame_ctx.lex_env_p = lex_env_p;
|
||||||
|
#if defined (JERRY_DEBUGGER) || defined (JERRY_ENABLE_LINE_INFO)
|
||||||
frame_ctx.prev_context_p = JERRY_CONTEXT (vm_top_context_p);
|
frame_ctx.prev_context_p = JERRY_CONTEXT (vm_top_context_p);
|
||||||
|
#endif /* defined (JERRY_DEBUGGER) || defined (JERRY_ENABLE_LINE_INFO) */
|
||||||
frame_ctx.this_binding = this_binding_value;
|
frame_ctx.this_binding = this_binding_value;
|
||||||
frame_ctx.block_result = ECMA_VALUE_UNDEFINED;
|
frame_ctx.block_result = ECMA_VALUE_UNDEFINED;
|
||||||
#if ENABLED (JERRY_LINE_INFO)
|
#if ENABLED (JERRY_LINE_INFO)
|
||||||
|
|||||||
Reference in New Issue
Block a user