# HG changeset patch # User Kim F. Storm # Date 1152798218 0 # Node ID a0954041b6958b4a7c7f34ab9ccdf9522267d1a8 # Parent 5ccd38cf83f43e92f31d6aa07bf5dd2cc944b879 (Fbyte_code): Use CAR, CDR for Bcar, Bcdr. Use CAR_SAFE, CDR_SAFE for Bcar_safe, Bcdr_safe. Simplify loops and use CAR for Bnth and Belt. diff -r 5ccd38cf83f4 -r a0954041b695 src/bytecode.c --- a/src/bytecode.c Thu Jul 13 13:43:26 2006 +0000 +++ b/src/bytecode.c Thu Jul 13 13:43:38 2006 +0000 @@ -541,12 +541,7 @@ { Lisp_Object v1; v1 = TOP; - if (CONSP (v1)) - TOP = XCAR (v1); - else if (NILP (v1)) - TOP = Qnil; - else - wrong_type_argument (Qlistp, v1); + TOP = CAR (v1); break; } @@ -572,12 +567,7 @@ { Lisp_Object v1; v1 = TOP; - if (CONSP (v1)) - TOP = XCDR (v1); - else if (NILP (v1)) - TOP = Qnil; - else - wrong_type_argument (Qlistp, v1); + TOP = CDR (v1); break; } @@ -912,23 +902,10 @@ AFTER_POTENTIAL_GC (); op = XINT (v2); immediate_quit = 1; - while (--op >= 0) - { - if (CONSP (v1)) - v1 = XCDR (v1); - else if (!NILP (v1)) - { - immediate_quit = 0; - wrong_type_argument (Qlistp, v1); - } - } + while (--op >= 0 && CONSP (v1)) + v1 = XCDR (v1); immediate_quit = 0; - if (CONSP (v1)) - TOP = XCAR (v1); - else if (NILP (v1)) - TOP = Qnil; - else - wrong_type_argument (Qlistp, v1); + TOP = CAR (v1); break; } @@ -1551,23 +1528,10 @@ AFTER_POTENTIAL_GC (); op = XINT (v2); immediate_quit = 1; - while (--op >= 0) - { - if (CONSP (v1)) - v1 = XCDR (v1); - else if (!NILP (v1)) - { - immediate_quit = 0; - wrong_type_argument (Qlistp, v1); - } - } + while (--op >= 0 && CONSP (v1)) + v1 = XCDR (v1); immediate_quit = 0; - if (CONSP (v1)) - TOP = XCAR (v1); - else if (NILP (v1)) - TOP = Qnil; - else - wrong_type_argument (Qlistp, v1); + TOP = CAR (v1); } else { @@ -1629,10 +1593,7 @@ { Lisp_Object v1; v1 = TOP; - if (CONSP (v1)) - TOP = XCAR (v1); - else - TOP = Qnil; + TOP = CAR_SAFE (v1); break; } @@ -1640,10 +1601,7 @@ { Lisp_Object v1; v1 = TOP; - if (CONSP (v1)) - TOP = XCDR (v1); - else - TOP = Qnil; + TOP = CDR_SAFE (v1); break; }