70 |
(defun c2unwind-protect (form body |
(defun c2unwind-protect (form body |
71 |
&aux (*vs* *vs*) (loc (list 'vs (vs-push))) |
&aux (*vs* *vs*) (loc (list 'vs (vs-push))) |
72 |
top-data) |
top-data) |
73 |
(wt-nl "{object tag;frame_ptr fr;object p;bool active;") |
;;; exchanged following two lines to eliminate setjmp clobbering warning |
74 |
(wt-nl "frs_push(FRS_PROTECT,Cnil);") |
(wt-nl "frs_push(FRS_PROTECT,Cnil);") |
75 |
|
(wt-nl "{object tag=Cnil;frame_ptr fr=NULL;object p;bool active;") |
76 |
(wt-nl "if(nlj_active){tag=nlj_tag;fr=nlj_fr;active=TRUE;}") |
(wt-nl "if(nlj_active){tag=nlj_tag;fr=nlj_fr;active=TRUE;}") |
77 |
(wt-nl "else{") |
(wt-nl "else{") |
78 |
(let ((*value-to-go* 'top) |
(let ((*value-to-go* 'top) |
118 |
(wt-nl "if(fr==NULL) FEerror(\"The tag ~s is undefined.\",1," loc ");") |
(wt-nl "if(fr==NULL) FEerror(\"The tag ~s is undefined.\",1," loc ");") |
119 |
(let ((*value-to-go* 'top)) (c2expr* val)) |
(let ((*value-to-go* 'top)) (c2expr* val)) |
120 |
(wt-nl "unwind(fr," loc ");}") |
(wt-nl "unwind(fr," loc ");}") |
121 |
|
; (wt-nl "return Cnil;}") |
122 |
) |
) |
123 |
|
|
124 |
|
|