Пример #1
0
void sync_sched::do_yield()
    {
      if(debug_driver)
         fprintf(stderr,"[sync: svc_yield] yield");
      active->push_back(ft);
      pop_current();
    }
Пример #2
0
void sync_sched::forget_current()
  {
     if(ft) 
     {
       collector->remove_root(ft);
       pop_current();
    }
  }
Пример #3
0
static void    	trace_back(const char *file, const char *func, int line)
{
  info_node	*tmp;

  fprintf(stderr, "!!! TRACE_BACK !!!\n");
  fprintf(stderr, "\tDispatched in file '%s' in function '%s' at line '%d'\n",
	  file, func, line);
  for (tmp = list->origin; tmp != NULL; tmp = tmp->next)
    if (tmp->next != NULL)
      fprintf(stderr, "\tDispatched in file '%s' in function '%s' at line '%d'\n",
	      tmp->file, tmp->func, tmp->line);
    else
      fprintf(stderr, "\tComming from file '%s' in function '%s' at line '%d'\n",
	      tmp->file, tmp->func, tmp->line);
  fprintf(stderr, "Uncaught exception: (%s): '%s'\n", list->type->name, M(list->obj, toString));
  pop_current();
  __exit_end_func(-1);
  exit(42);
}
Пример #4
0
void		__except_throw_func(const Type *type, Object obj, const char *file, const char *func, int line)
{
  info_node	*node;

  while (list != NULL && (list->caught == CAUGHT || list->status >= IN_FINALLY))
    {
      if (list->next == NULL)
	trace_back(file, func, line);
      if (list->obj == obj)
	list->obj = NULL;
      pop_current();
    }
  if (list == NULL)
    {
      fprintf(stderr, "Uncaught exception: in file '%s' in func '%s' at line '%d'\n\
(%s): '%s'\n", file, func, line, type->name, M(obj, toString));
      __delete_func(obj, 0, 0);
      __exit_end_func(-1);
      exit(42);
    }