Changeset 6315
- Timestamp:
- Apr 20, 2007, 2:01:17 AM (18 years ago)
- File:
-
- 1 edited
-
branches/x8664-call/ccl/lisp-kernel/x86-gc.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/x8664-call/ccl/lisp-kernel/x86-gc.c
r6306 r6315 1467 1467 mark_xp(ExceptionInformation *xp) 1468 1468 { 1469 natural *regs = (natural *) xpGPRvector(xp); 1470 1469 natural *regs = (natural *) xpGPRvector(xp), dnode; 1470 LispObj rip; 1471 1472 1471 1473 1472 1474 mark_root(regs[Iarg_z]); … … 1482 1484 mark_root(regs[Itemp1]); 1483 1485 mark_root(regs[Itemp2]); 1484 /* If the IP isn't pointing into a marked function, 1485 we're in big trouble. Check for that here ? */ 1486 /* If the RIP isn't pointing into a marked function, 1487 we can -maybe- recover from that if it's tagged as 1488 a TRA. */ 1489 rip = regs[Iip]; 1490 dnode = gc_area_dnode(rip); 1491 if ((dnode < GCndnodes_in_area) && 1492 (! ref_bit(GCmarkbits,dnode))) { 1493 if (tag_of(rip) == tag_tra) { 1494 mark_root(rip); 1495 } else { 1496 Bug(NULL, "Can't find function for rip 0x%16lx",rip); 1497 } 1498 } 1486 1499 } 1487 1500
Note:
See TracChangeset
for help on using the changeset viewer.
