Introduce parser-time optimization that replaces a function's local variables with registers.

JerryScript-DCO-1.0-Signed-off-by: Ruben Ayrapetyan r.ayrapetyan@samsung.com
This commit is contained in:
Ruben Ayrapetyan
2015-08-21 14:19:04 +03:00
parent 91aecc3bd0
commit 5b9ce05491
11 changed files with 360 additions and 65 deletions
+11 -2
View File
@@ -76,7 +76,9 @@ vm_stack_get_top_frame (void)
void
vm_stack_add_frame (vm_stack_frame_t *frame_p, /**< frame to initialize */
ecma_value_t *regs_p, /**< array of register variables' values */
int32_t regs_num) /**< number of register variables */
int32_t regs_num, /**< total number of register variables */
int32_t local_vars_regs_num) /**< number of register variables,
* used for local variables */
{
frame_p->prev_frame_p = vm_stack_top_frame_p;
vm_stack_top_frame_p = frame_p;
@@ -87,10 +89,17 @@ vm_stack_add_frame (vm_stack_frame_t *frame_p, /**< frame to initialize */
frame_p->regs_p = regs_p;
frame_p->regs_number = regs_num;
for (int32_t i = 0; i < regs_num; i++)
for (int32_t i = 0; i < regs_num - local_vars_regs_num; i++)
{
regs_p[i] = ecma_make_simple_value (ECMA_SIMPLE_VALUE_EMPTY);
}
for (int32_t i = regs_num - local_vars_regs_num;
i < regs_num;
i++)
{
regs_p[i] = ecma_make_simple_value (ECMA_SIMPLE_VALUE_UNDEFINED);
}
} /* vm_stack_add_frame */
/**