Changeset 10101 for trunk/source/lisp-kernel/x86_print.c
- Timestamp:
- Jul 18, 2008, 7:49:04 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/x86_print.c
r9901 r10101 266 266 } 267 267 268 #ifdef X8632 269 LispObj 270 nth_immediate(LispObj o, unsigned n) 271 { 272 u16_t imm_word_count = *(u16_t *)(o + misc_data_offset); 273 natural *constants = (natural *)((char *)o + misc_data_offset + (imm_word_count << 2)); 274 LispObj result = (LispObj)(constants[n-1]); 275 276 return result; 277 } 278 #endif 279 268 280 void 269 281 sprint_function(LispObj o, int depth) … … 303 315 sprint_specializers_list(method_specializers, depth); 304 316 add_char(' '); 317 } else if (lfbits & lfbits_gfn_mask) { 318 LispObj gf_slots; 319 LispObj gf_name; 320 321 add_c_string("Generic Function "); 322 323 #ifdef X8632 324 gf_slots = nth_immediate(o, 2); 325 gf_name = deref(gf_slots, 2); 326 sprint_lisp_object(gf_name, depth); 327 add_char(' '); 328 #endif 305 329 } else { 306 330 add_c_string("Function "); … … 316 340 sprint_tra(LispObj o, int depth) 317 341 { 342 #ifdef X8664 318 343 signed sdisp; 319 344 unsigned disp = 0; … … 336 361 sprint_unsigned_hex(o); 337 362 } 363 #else 364 LispObj f = 0; 365 unsigned disp = 0; 366 367 if (*(unsigned char *)o == RECOVER_FN_OPCODE) { 368 f = (LispObj)(*((natural *)(o + 1))); 369 disp = o - f; 370 } 371 372 if (f && header_subtag(header_of(f)) == subtag_function) { 373 add_c_string("tagged return address: "); 374 sprint_function(f, depth); 375 add_c_string(" + "); 376 sprint_unsigned_decimal(disp); 377 } else { 378 add_c_string("(tra ?) : "); 379 sprint_unsigned_hex(o); 380 } 381 #endif 338 382 } 339 383 … … 473 517 case fulltag_nodeheader_1: 474 518 #else 519 case fulltag_immheader: 520 case fulltag_nodeheader: 475 521 #endif 476 522 add_c_string("#<header ? "); … … 483 529 case fulltag_imm_1: 484 530 #else 531 case fulltag_imm: 485 532 #endif 486 533 if (o == unbound) { … … 493 540 add_char(c); 494 541 } else { 495 sprintf(numbuf, "% o", c);542 sprintf(numbuf, "%#o", c); 496 543 add_c_string(numbuf); 497 544 } … … 511 558 } 512 559 break; 513 560 561 #ifdef X8664 514 562 case fulltag_nil: 563 #endif 515 564 case fulltag_cons: 516 565 sprint_list(o, depth); … … 521 570 break; 522 571 572 #ifdef X8664 523 573 case fulltag_symbol: 524 574 sprint_symbol(o); … … 528 578 sprint_function(o, depth); 529 579 break; 530 580 #endif 581 582 #ifdef X8664 531 583 case fulltag_tra_0: 532 584 case fulltag_tra_1: 585 #else 586 case fulltag_tra: 587 #endif 533 588 sprint_tra(o,depth); 534 589 break;
Note: See TracChangeset
for help on using the changeset viewer.