Added place_obj->dead to detect places that terminate normally

This commit is contained in:
Kevin Tew 2011-11-30 18:08:06 -07:00
parent 288e84ff8d
commit 903eb9ec32
2 changed files with 4 additions and 1 deletions

View File

@ -225,6 +225,7 @@ Scheme_Object *scheme_make_place_object() {
place_obj->so.type = scheme_place_object_type;
mzrt_mutex_create(&place_obj->lock);
place_obj->die = 0;
place_obj->dead = 0;
place_obj->refcount = 1;
place_obj->pbreak = 0;
place_obj->result = 1;
@ -579,7 +580,7 @@ static int place_deadp(Scheme_Object *place) {
{
mzrt_mutex_lock(place_obj->lock);
dead = place_obj->die;
dead = place_obj->die | place_obj->dead;
mzrt_mutex_unlock(place_obj->lock);
}
@ -2193,6 +2194,7 @@ static void place_set_result(Scheme_Object *result)
scheme_signal_received_at(place_object->parent_signal_handle);
place_object->parent_signal_handle = NULL;
place_object->signal_handle = NULL;
place_object->dead = 1;
mzrt_mutex_unlock(place_object->lock);
}

View File

@ -3728,6 +3728,7 @@ typedef struct Scheme_Place_Object {
mzrt_sema *pause;
#endif
char die;
char dead;
char pbreak;
char pausing;
intptr_t refcount;