1343 |
(args) |
(args) |
1344 |
Lisp_Object args; |
Lisp_Object args; |
1345 |
{ |
{ |
|
Lisp_Object val; |
|
|
struct catchtag c; |
|
|
struct handler h; |
|
1346 |
register Lisp_Object bodyform, handlers; |
register Lisp_Object bodyform, handlers; |
1347 |
volatile Lisp_Object var; |
volatile Lisp_Object var; |
1348 |
|
|
1349 |
var = Fcar (args); |
var = Fcar (args); |
1350 |
bodyform = Fcar (Fcdr (args)); |
bodyform = Fcar (Fcdr (args)); |
1351 |
handlers = Fcdr (Fcdr (args)); |
handlers = Fcdr (Fcdr (args)); |
1352 |
|
|
1353 |
|
return internal_lisp_condition_case (var, bodyform, handlers); |
1354 |
|
} |
1355 |
|
|
1356 |
|
/* Like Fcondition_case, but the args are separate |
1357 |
|
rather than passed in a list. Used by Fbyte_code. */ |
1358 |
|
|
1359 |
|
Lisp_Object |
1360 |
|
internal_lisp_condition_case (var, bodyform, handlers) |
1361 |
|
volatile Lisp_Object var; |
1362 |
|
Lisp_Object bodyform, handlers; |
1363 |
|
{ |
1364 |
|
Lisp_Object val; |
1365 |
|
struct catchtag c; |
1366 |
|
struct handler h; |
1367 |
|
|
1368 |
CHECK_SYMBOL (var); |
CHECK_SYMBOL (var); |
1369 |
|
|
1370 |
for (val = handlers; CONSP (val); val = XCDR (val)) |
for (val = handlers; CONSP (val); val = XCDR (val)) |
2107 |
return form; |
return form; |
2108 |
|
|
2109 |
QUIT; |
QUIT; |
2110 |
if (consing_since_gc > gc_cons_threshold |
if ((consing_since_gc > gc_cons_threshold |
2111 |
&& consing_since_gc > gc_relative_threshold) |
&& consing_since_gc > gc_relative_threshold) |
2112 |
|
|| |
2113 |
|
(!NILP (Vmemory_full) && consing_since_gc > memory_full_cons_threshold)) |
2114 |
{ |
{ |
2115 |
GCPRO1 (form); |
GCPRO1 (form); |
2116 |
Fgarbage_collect (); |
Fgarbage_collect (); |
2810 |
register int i; |
register int i; |
2811 |
|
|
2812 |
QUIT; |
QUIT; |
2813 |
if (consing_since_gc > gc_cons_threshold |
if ((consing_since_gc > gc_cons_threshold |
2814 |
&& consing_since_gc > gc_relative_threshold) |
&& consing_since_gc > gc_relative_threshold) |
2815 |
|
|| |
2816 |
|
(!NILP (Vmemory_full) && consing_since_gc > memory_full_cons_threshold)) |
2817 |
Fgarbage_collect (); |
Fgarbage_collect (); |
2818 |
|
|
2819 |
if (++lisp_eval_depth > max_lisp_eval_depth) |
if (++lisp_eval_depth > max_lisp_eval_depth) |