enhanced the gc finalization process a bit more

This commit is contained in:
hyunghwan.chung
2017-07-25 15:26:04 +00:00
parent 447012b214
commit a46113abad
5 changed files with 237 additions and 127 deletions

View File

@ -808,13 +808,14 @@ struct moo_semaphore_t
moo_oop_t io_mask; /* SmallInteger */
};
#define MOO_PROCESS_SCHEDULER_NAMED_INSTVARS 7
#define MOO_PROCESS_SCHEDULER_NAMED_INSTVARS 8
typedef struct moo_process_scheduler_t moo_process_scheduler_t;
typedef struct moo_process_scheduler_t* moo_oop_process_scheduler_t;
struct moo_process_scheduler_t
{
MOO_OBJ_HEADER;
moo_oop_process_t active; /* pointer to an active process in the runnable process list */
moo_oop_t total_count; /* SmallIntger, total number of processes - runnable/running/suspended */
struct
{
@ -825,7 +826,7 @@ struct moo_process_scheduler_t
struct
{
moo_oop_t count; /* SmallInteger */
moo_oop_t count; /* SmallInteger - suspended*/
moo_oop_process_t first;
moo_oop_process_t last;
} suspended;
@ -1171,6 +1172,11 @@ struct moo_t
moo_oow_t sem_io_capa;
moo_oow_t sem_io_wait_count;
/* semaphore to notify finalizable objects */
moo_oop_semaphore_t sem_gcfin;
int sem_gcfin_sigreq;
moo_oow_t sem_gcfin_count;
moo_oop_t* tmp_stack[256]; /* stack for temporaries */
moo_oow_t tmp_count;