Changeset 9746
- Timestamp:
- Jun 13, 2008, 12:45:44 PM (16 years ago)
- File:
-
- 1 edited
-
branches/ia32/lisp-kernel/x86-gc.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/ia32/lisp-kernel/x86-gc.c
r9619 r9746 534 534 #ifdef X8664 535 535 #define RMARK_PREV_ROOT fulltag_imm_1 /* fulltag of 'undefined' value */ 536 #define RMARK_PREV_CAR fulltag_nil /* fulltag_ nil+ node_size. Coincidence ? I think not. */536 #define RMARK_PREV_CAR fulltag_nil /* fulltag_cons + node_size. Coincidence ? I think not. */ 537 537 #else 538 #define RMARK_PREV_ROOT fulltag_imm 539 #define RMARK_PREV_CAR fulltag_ immheader538 #define RMARK_PREV_ROOT fulltag_imm /* fulltag of 'undefined' value */ 539 #define RMARK_PREV_CAR fulltag_odd_fixnum 540 540 #endif 541 541 … … 811 811 goto ClimbCar; 812 812 813 /* default: abort() */813 default: abort(); 814 814 } 815 815 … … 820 820 MarkCons: 821 821 next = deref(this,1); 822 #ifdef X8632 823 this += (RMARK_PREV_CAR-fulltag_cons); 824 #else 822 825 this += node_size; 826 #endif 823 827 tag_n = fulltag_of(next); 824 828 if (!is_node_fulltag(tag_n)) goto MarkCdr; … … 838 842 MarkCdr: 839 843 next = deref(this, 0); 844 #ifdef X8632 845 this -= (RMARK_PREV_CAR-fulltag_cons); 846 #else 840 847 this -= node_size; 848 #endif 841 849 tag_n = fulltag_of(next); 842 850 if (!is_node_fulltag(tag_n)) goto Climb; … … 915 923 * we've finished marking the function vector. 916 924 */ 917 ((int *)boundary)[1]&= 0xff;918 ((int *)boundary)[1] |= (this-(LispObj)boundary) << 8;925 *((int *)boundary) &= 0xff; 926 *((int *)boundary) |= ((this-(LispObj)boundary) << 8); 919 927 this = (LispObj)(base)+fulltag_misc; 920 928 dnode = gc_area_dnode(this); … … 926 934 if (subtag == subtag_function) { 927 935 boundary = base + (unsigned short)base[1]; 928 ((int *)boundary)[1]&= 0xff;929 ((int *)boundary)[1] |= (this-((LispObj)boundary)) << 8;936 *((int *)boundary) &= 0xff; 937 *((int *)boundary) |= ((this-((LispObj)boundary)) << 8); 930 938 } 931 939 } … … 996 1004 #else 997 1005 if ((tag_of(this) == tag_misc) && 998 (header_subtag(this) == subtag_function) &&999 1006 (header_subtag(next) == function_boundary_marker)) goto MarkFunctionDone; 1000 1007 #endif … … 1029 1036 (((int *)boundary)[1]) = 0; 1030 1037 #else 1031 this = ((LispObj)boundary) + (( int *)boundary)[1] >> 8;1032 ((int *)boundary)[ 1] &= 0xff;1038 this = ((LispObj)boundary) + ((*((int *)boundary)) >> 8); 1039 ((int *)boundary)[0] &= 0xff; 1033 1040 goto Climb; 1034 1041 #endif
Note:
See TracChangeset
for help on using the changeset viewer.
