… | |
… | |
969 | if (SCHEME_V->no_memory && USE_ERROR_CHECKING) |
969 | if (SCHEME_V->no_memory && USE_ERROR_CHECKING) |
970 | return S_SINK; |
970 | return S_SINK; |
971 | |
971 | |
972 | if (SCHEME_V->free_cell == NIL) |
972 | if (SCHEME_V->free_cell == NIL) |
973 | { |
973 | { |
974 | const int min_to_be_recovered = SCHEME_V->cell_segsize [SCHEME_V->last_cell_seg] >> 2; |
974 | const int min_to_be_recovered = SCHEME_V->cell_segsize [SCHEME_V->last_cell_seg] >> 1; |
975 | |
975 | |
976 | gc (SCHEME_A_ a, b); |
976 | gc (SCHEME_A_ a, b); |
977 | |
977 | |
978 | if (SCHEME_V->fcells < min_to_be_recovered || SCHEME_V->free_cell == NIL) |
978 | if (SCHEME_V->fcells < min_to_be_recovered || SCHEME_V->free_cell == NIL) |
979 | { |
979 | { |
… | |
… | |
4199 | else |
4199 | else |
4200 | Error_0 ("modulo: division by zero"); |
4200 | Error_0 ("modulo: division by zero"); |
4201 | |
4201 | |
4202 | s_return (mk_number (SCHEME_A_ v)); |
4202 | s_return (mk_number (SCHEME_A_ v)); |
4203 | |
4203 | |
4204 | case OP_CAR: /* car */ |
4204 | /* the compiler will optimize this mess... */ |
4205 | s_return (caar (args)); |
4205 | case OP_CAR: op_car: s_return (car (x)); |
4206 | |
4206 | case OP_CDR: op_cdr: s_return (cdr (x)); |
4207 | case OP_CDR: /* cdr */ |
4207 | case OP_CAAR: op_caar: x = car (x); goto op_car; |
4208 | s_return (cdar (args)); |
4208 | case OP_CADR: op_cadr: x = cdr (x); goto op_car; |
|
|
4209 | case OP_CDAR: op_cdar: x = car (x); goto op_cdr; |
|
|
4210 | case OP_CDDR: op_cddr: x = cdr (x); goto op_cdr; |
|
|
4211 | case OP_CAAAR: op_caaar: x = car (x); goto op_caar; |
|
|
4212 | case OP_CAADR: op_caadr: x = cdr (x); goto op_caar; |
|
|
4213 | case OP_CADAR: op_cadar: x = car (x); goto op_cadr; |
|
|
4214 | case OP_CADDR: op_caddr: x = cdr (x); goto op_cadr; |
|
|
4215 | case OP_CDAAR: op_cdaar: x = car (x); goto op_cdar; |
|
|
4216 | case OP_CDADR: op_cdadr: x = cdr (x); goto op_cdar; |
|
|
4217 | case OP_CDDAR: op_cddar: x = car (x); goto op_cddr; |
|
|
4218 | case OP_CDDDR: op_cdddr: x = cdr (x); goto op_cddr; |
|
|
4219 | case OP_CAAAAR: x = car (x); goto op_caaar; |
|
|
4220 | case OP_CAAADR: x = cdr (x); goto op_caaar; |
|
|
4221 | case OP_CAADAR: x = car (x); goto op_caadr; |
|
|
4222 | case OP_CAADDR: x = cdr (x); goto op_caadr; |
|
|
4223 | case OP_CADAAR: x = car (x); goto op_cadar; |
|
|
4224 | case OP_CADADR: x = cdr (x); goto op_cadar; |
|
|
4225 | case OP_CADDAR: x = car (x); goto op_caddr; |
|
|
4226 | case OP_CADDDR: x = cdr (x); goto op_caddr; |
|
|
4227 | case OP_CDAAAR: x = car (x); goto op_cdaar; |
|
|
4228 | case OP_CDAADR: x = cdr (x); goto op_cdaar; |
|
|
4229 | case OP_CDADAR: x = car (x); goto op_cdadr; |
|
|
4230 | case OP_CDADDR: x = cdr (x); goto op_cdadr; |
|
|
4231 | case OP_CDDAAR: x = car (x); goto op_cddar; |
|
|
4232 | case OP_CDDADR: x = cdr (x); goto op_cddar; |
|
|
4233 | case OP_CDDDAR: x = car (x); goto op_cdddr; |
|
|
4234 | case OP_CDDDDR: x = cdr (x); goto op_cdddr; |
4209 | |
4235 | |
4210 | case OP_CONS: /* cons */ |
4236 | case OP_CONS: /* cons */ |
4211 | set_cdr (args, cadr (args)); |
4237 | set_cdr (args, cadr (args)); |
4212 | s_return (args); |
4238 | s_return (args); |
4213 | |
4239 | |