vm: separate 'current_gc_p' from 'current_gc'
The 'current_gc' handle doesn't need to be volatile, just the state of GC-nessdb4
parent
4d39e59054
commit
73845fdad9
|
@ -155,6 +155,7 @@ void factor_vm::gc(gc_op op, cell requested_size, bool trace_contexts_p)
|
||||||
assert(!data->high_fragmentation_p());
|
assert(!data->high_fragmentation_p());
|
||||||
|
|
||||||
current_gc = new gc_state(op,this);
|
current_gc = new gc_state(op,this);
|
||||||
|
atomic::store(¤t_gc_p, true);
|
||||||
|
|
||||||
/* Keep trying to GC higher and higher generations until we don't run
|
/* Keep trying to GC higher and higher generations until we don't run
|
||||||
out of space in the target generation. */
|
out of space in the target generation. */
|
||||||
|
@ -217,6 +218,7 @@ void factor_vm::gc(gc_op op, cell requested_size, bool trace_contexts_p)
|
||||||
|
|
||||||
end_gc();
|
end_gc();
|
||||||
|
|
||||||
|
atomic::store(¤t_gc_p, false);
|
||||||
delete current_gc;
|
delete current_gc;
|
||||||
current_gc = NULL;
|
current_gc = NULL;
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,8 @@ factor_vm::factor_vm() :
|
||||||
safepoint_fep_p(false),
|
safepoint_fep_p(false),
|
||||||
gc_off(false),
|
gc_off(false),
|
||||||
current_gc(NULL),
|
current_gc(NULL),
|
||||||
|
current_gc_p(false),
|
||||||
|
current_jit_p(false),
|
||||||
gc_events(NULL),
|
gc_events(NULL),
|
||||||
fep_p(false),
|
fep_p(false),
|
||||||
fep_help_was_shown(false),
|
fep_help_was_shown(false),
|
||||||
|
|
|
@ -91,7 +91,11 @@ struct factor_vm
|
||||||
callback_heap *callbacks;
|
callback_heap *callbacks;
|
||||||
|
|
||||||
/* Only set if we're performing a GC */
|
/* Only set if we're performing a GC */
|
||||||
volatile gc_state *current_gc;
|
gc_state *current_gc;
|
||||||
|
volatile cell current_gc_p;
|
||||||
|
|
||||||
|
/* Set if we're in the jit */
|
||||||
|
volatile cell current_jit_p;
|
||||||
|
|
||||||
/* Mark stack */
|
/* Mark stack */
|
||||||
std::vector<cell> mark_stack;
|
std::vector<cell> mark_stack;
|
||||||
|
|
Loading…
Reference in New Issue