[gforth] / gforth / unix / pthread.fs  

gforth: gforth/unix/pthread.fs

Diff for /gforth/unix/pthread.fs between version 1.21 and 1.22

version 1.21, Fri Mar 23 20:49:44 2012 UTC version 1.22, Fri Mar 23 21:48:06 2012 UTC
Line 113 
Line 113 
     \c #ifndef HAS_BACKLINK      \c #ifndef HAS_BACKLINK
     \c   void *(*gforth_pointers)(Cell) = saved_gforth_pointers;      \c   void *(*gforth_pointers)(Cell) = saved_gforth_pointers;
     \c #endif      \c #endif
       \c   Cell signal_data_stack[24];
       \c   Cell signal_return_stack[16];
       \c   Float signal_fp_stack[1];
       \c   void *ip0=(void*)(t->save_task);
       \c   Cell *sp0=(Cell*)(t->sp0)-1;
       \c   Cell *rp0=(Cell*)(t->rp0);
       \c   Float *fp0=(Float*)(t->fp0);
       \c   void *lp0=(void*)(t->lp0);
       \c
     \c   pthread_cleanup_push(&gforth_cleanup_thread, (void*)t);      \c   pthread_cleanup_push(&gforth_cleanup_thread, (void*)t);
     \c      \c
     \c   throw_jmp_handler = &throw_jmp_buf;      \c   throw_jmp_handler = &throw_jmp_buf;
       \c   ((Cell*)(t->sp0))[-1]=(Cell)t;
     \c      \c
     \c   if ((throw_code=setjmp(*throw_jmp_handler))) {      \c   while((throw_code=setjmp(*throw_jmp_handler))) {
     \c     static Cell signal_data_stack[24];  
     \c     static Cell signal_return_stack[16];  
     \c     static Float signal_fp_stack[1];  
     \c  
     \c     signal_data_stack[15]=throw_code;      \c     signal_data_stack[15]=throw_code;
     \c     x=gforth_engine((Cell*)(t->throw_entry), signal_data_stack+15,      \c     ip0=(void*)(t->throw_entry);
     \c                     signal_return_stack+16, signal_fp_stack, 0);      \c     sp0=signal_data_stack+15;
     \c   } else {      \c     rp0=signal_return_stack+16;
     \c     ((Cell*)(t->sp0))[-1]=(Cell)t;      \c     fp0=signal_fp_stack;
     \c     x=gforth_engine((void*)(t->save_task), (Cell*)(t->sp0)-1, (Cell*)(t->rp0), (Float*)(t->fp0), (void*)(t->lp0));  
     \c   }      \c   }
       \c   x=gforth_engine(ip0, sp0, rp0, fp0, lp0);
     \c   pthread_cleanup_pop(1);      \c   pthread_cleanup_pop(1);
     \c   return x;      \c   return x;
     \c }      \c }


Generate output suitable for use with a patch program
Legend:
Removed from v.1.21  
changed lines
  Added in v.1.22

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help