28 |
|
|
29 |
#include "include.h" |
#include "include.h" |
30 |
|
|
31 |
Fcatch(args) |
void |
32 |
object args; |
Fcatch(object args) |
33 |
{ |
{ |
34 |
object endp_temp; |
object endp_temp; |
35 |
|
|
36 |
object *top = vs_top; |
object *top = vs_top; |
|
object tag; |
|
37 |
|
|
38 |
if (endp(args)) |
if (endp(args)) |
39 |
FEtoo_few_argumentsF(args); |
FEtoo_few_argumentsF(args); |
57 |
SI:ERROR-SET traps the jump and returns the corresponding jump tag as its \ |
SI:ERROR-SET traps the jump and returns the corresponding jump tag as its \ |
58 |
value.") |
value.") |
59 |
(x0) |
(x0) |
60 |
object x0; |
volatile object x0; |
61 |
{ |
{ |
|
object *old_base = vs_base; |
|
|
object *value_top; |
|
62 |
object *old_lex = lex_env; |
object *old_lex = lex_env; |
63 |
|
|
64 |
/* 1 args */ |
/* 1 args */ |
88 |
return Cnil; |
return Cnil; |
89 |
} |
} |
90 |
|
|
91 |
Funwind_protect(args) |
void |
92 |
object args; |
Funwind_protect(object args) |
93 |
{ |
{ |
94 |
object endp_temp; |
object endp_temp; |
95 |
|
|
101 |
if (nlj_active) { |
if (nlj_active) { |
102 |
object tag = nlj_tag; |
object tag = nlj_tag; |
103 |
frame_ptr fr = nlj_fr; |
frame_ptr fr = nlj_fr; |
|
object *base; |
|
104 |
|
|
105 |
value_top = vs_top; |
value_top = vs_top; |
106 |
vs_top = top; |
vs_top = top; |
134 |
} |
} |
135 |
} |
} |
136 |
|
|
137 |
Fthrow(args) |
void |
138 |
object args; |
Fthrow(object args) |
139 |
{ |
{ |
140 |
object endp_temp; |
object endp_temp; |
141 |
|
|
158 |
/* never reached */ |
/* never reached */ |
159 |
} |
} |
160 |
|
|
161 |
init_catch() |
void |
162 |
|
init_catch(void) |
163 |
{ |
{ |
164 |
make_special_form("CATCH", Fcatch); |
make_special_form("CATCH", Fcatch); |
165 |
make_special_form("UNWIND-PROTECT", Funwind_protect); |
make_special_form("UNWIND-PROTECT", Funwind_protect); |