- Timestamp:
- May 13, 2008, 12:00:27 PM (17 years ago)
- File:
-
- 1 edited
-
branches/ia32/lisp-kernel/x86-gc.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/ia32/lisp-kernel/x86-gc.c
r9459 r9466 143 143 #ifdef X8632 144 144 { 145 LispObj fun ;145 LispObj fun = 0; 146 146 147 147 if (*(unsigned char *)n == RECOVER_FN_OPCODE) … … 2078 2078 pagelet = dnode >> 5; 2079 2079 nbits = dnode & 0x1f; 2080 near_bits = ((unsigned short *)GCdynamic_markbits)[dnode>>4]; 2080 /* On little-endian x86, we have to flip the low bit of dnode>>4 to 2081 get the near_bits from the appropriate half-word. */ 2082 near_bits = ((unsigned short *)GCdynamic_markbits)[(dnode>>4)^1]; 2081 2083 2082 2084 if (nbits < 16) { … … 2480 2482 } 2481 2483 2484 #ifdef X8632 2485 void 2486 update_self_references(LispObj *node) 2487 { 2488 LispObj fn = fulltag_misc + (LispObj)node; 2489 unsigned char *p = (unsigned char *)node; 2490 natural i, offset; 2491 2492 i = ((unsigned short *)node)[2] - 2; 2493 offset = node[i]; 2494 while (offset) { 2495 *(LispObj *)(p + offset) = fn; 2496 offset = node[--i]; 2497 } 2498 } 2499 #endif 2482 2500 2483 2501 /* … … 2547 2565 #ifdef X8632 2548 2566 int skip = *((unsigned short *)src); 2567 LispObj *f = dest; 2549 2568 #else 2550 2569 int skip = *((int *)src); … … 2555 2574 *dest++ = *src++; 2556 2575 } 2576 update_self_references(f); 2557 2577 while(elements--) { 2558 2578 *dest++ = node_forwarding_address(*src++);
Note:
See TracChangeset
for help on using the changeset viewer.
