Remove some unnecessary write barriers for better performance.
This commit is contained in:
parent
32952e9aa4
commit
075cbac672
12
interp.c
12
interp.c
|
|
@ -246,17 +246,11 @@ static value_t make_lambda(interp_state_t *state, value_t templ)
|
|||
|
||||
/* All but the instance variables are just shallow-copied. */
|
||||
ls->slots[LAMBDA_SLOT_GLOBAL_VARS] = ts->slots[TEMPLATE_SLOT_GLOBAL_VARS];
|
||||
WRITE_BARRIER(lambda_root.value);
|
||||
ls->slots[LAMBDA_SLOT_FRAME_VARS] = ts->slots[TEMPLATE_SLOT_FRAME_VARS];
|
||||
WRITE_BARRIER(lambda_root.value);
|
||||
ls->slots[LAMBDA_SLOT_BYTE_CODE] = ts->slots[TEMPLATE_SLOT_BYTE_CODE];
|
||||
WRITE_BARRIER(lambda_root.value);
|
||||
ls->slots[LAMBDA_SLOT_TAIL_CALL] = ts->slots[TEMPLATE_SLOT_TAIL_CALL];
|
||||
WRITE_BARRIER(lambda_root.value);
|
||||
ls->slots[LAMBDA_SLOT_ARG_LIST] = ts->slots[TEMPLATE_SLOT_ARG_LIST];
|
||||
WRITE_BARRIER(lambda_root.value);
|
||||
ls->slots[LAMBDA_SLOT_CONTINUATION] = ts->slots[TEMPLATE_SLOT_CONTINUATION];
|
||||
WRITE_BARRIER(lambda_root.value);
|
||||
ls->slots[LAMBDA_SLOT_CONTEXT] = ts->slots[TEMPLATE_SLOT_CONTEXT];
|
||||
WRITE_BARRIER(lambda_root.value);
|
||||
|
||||
|
|
@ -266,8 +260,8 @@ static value_t make_lambda(interp_state_t *state, value_t templ)
|
|||
for (size_t i = 0; i < t_inst->size; ++i)
|
||||
{
|
||||
l_inst->elements[i] = get_input(state, t_inst->bytes[i]);
|
||||
WRITE_BARRIER(object_value(l_inst));
|
||||
}
|
||||
WRITE_BARRIER(object_value(l_inst));
|
||||
|
||||
unregister_gc_root(&templ_root);
|
||||
unregister_gc_root(&lambda_root);
|
||||
|
|
@ -507,6 +501,10 @@ static void run_statement(interp_state_t *state, uint8_t code, uint8_t in1, uint
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* IMPORTANT: It is assumed that get_input() does not trigger garbage collection.
|
||||
* If this were to change additional write barriers and/or GC roots may be required.
|
||||
*/
|
||||
static value_t get_input(const interp_state_t *state, fixnum_t var)
|
||||
{
|
||||
release_assert((var >= 0) && (var <= 255));
|
||||
|
|
|
|||
Loading…
Reference in New Issue