2 static char rcsid[] = "$Id: state.c,v 0.3 1994/06/24 13:28:10 ceriel Exp $";
16 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
17 * See the copyright notice in the ACK home directory, in the file "Copyright".
19 * Author: Hans van Staveren
22 extern int nstab; /* salloc.c */
24 savestatus(sp) register state_p sp; {
26 sp->st_sh = stackheight;
27 bmove((short *)fakestack,(short *)sp->st_fs,stackheight*sizeof(token_t));
29 bmove((short *)allreg,(short *)sp->st_ar,nallreg*sizeof(int));
31 bmove((short *)dollar,(short *)sp->st_do,LONGESTPATTERN*sizeof(result_t));
32 bmove((short *)machregs,(short *)sp->st_mr,NREGS*sizeof(struct reginfo));
34 bmove((short *)emlines,(short *)sp->st_el,nemlines*sizeof(struct emline));
37 sp->st_tl = tokpatlen;
41 restorestatus(sp) register state_p sp; {
43 stackheight = sp->st_sh;
44 bmove((short *)sp->st_fs,(short *)fakestack,stackheight*sizeof(token_t));
46 bmove((short *)sp->st_ar,(short *)allreg,nallreg*sizeof(int));
48 bmove((short *)sp->st_do,(short *)dollar,LONGESTPATTERN*sizeof(result_t));
49 bmove((short *)sp->st_mr,(short *)machregs,NREGS*sizeof(struct reginfo));
51 bmove((short *)sp->st_el,(short *)emlines,nemlines*sizeof(struct emline));
54 tokpatlen = sp->st_tl;
58 bmove(from,to,nbytes) register short *from,*to; register nbytes; {
62 assert(sizeof(short)==2 && (nbytes&1)==0);