Mercurial > emacs
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"); |
