comparison src/bytecode.c @ 9139:127823d9444d

(Fbyte_code): Use type test macros.
author Karl Heuer <kwzh@gnu.org>
date Tue, 27 Sep 1994 03:11:31 +0000
parents 1fc792473491
children 5151ce5ab25a
comparison
equal deleted inserted replaced
9138:6c814eb4d892 9139:127823d9444d
278 /* Cached address of beginning of string, 278 /* Cached address of beginning of string,
279 valid if BYTESTR equals STRING_SAVED. */ 279 valid if BYTESTR equals STRING_SAVED. */
280 register unsigned char *strbeg; 280 register unsigned char *strbeg;
281 281
282 CHECK_STRING (bytestr, 0); 282 CHECK_STRING (bytestr, 0);
283 if (XTYPE (vector) != Lisp_Vector) 283 if (!VECTORP (vector))
284 vector = wrong_type_argument (Qvectorp, vector); 284 vector = wrong_type_argument (Qvectorp, vector);
285 CHECK_NUMBER (maxdepth, 2); 285 CHECK_NUMBER (maxdepth, 2);
286 286
287 stackp = (Lisp_Object *) alloca (XFASTINT (maxdepth) * sizeof (Lisp_Object)); 287 stackp = (Lisp_Object *) alloca (XFASTINT (maxdepth) * sizeof (Lisp_Object));
288 bzero (stackp, XFASTINT (maxdepth) * sizeof (Lisp_Object)); 288 bzero (stackp, XFASTINT (maxdepth) * sizeof (Lisp_Object));
334 case Bvarref: case Bvarref+1: case Bvarref+2: case Bvarref+3: 334 case Bvarref: case Bvarref+1: case Bvarref+2: case Bvarref+3:
335 case Bvarref+4: case Bvarref+5: 335 case Bvarref+4: case Bvarref+5:
336 op = op - Bvarref; 336 op = op - Bvarref;
337 varref: 337 varref:
338 v1 = vectorp[op]; 338 v1 = vectorp[op];
339 if (XTYPE (v1) != Lisp_Symbol) 339 if (!SYMBOLP (v1))
340 v2 = Fsymbol_value (v1); 340 v2 = Fsymbol_value (v1);
341 else 341 else
342 { 342 {
343 v2 = XSYMBOL (v1)->value; 343 v2 = XSYMBOL (v1)->value;
344 #ifdef SWITCH_ENUM_BUG 344 #ifdef SWITCH_ENUM_BUG
405 case Bcall+4: case Bcall+5: 405 case Bcall+4: case Bcall+5:
406 op -= Bcall; 406 op -= Bcall;
407 docall: 407 docall:
408 DISCARD (op); 408 DISCARD (op);
409 #ifdef BYTE_CODE_METER 409 #ifdef BYTE_CODE_METER
410 if (byte_metering_on && XTYPE (TOP) == Lisp_Symbol) 410 if (byte_metering_on && SYMBOLP (TOP))
411 { 411 {
412 v1 = TOP; 412 v1 = TOP;
413 v2 = Fget (v1, Qbyte_code_meter); 413 v2 = Fget (v1, Qbyte_code_meter);
414 if (XTYPE (v2) == Lisp_Int 414 if (INTEGERP (v2)
415 && XINT (v2) != ((1<<VALBITS)-1)) 415 && XINT (v2) != ((1<<VALBITS)-1))
416 { 416 {
417 XSETINT (v2, XINT (v2) + 1); 417 XSETINT (v2, XINT (v2) + 1);
418 Fput (v1, Qbyte_code_meter, v2); 418 Fput (v1, Qbyte_code_meter, v2);
419 } 419 }
609 } 609 }
610 immediate_quit = 0; 610 immediate_quit = 0;
611 goto docar; 611 goto docar;
612 612
613 case Bsymbolp: 613 case Bsymbolp:
614 TOP = XTYPE (TOP) == Lisp_Symbol ? Qt : Qnil; 614 TOP = SYMBOLP (TOP) ? Qt : Qnil;
615 break; 615 break;
616 616
617 case Bconsp: 617 case Bconsp:
618 TOP = CONSP (TOP) ? Qt : Qnil; 618 TOP = CONSP (TOP) ? Qt : Qnil;
619 break; 619 break;
620 620
621 case Bstringp: 621 case Bstringp:
622 TOP = XTYPE (TOP) == Lisp_String ? Qt : Qnil; 622 TOP = STRINGP (TOP) ? Qt : Qnil;
623 break; 623 break;
624 624
625 case Blistp: 625 case Blistp:
626 TOP = CONSP (TOP) || NILP (TOP) ? Qt : Qnil; 626 TOP = CONSP (TOP) || NILP (TOP) ? Qt : Qnil;
627 break; 627 break;
748 TOP = Fconcat (op, &TOP); 748 TOP = Fconcat (op, &TOP);
749 break; 749 break;
750 750
751 case Bsub1: 751 case Bsub1:
752 v1 = TOP; 752 v1 = TOP;
753 if (XTYPE (v1) == Lisp_Int) 753 if (INTEGERP (v1))
754 { 754 {
755 XSETINT (v1, XINT (v1) - 1); 755 XSETINT (v1, XINT (v1) - 1);
756 TOP = v1; 756 TOP = v1;
757 } 757 }
758 else 758 else
759 TOP = Fsub1 (v1); 759 TOP = Fsub1 (v1);
760 break; 760 break;
761 761
762 case Badd1: 762 case Badd1:
763 v1 = TOP; 763 v1 = TOP;
764 if (XTYPE (v1) == Lisp_Int) 764 if (INTEGERP (v1))
765 { 765 {
766 XSETINT (v1, XINT (v1) + 1); 766 XSETINT (v1, XINT (v1) + 1);
767 TOP = v1; 767 TOP = v1;
768 } 768 }
769 else 769 else
802 TOP = Fminus (2, &TOP); 802 TOP = Fminus (2, &TOP);
803 break; 803 break;
804 804
805 case Bnegate: 805 case Bnegate:
806 v1 = TOP; 806 v1 = TOP;
807 if (XTYPE (v1) == Lisp_Int) 807 if (INTEGERP (v1))
808 { 808 {
809 XSETINT (v1, - XINT (v1)); 809 XSETINT (v1, - XINT (v1));
810 TOP = v1; 810 TOP = v1;
811 } 811 }
812 else 812 else
1019 v1 = POP; 1019 v1 = POP;
1020 TOP = Fnthcdr (TOP, v1); 1020 TOP = Fnthcdr (TOP, v1);
1021 break; 1021 break;
1022 1022
1023 case Belt: 1023 case Belt:
1024 if (XTYPE (TOP) == Lisp_Cons) 1024 if (CONSP (TOP))
1025 { 1025 {
1026 /* Exchange args and then do nth. */ 1026 /* Exchange args and then do nth. */
1027 v2 = POP; 1027 v2 = POP;
1028 v1 = TOP; 1028 v1 = TOP;
1029 goto nth_entry; 1029 goto nth_entry;
1056 TOP = Fsetcdr (TOP, v1); 1056 TOP = Fsetcdr (TOP, v1);
1057 break; 1057 break;
1058 1058
1059 case Bcar_safe: 1059 case Bcar_safe:
1060 v1 = TOP; 1060 v1 = TOP;
1061 if (XTYPE (v1) == Lisp_Cons) 1061 if (CONSP (v1))
1062 TOP = XCONS (v1)->car; 1062 TOP = XCONS (v1)->car;
1063 else 1063 else
1064 TOP = Qnil; 1064 TOP = Qnil;
1065 break; 1065 break;
1066 1066
1067 case Bcdr_safe: 1067 case Bcdr_safe:
1068 v1 = TOP; 1068 v1 = TOP;
1069 if (XTYPE (v1) == Lisp_Cons) 1069 if (CONSP (v1))
1070 TOP = XCONS (v1)->cdr; 1070 TOP = XCONS (v1)->cdr;
1071 else 1071 else
1072 TOP = Qnil; 1072 TOP = Qnil;
1073 break; 1073 break;
1074 1074
1080 case Bnumberp: 1080 case Bnumberp:
1081 TOP = (NUMBERP (TOP) ? Qt : Qnil); 1081 TOP = (NUMBERP (TOP) ? Qt : Qnil);
1082 break; 1082 break;
1083 1083
1084 case Bintegerp: 1084 case Bintegerp:
1085 TOP = XTYPE (TOP) == Lisp_Int ? Qt : Qnil; 1085 TOP = INTEGERP (TOP) ? Qt : Qnil;
1086 break; 1086 break;
1087 1087
1088 #ifdef BYTE_CODE_SAFE 1088 #ifdef BYTE_CODE_SAFE
1089 case Bset_mark: 1089 case Bset_mark:
1090 error ("set-mark is an obsolete bytecode"); 1090 error ("set-mark is an obsolete bytecode");