Mercurial > hg > xemacs-beta
comparison src/bytecode.c @ 5581:56144c8593a8
Mechanically change INT to FIXNUM in our sources.
src/ChangeLog addition:
2011-10-09 Aidan Kehoe <kehoea@parhasard.net>
[...]
Mechanically change INT (where it refers to non-bignum Lisp
integers) to FIXNUM in our sources. Done for the following
functions, enums, and macros: Lisp_Type_Int_Even,
Lisp_Type_Int_Odd, INT_GCBITS, INT_VALBITS, make_int(), INTP(),
XINT(), CHECK_INT(), XREALINT(), INT_PLUS(), INT_MINUS(),
EMACS_INT_MAX (to MOST_POSITIVE_FIXNUM), EMACS_INT_MIN (to
MOST_NEGATIVE_FIXNUM), NUMBER_FITS_IN_AN_EMACS_INT() to
NUMBER_FITS_IN_A_FIXNUM(), XFLOATINT, XCHAR_OR_INT, INT_OR_FLOAT.
The EMACS_INT typedef was not changed, it does not describe
non-bignum Lisp integers.
Script that did the change available in
http://mid.gmane.org/20067.17650.181273.12014@parhasard.net .
modules/ChangeLog addition:
2011-10-09 Aidan Kehoe <kehoea@parhasard.net>
[...]
Mechanically change INT to FIXNUM, where the usage describes non-bignum
Lisp integers. See the src/ChangeLog entry for more details.
man/ChangeLog addition:
2011-10-09 Aidan Kehoe <kehoea@parhasard.net>
* internals/internals.texi (How Lisp Objects Are Represented in C):
* internals/internals.texi (Integers and Characters):
Mechanically change INT to FIXNUM, where the usage describes non-bignum
Lisp integers.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 09 Oct 2011 09:51:57 +0100 |
parents | 58b38d5b32d0 |
children | 427a72c6ee17 |
comparison
equal
deleted
inserted
replaced
5580:a0e81357194e | 5581:56144c8593a8 |
---|---|
221 meter_code (Opcode prev_opcode, Opcode this_opcode) | 221 meter_code (Opcode prev_opcode, Opcode this_opcode) |
222 { | 222 { |
223 if (byte_metering_on) | 223 if (byte_metering_on) |
224 { | 224 { |
225 Lisp_Object *p = XVECTOR_DATA (XVECTOR_DATA (Vbyte_code_meter)[this_opcode]); | 225 Lisp_Object *p = XVECTOR_DATA (XVECTOR_DATA (Vbyte_code_meter)[this_opcode]); |
226 p[0] = INT_PLUS1 (p[0]); | 226 p[0] = FIXNUM_PLUS1 (p[0]); |
227 if (prev_opcode) | 227 if (prev_opcode) |
228 p[prev_opcode] = INT_PLUS1 (p[prev_opcode]); | 228 p[prev_opcode] = FIXNUM_PLUS1 (p[prev_opcode]); |
229 } | 229 } |
230 } | 230 } |
231 | 231 |
232 #endif /* BYTE_CODE_METER */ | 232 #endif /* BYTE_CODE_METER */ |
233 | 233 |
235 static Lisp_Object | 235 static Lisp_Object |
236 bytecode_negate (Lisp_Object obj) | 236 bytecode_negate (Lisp_Object obj) |
237 { | 237 { |
238 retry: | 238 retry: |
239 | 239 |
240 if (INTP (obj)) return make_integer (- XINT (obj)); | 240 if (FIXNUMP (obj)) return make_integer (- XFIXNUM (obj)); |
241 if (FLOATP (obj)) return make_float (- XFLOAT_DATA (obj)); | 241 if (FLOATP (obj)) return make_float (- XFLOAT_DATA (obj)); |
242 if (CHARP (obj)) return make_integer (- ((int) XCHAR (obj))); | 242 if (CHARP (obj)) return make_integer (- ((int) XCHAR (obj))); |
243 if (MARKERP (obj)) return make_integer (- ((int) marker_position (obj))); | 243 if (MARKERP (obj)) return make_integer (- ((int) marker_position (obj))); |
244 #ifdef HAVE_BIGNUM | 244 #ifdef HAVE_BIGNUM |
245 if (BIGNUMP (obj)) BIGNUM_ARITH_RETURN (obj, neg); | 245 if (BIGNUMP (obj)) BIGNUM_ARITH_RETURN (obj, neg); |
289 #ifdef WITH_NUMBER_TYPES | 289 #ifdef WITH_NUMBER_TYPES |
290 switch (promote_args (&obj1, &obj2)) | 290 switch (promote_args (&obj1, &obj2)) |
291 { | 291 { |
292 case FIXNUM_T: | 292 case FIXNUM_T: |
293 { | 293 { |
294 EMACS_INT ival1 = XREALINT (obj1), ival2 = XREALINT (obj2); | 294 EMACS_INT ival1 = XREALFIXNUM (obj1), ival2 = XREALFIXNUM (obj2); |
295 return ival1 < ival2 ? -1 : ival1 > ival2 ? 1 : 0; | 295 return ival1 < ival2 ? -1 : ival1 > ival2 ? 1 : 0; |
296 } | 296 } |
297 #ifdef HAVE_BIGNUM | 297 #ifdef HAVE_BIGNUM |
298 case BIGNUM_T: | 298 case BIGNUM_T: |
299 return bignum_cmp (XBIGNUM_DATA (obj1), XBIGNUM_DATA (obj2)); | 299 return bignum_cmp (XBIGNUM_DATA (obj1), XBIGNUM_DATA (obj2)); |
316 retry: | 316 retry: |
317 | 317 |
318 { | 318 { |
319 EMACS_INT ival1, ival2; | 319 EMACS_INT ival1, ival2; |
320 | 320 |
321 if (INTP (obj1)) ival1 = XINT (obj1); | 321 if (FIXNUMP (obj1)) ival1 = XFIXNUM (obj1); |
322 else if (CHARP (obj1)) ival1 = XCHAR (obj1); | 322 else if (CHARP (obj1)) ival1 = XCHAR (obj1); |
323 else if (MARKERP (obj1)) ival1 = marker_position (obj1); | 323 else if (MARKERP (obj1)) ival1 = marker_position (obj1); |
324 else goto arithcompare_float; | 324 else goto arithcompare_float; |
325 | 325 |
326 if (INTP (obj2)) ival2 = XINT (obj2); | 326 if (FIXNUMP (obj2)) ival2 = XFIXNUM (obj2); |
327 else if (CHARP (obj2)) ival2 = XCHAR (obj2); | 327 else if (CHARP (obj2)) ival2 = XCHAR (obj2); |
328 else if (MARKERP (obj2)) ival2 = marker_position (obj2); | 328 else if (MARKERP (obj2)) ival2 = marker_position (obj2); |
329 else goto arithcompare_float; | 329 else goto arithcompare_float; |
330 | 330 |
331 return ival1 < ival2 ? -1 : ival1 > ival2 ? 1 : 0; | 331 return ival1 < ival2 ? -1 : ival1 > ival2 ? 1 : 0; |
335 | 335 |
336 { | 336 { |
337 double dval1, dval2; | 337 double dval1, dval2; |
338 | 338 |
339 if (FLOATP (obj1)) dval1 = XFLOAT_DATA (obj1); | 339 if (FLOATP (obj1)) dval1 = XFLOAT_DATA (obj1); |
340 else if (INTP (obj1)) dval1 = (double) XINT (obj1); | 340 else if (FIXNUMP (obj1)) dval1 = (double) XFIXNUM (obj1); |
341 else if (CHARP (obj1)) dval1 = (double) XCHAR (obj1); | 341 else if (CHARP (obj1)) dval1 = (double) XCHAR (obj1); |
342 else if (MARKERP (obj1)) dval1 = (double) marker_position (obj1); | 342 else if (MARKERP (obj1)) dval1 = (double) marker_position (obj1); |
343 else | 343 else |
344 { | 344 { |
345 obj1 = wrong_type_argument (Qnumber_char_or_marker_p, obj1); | 345 obj1 = wrong_type_argument (Qnumber_char_or_marker_p, obj1); |
346 goto retry; | 346 goto retry; |
347 } | 347 } |
348 | 348 |
349 if (FLOATP (obj2)) dval2 = XFLOAT_DATA (obj2); | 349 if (FLOATP (obj2)) dval2 = XFLOAT_DATA (obj2); |
350 else if (INTP (obj2)) dval2 = (double) XINT (obj2); | 350 else if (FIXNUMP (obj2)) dval2 = (double) XFIXNUM (obj2); |
351 else if (CHARP (obj2)) dval2 = (double) XCHAR (obj2); | 351 else if (CHARP (obj2)) dval2 = (double) XCHAR (obj2); |
352 else if (MARKERP (obj2)) dval2 = (double) marker_position (obj2); | 352 else if (MARKERP (obj2)) dval2 = (double) marker_position (obj2); |
353 else | 353 else |
354 { | 354 { |
355 obj2 = wrong_type_argument (Qnumber_char_or_marker_p, obj2); | 355 obj2 = wrong_type_argument (Qnumber_char_or_marker_p, obj2); |
367 #ifdef WITH_NUMBER_TYPES | 367 #ifdef WITH_NUMBER_TYPES |
368 switch (promote_args (&obj1, &obj2)) | 368 switch (promote_args (&obj1, &obj2)) |
369 { | 369 { |
370 case FIXNUM_T: | 370 case FIXNUM_T: |
371 { | 371 { |
372 EMACS_INT ival1 = XREALINT (obj1), ival2 = XREALINT (obj2); | 372 EMACS_INT ival1 = XREALFIXNUM (obj1), ival2 = XREALFIXNUM (obj2); |
373 switch (opcode) | 373 switch (opcode) |
374 { | 374 { |
375 case Bplus: ival1 += ival2; break; | 375 case Bplus: ival1 += ival2; break; |
376 case Bdiff: ival1 -= ival2; break; | 376 case Bdiff: ival1 -= ival2; break; |
377 case Bmult: | 377 case Bmult: |
510 | 510 |
511 retry: | 511 retry: |
512 | 512 |
513 float_p = 0; | 513 float_p = 0; |
514 | 514 |
515 if (INTP (obj1)) ival1 = XINT (obj1); | 515 if (FIXNUMP (obj1)) ival1 = XFIXNUM (obj1); |
516 else if (CHARP (obj1)) ival1 = XCHAR (obj1); | 516 else if (CHARP (obj1)) ival1 = XCHAR (obj1); |
517 else if (MARKERP (obj1)) ival1 = marker_position (obj1); | 517 else if (MARKERP (obj1)) ival1 = marker_position (obj1); |
518 else if (FLOATP (obj1)) ival1 = 0, float_p = 1; | 518 else if (FLOATP (obj1)) ival1 = 0, float_p = 1; |
519 else | 519 else |
520 { | 520 { |
521 obj1 = wrong_type_argument (Qnumber_char_or_marker_p, obj1); | 521 obj1 = wrong_type_argument (Qnumber_char_or_marker_p, obj1); |
522 goto retry; | 522 goto retry; |
523 } | 523 } |
524 | 524 |
525 if (INTP (obj2)) ival2 = XINT (obj2); | 525 if (FIXNUMP (obj2)) ival2 = XFIXNUM (obj2); |
526 else if (CHARP (obj2)) ival2 = XCHAR (obj2); | 526 else if (CHARP (obj2)) ival2 = XCHAR (obj2); |
527 else if (MARKERP (obj2)) ival2 = marker_position (obj2); | 527 else if (MARKERP (obj2)) ival2 = marker_position (obj2); |
528 else if (FLOATP (obj2)) ival2 = 0, float_p = 1; | 528 else if (FLOATP (obj2)) ival2 = 0, float_p = 1; |
529 else | 529 else |
530 { | 530 { |
545 ival1 /= ival2; | 545 ival1 /= ival2; |
546 break; | 546 break; |
547 case Bmax: if (ival1 < ival2) ival1 = ival2; break; | 547 case Bmax: if (ival1 < ival2) ival1 = ival2; break; |
548 case Bmin: if (ival1 > ival2) ival1 = ival2; break; | 548 case Bmin: if (ival1 > ival2) ival1 = ival2; break; |
549 } | 549 } |
550 return make_int (ival1); | 550 return make_fixnum (ival1); |
551 } | 551 } |
552 else | 552 else |
553 { | 553 { |
554 double dval1 = FLOATP (obj1) ? XFLOAT_DATA (obj1) : (double) ival1; | 554 double dval1 = FLOATP (obj1) ? XFLOAT_DATA (obj1) : (double) ival1; |
555 double dval2 = FLOATP (obj2) ? XFLOAT_DATA (obj2) : (double) ival2; | 555 double dval2 = FLOATP (obj2) ? XFLOAT_DATA (obj2) : (double) ival2; |
923 DISCARD (n); | 923 DISCARD (n); |
924 #ifdef BYTE_CODE_METER | 924 #ifdef BYTE_CODE_METER |
925 if (byte_metering_on && SYMBOLP (TOP)) | 925 if (byte_metering_on && SYMBOLP (TOP)) |
926 { | 926 { |
927 Lisp_Object val = Fget (TOP, Qbyte_code_meter, Qnil); | 927 Lisp_Object val = Fget (TOP, Qbyte_code_meter, Qnil); |
928 if (INTP (val)) | 928 if (FIXNUMP (val)) |
929 Fput (TOP, Qbyte_code_meter, make_int (XINT (val) + 1)); | 929 Fput (TOP, Qbyte_code_meter, make_fixnum (XFIXNUM (val) + 1)); |
930 } | 930 } |
931 #endif | 931 #endif |
932 TOP_LVALUE = TOP; /* Ignore multiple values. */ | 932 TOP_LVALUE = TOP; /* Ignore multiple values. */ |
933 TOP_LVALUE = Ffuncall (n + 1, TOP_ADDRESS); | 933 TOP_LVALUE = Ffuncall (n + 1, TOP_ADDRESS); |
934 break; | 934 break; |
1101 | 1101 |
1102 case Bnumberp: | 1102 case Bnumberp: |
1103 #ifdef WITH_NUMBER_TYPES | 1103 #ifdef WITH_NUMBER_TYPES |
1104 TOP_LVALUE = NUMBERP (TOP) ? Qt : Qnil; | 1104 TOP_LVALUE = NUMBERP (TOP) ? Qt : Qnil; |
1105 #else | 1105 #else |
1106 TOP_LVALUE = INT_OR_FLOATP (TOP) ? Qt : Qnil; | 1106 TOP_LVALUE = FIXNUM_OR_FLOATP (TOP) ? Qt : Qnil; |
1107 #endif | 1107 #endif |
1108 break; | 1108 break; |
1109 | 1109 |
1110 case Bfixnump: | 1110 case Bfixnump: |
1111 TOP_LVALUE = INTP (TOP) ? Qt : Qnil; | 1111 TOP_LVALUE = FIXNUMP (TOP) ? Qt : Qnil; |
1112 break; | 1112 break; |
1113 | 1113 |
1114 case Beq: | 1114 case Beq: |
1115 { | 1115 { |
1116 Lisp_Object arg = POP; | 1116 Lisp_Object arg = POP; |
1209 { | 1209 { |
1210 #ifdef HAVE_BIGNUM | 1210 #ifdef HAVE_BIGNUM |
1211 TOP_LVALUE = Fsub1 (TOP); | 1211 TOP_LVALUE = Fsub1 (TOP); |
1212 #else | 1212 #else |
1213 Lisp_Object arg = TOP; | 1213 Lisp_Object arg = TOP; |
1214 TOP_LVALUE = INTP (arg) ? INT_MINUS1 (arg) : Fsub1 (arg); | 1214 TOP_LVALUE = FIXNUMP (arg) ? FIXNUM_MINUS1 (arg) : Fsub1 (arg); |
1215 #endif | 1215 #endif |
1216 break; | 1216 break; |
1217 } | 1217 } |
1218 case Badd1: | 1218 case Badd1: |
1219 { | 1219 { |
1220 #ifdef HAVE_BIGNUM | 1220 #ifdef HAVE_BIGNUM |
1221 TOP_LVALUE = Fadd1 (TOP); | 1221 TOP_LVALUE = Fadd1 (TOP); |
1222 #else | 1222 #else |
1223 Lisp_Object arg = TOP; | 1223 Lisp_Object arg = TOP; |
1224 TOP_LVALUE = INTP (arg) ? INT_PLUS1 (arg) : Fadd1 (arg); | 1224 TOP_LVALUE = FIXNUMP (arg) ? FIXNUM_PLUS1 (arg) : Fadd1 (arg); |
1225 #endif | 1225 #endif |
1226 break; | 1226 break; |
1227 } | 1227 } |
1228 | 1228 |
1229 case Beqlsign: | 1229 case Beqlsign: |
1279 Lisp_Object arg2 = POP; | 1279 Lisp_Object arg2 = POP; |
1280 Lisp_Object arg1 = TOP; | 1280 Lisp_Object arg1 = TOP; |
1281 #ifdef HAVE_BIGNUM | 1281 #ifdef HAVE_BIGNUM |
1282 TOP_LVALUE = bytecode_arithop (arg1, arg2, opcode); | 1282 TOP_LVALUE = bytecode_arithop (arg1, arg2, opcode); |
1283 #else | 1283 #else |
1284 TOP_LVALUE = INTP (arg1) && INTP (arg2) ? | 1284 TOP_LVALUE = FIXNUMP (arg1) && FIXNUMP (arg2) ? |
1285 INT_PLUS (arg1, arg2) : | 1285 FIXNUM_PLUS (arg1, arg2) : |
1286 bytecode_arithop (arg1, arg2, opcode); | 1286 bytecode_arithop (arg1, arg2, opcode); |
1287 #endif | 1287 #endif |
1288 break; | 1288 break; |
1289 } | 1289 } |
1290 | 1290 |
1293 Lisp_Object arg2 = POP; | 1293 Lisp_Object arg2 = POP; |
1294 Lisp_Object arg1 = TOP; | 1294 Lisp_Object arg1 = TOP; |
1295 #ifdef HAVE_BIGNUM | 1295 #ifdef HAVE_BIGNUM |
1296 TOP_LVALUE = bytecode_arithop (arg1, arg2, opcode); | 1296 TOP_LVALUE = bytecode_arithop (arg1, arg2, opcode); |
1297 #else | 1297 #else |
1298 TOP_LVALUE = INTP (arg1) && INTP (arg2) ? | 1298 TOP_LVALUE = FIXNUMP (arg1) && FIXNUMP (arg2) ? |
1299 INT_MINUS (arg1, arg2) : | 1299 FIXNUM_MINUS (arg1, arg2) : |
1300 bytecode_arithop (arg1, arg2, opcode); | 1300 bytecode_arithop (arg1, arg2, opcode); |
1301 #endif | 1301 #endif |
1302 break; | 1302 break; |
1303 } | 1303 } |
1304 | 1304 |
1311 TOP_LVALUE = bytecode_arithop (TOP, arg, opcode); | 1311 TOP_LVALUE = bytecode_arithop (TOP, arg, opcode); |
1312 break; | 1312 break; |
1313 } | 1313 } |
1314 | 1314 |
1315 case Bpoint: | 1315 case Bpoint: |
1316 PUSH (make_int (BUF_PT (current_buffer))); | 1316 PUSH (make_fixnum (BUF_PT (current_buffer))); |
1317 break; | 1317 break; |
1318 | 1318 |
1319 case Binsert: | 1319 case Binsert: |
1320 /* Says it can GC. */ | 1320 /* Says it can GC. */ |
1321 /* GCPRO_STACK; */ | 1321 /* GCPRO_STACK; */ |
1405 /* GCPRO_STACK; */ | 1405 /* GCPRO_STACK; */ |
1406 TOP_LVALUE = Fset_buffer (TOP); | 1406 TOP_LVALUE = Fset_buffer (TOP); |
1407 break; | 1407 break; |
1408 | 1408 |
1409 case Bpoint_max: | 1409 case Bpoint_max: |
1410 PUSH (make_int (BUF_ZV (current_buffer))); | 1410 PUSH (make_fixnum (BUF_ZV (current_buffer))); |
1411 break; | 1411 break; |
1412 | 1412 |
1413 case Bpoint_min: | 1413 case Bpoint_min: |
1414 PUSH (make_int (BUF_BEGV (current_buffer))); | 1414 PUSH (make_fixnum (BUF_BEGV (current_buffer))); |
1415 break; | 1415 break; |
1416 | 1416 |
1417 case Bskip_chars_forward: | 1417 case Bskip_chars_forward: |
1418 { | 1418 { |
1419 Lisp_Object arg = POP; | 1419 Lisp_Object arg = POP; |
1590 TOP_LVALUE = Fsubseq (TOP, arg1, arg2); | 1590 TOP_LVALUE = Fsubseq (TOP, arg1, arg2); |
1591 break; | 1591 break; |
1592 } | 1592 } |
1593 | 1593 |
1594 case Bcurrent_column: | 1594 case Bcurrent_column: |
1595 PUSH (make_int (current_column (current_buffer))); | 1595 PUSH (make_fixnum (current_column (current_buffer))); |
1596 break; | 1596 break; |
1597 | 1597 |
1598 case Bchar_after: | 1598 case Bchar_after: |
1599 TOP_LVALUE = Fchar_after (TOP, Qnil); | 1599 TOP_LVALUE = Fchar_after (TOP, Qnil); |
1600 break; | 1600 break; |
1742 | 1742 |
1743 check_integer_range (upper, Qzero, | 1743 check_integer_range (upper, Qzero, |
1744 make_integer (Vmultiple_values_limit)); | 1744 make_integer (Vmultiple_values_limit)); |
1745 check_integer_range (first, Qzero, upper); | 1745 check_integer_range (first, Qzero, upper); |
1746 | 1746 |
1747 speccount = make_int (bind_multiple_value_limits (XINT (first), | 1747 speccount = make_fixnum (bind_multiple_value_limits (XFIXNUM (first), |
1748 XINT (upper))); | 1748 XFIXNUM (upper))); |
1749 PUSH (upper); | 1749 PUSH (upper); |
1750 PUSH (speccount); | 1750 PUSH (speccount); |
1751 break; | 1751 break; |
1752 } | 1752 } |
1753 | 1753 |
1754 case Bmultiple_value_call: | 1754 case Bmultiple_value_call: |
1755 { | 1755 { |
1756 n = XINT (POP); | 1756 n = XFIXNUM (POP); |
1757 DISCARD_PRESERVING_MULTIPLE_VALUES_UNSAFE (n - 1); | 1757 DISCARD_PRESERVING_MULTIPLE_VALUES_UNSAFE (n - 1); |
1758 /* Discard multiple values for the first (function) argument: */ | 1758 /* Discard multiple values for the first (function) argument: */ |
1759 TOP_LVALUE = TOP; | 1759 TOP_LVALUE = TOP; |
1760 TOP_LVALUE = multiple_value_call (n, TOP_ADDRESS); | 1760 TOP_LVALUE = multiple_value_call (n, TOP_ADDRESS); |
1761 break; | 1761 break; |
1801 { | 1801 { |
1802 if ((opcode < Bvarref) || | 1802 if ((opcode < Bvarref) || |
1803 (opcode == 0251) || | 1803 (opcode == 0251) || |
1804 (opcode > Bassq && opcode < Bconstant)) | 1804 (opcode > Bassq && opcode < Bconstant)) |
1805 invalid_byte_code ("invalid opcode in instruction stream", | 1805 invalid_byte_code ("invalid opcode in instruction stream", |
1806 make_int (opcode)); | 1806 make_fixnum (opcode)); |
1807 } | 1807 } |
1808 | 1808 |
1809 /* Check that IDX is a valid offset into the `constants' vector */ | 1809 /* Check that IDX is a valid offset into the `constants' vector */ |
1810 static void | 1810 static void |
1811 check_constants_index (int idx, Lisp_Object constants) | 1811 check_constants_index (int idx, Lisp_Object constants) |
2238 /* XSTRING_LENGTH() is more efficient than string_char_length(), | 2238 /* XSTRING_LENGTH() is more efficient than string_char_length(), |
2239 which would be slightly more `proper' */ | 2239 which would be slightly more `proper' */ |
2240 program = alloca_array (Opbyte, 1 + 2 * XSTRING_LENGTH (f->instructions)); | 2240 program = alloca_array (Opbyte, 1 + 2 * XSTRING_LENGTH (f->instructions)); |
2241 optimize_byte_code (f->instructions, f->constants, | 2241 optimize_byte_code (f->instructions, f->constants, |
2242 program, &program_length, &varbind_count); | 2242 program, &program_length, &varbind_count); |
2243 f->specpdl_depth = (unsigned short) (XINT (Flength (f->arglist)) + | 2243 f->specpdl_depth = (unsigned short) (XFIXNUM (Flength (f->arglist)) + |
2244 varbind_count); | 2244 varbind_count); |
2245 f->instructions = | 2245 f->instructions = |
2246 make_opaque (program, program_length * sizeof (Opbyte)); | 2246 make_opaque (program, program_length * sizeof (Opbyte)); |
2247 } | 2247 } |
2248 | 2248 |
2655 /* used only by Snarf-documentation. */ | 2655 /* used only by Snarf-documentation. */ |
2656 void | 2656 void |
2657 set_compiled_function_documentation (Lisp_Compiled_Function *f, | 2657 set_compiled_function_documentation (Lisp_Compiled_Function *f, |
2658 Lisp_Object new_doc) | 2658 Lisp_Object new_doc) |
2659 { | 2659 { |
2660 assert (INTP (new_doc) || STRINGP (new_doc)); | 2660 assert (FIXNUMP (new_doc) || STRINGP (new_doc)); |
2661 | 2661 |
2662 if (f->flags.documentationp) | 2662 if (f->flags.documentationp) |
2663 { | 2663 { |
2664 if (f->flags.interactivep && f->flags.domainp) | 2664 if (f->flags.interactivep && f->flags.domainp) |
2665 XCAR (f->doc_and_interactive) = new_doc; | 2665 XCAR (f->doc_and_interactive) = new_doc; |
2757 Return the maximum stack depth of the compiled-function object FUNCTION. | 2757 Return the maximum stack depth of the compiled-function object FUNCTION. |
2758 */ | 2758 */ |
2759 (function)) | 2759 (function)) |
2760 { | 2760 { |
2761 CHECK_COMPILED_FUNCTION (function); | 2761 CHECK_COMPILED_FUNCTION (function); |
2762 return make_int (compiled_function_stack_depth (XCOMPILED_FUNCTION (function))); | 2762 return make_fixnum (compiled_function_stack_depth (XCOMPILED_FUNCTION (function))); |
2763 } | 2763 } |
2764 | 2764 |
2765 DEFUN ("compiled-function-doc-string", Fcompiled_function_doc_string, 1, 1, 0, /* | 2765 DEFUN ("compiled-function-doc-string", Fcompiled_function_doc_string, 1, 1, 0, /* |
2766 Return the doc string of the compiled-function object FUNCTION, if available. | 2766 Return the doc string of the compiled-function object FUNCTION, if available. |
2767 Functions that had their doc strings snarfed into the DOC file will have | 2767 Functions that had their doc strings snarfed into the DOC file will have |
2879 Elemcount program_length; | 2879 Elemcount program_length; |
2880 Opbyte *program; | 2880 Opbyte *program; |
2881 | 2881 |
2882 CHECK_STRING (instructions); | 2882 CHECK_STRING (instructions); |
2883 CHECK_VECTOR (constants); | 2883 CHECK_VECTOR (constants); |
2884 check_integer_range (stack_depth, Qzero, make_int (USHRT_MAX)); | 2884 check_integer_range (stack_depth, Qzero, make_fixnum (USHRT_MAX)); |
2885 | 2885 |
2886 /* Optimize the `instructions' string, just like when executing a | 2886 /* Optimize the `instructions' string, just like when executing a |
2887 regular compiled function, but don't save it for later since this is | 2887 regular compiled function, but don't save it for later since this is |
2888 likely to only be executed once. */ | 2888 likely to only be executed once. */ |
2889 program = alloca_array (Opbyte, 1 + 2 * XSTRING_LENGTH (instructions)); | 2889 program = alloca_array (Opbyte, 1 + 2 * XSTRING_LENGTH (instructions)); |
2892 SPECPDL_RESERVE (varbind_count); | 2892 SPECPDL_RESERVE (varbind_count); |
2893 return execute_optimized_program (program, | 2893 return execute_optimized_program (program, |
2894 #ifdef ERROR_CHECK_BYTE_CODE | 2894 #ifdef ERROR_CHECK_BYTE_CODE |
2895 program_length, | 2895 program_length, |
2896 #endif | 2896 #endif |
2897 XINT (stack_depth), | 2897 XFIXNUM (stack_depth), |
2898 XVECTOR_DATA (constants)); | 2898 XVECTOR_DATA (constants)); |
2899 } | 2899 } |
2900 | 2900 |
2901 | 2901 |
2902 void | 2902 void |