28 |
|
|
29 |
#include "include.h" |
#include "include.h" |
30 |
|
|
31 |
|
void |
32 |
Fblock(args) |
Fblock(object args) |
|
object args; |
|
33 |
{ |
{ |
34 |
object endp_temp; |
object endp_temp; |
35 |
object *oldlex = lex_env; |
object *oldlex = lex_env; |
43 |
id = alloc_frame_id(); |
id = alloc_frame_id(); |
44 |
vs_push(id); |
vs_push(id); |
45 |
lex_block_bind(MMcar(args), id); |
lex_block_bind(MMcar(args), id); |
46 |
vs_pop; |
vs_popp; |
47 |
frs_push(FRS_CATCH, id); |
frs_push(FRS_CATCH, id); |
48 |
if (nlj_active) |
if (nlj_active) |
49 |
nlj_active = FALSE; |
nlj_active = FALSE; |
65 |
lex_env = oldlex; |
lex_env = oldlex; |
66 |
} |
} |
67 |
|
|
68 |
Freturn_from(args) |
void |
69 |
object args; |
Freturn_from(object args) |
70 |
{ |
{ |
71 |
object endp_temp; |
object endp_temp; |
72 |
object lex_block; |
object lex_block; |
92 |
/* never reached */ |
/* never reached */ |
93 |
} |
} |
94 |
|
|
95 |
Freturn(args) |
void |
96 |
object args; |
Freturn(object args) |
97 |
{ |
{ |
98 |
object lex_block; |
object lex_block; |
99 |
object endp_temp; |
object endp_temp; |
116 |
/* never reached */ |
/* never reached */ |
117 |
} |
} |
118 |
|
|
119 |
init_block() |
void |
120 |
|
init_block(void) |
121 |
{ |
{ |
122 |
sLblock = make_special_form("BLOCK", Fblock); |
sLblock = make_special_form("BLOCK", Fblock); |
123 |
enter_mark_origin(&sLblock); |
enter_mark_origin(&sLblock); |