Changeset 13512
- Timestamp:
- Mar 12, 2010, 12:50:04 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/ppc-gc.c
r13511 r13512 853 853 check_refmap_consistency(LispObj *start, LispObj *end, bitvector refbits) 854 854 { 855 LispObj x1, *base = start ;855 LispObj x1, *base = start, *prev = start; 856 856 int tag; 857 857 natural ref_dnode, node_dnode; … … 860 860 while (start < end) { 861 861 x1 = *start; 862 prev = start; 862 863 tag = fulltag_of(x1); 863 864 if (immheader_tag_p(tag)) { … … 867 868 if (header_subtag(x1) == subtag_weak) 868 869 lenient_next_dnode == true; 869 } 870 if ((tag == fulltag_misc) || (tag == fulltag_cons)) { 871 node_dnode = gc_area_dnode(x1); 872 if (node_dnode < GCndnodes_in_area) { 873 intergen_ref = true; 874 } 875 } 876 if (lenient_this_dnode) { 877 lenient_this_dnode = false; 878 } else { 879 if (intergen_ref == false) { 880 x1 = start[1]; 881 tag = fulltag_of(x1); 882 if ((tag == fulltag_misc) || (tag == fulltag_cons)) { 883 node_dnode = gc_area_dnode(x1); 884 if (node_dnode < GCndnodes_in_area) { 885 intergen_ref = true; 886 } 870 } 871 if ((tag == fulltag_misc) || (tag == fulltag_cons)) { 872 node_dnode = gc_area_dnode(x1); 873 if (node_dnode < GCndnodes_in_area) { 874 intergen_ref = true; 875 } 876 } 877 if (lenient_this_dnode) { 878 lenient_this_dnode = false; 879 } else { 880 if (intergen_ref == false) { 881 x1 = start[1]; 882 tag = fulltag_of(x1); 883 if ((tag == fulltag_misc) || (tag == fulltag_cons)) { 884 node_dnode = gc_area_dnode(x1); 885 if (node_dnode < GCndnodes_in_area) { 886 intergen_ref = true; 887 887 } 888 888 } 889 889 } 890 if (intergen_ref) {891 ref_dnode = area_dnode(start, base);892 if (!lenient_after_weak_header && !ref_bit(refbits, ref_dnode)) {893 Bug(NULL, "Missing memoization in doublenode at 0x" LISP "\n", start);894 set_bit(refbits, ref_dnode);895 }896 } 897 start += 2;898 if (lenient_next_dnode) {899 lenient_this_dnode = true;900 }901 lenient_next_dnode = false;902 }890 } 891 if (intergen_ref) { 892 ref_dnode = area_dnode(start, base); 893 if (!ref_bit(refbits, ref_dnode)) { 894 Bug(NULL, "Missing memoization in doublenode at 0x" LISP "\n", start); 895 set_bit(refbits, ref_dnode); 896 } 897 } 898 start += 2; 899 if (lenient_next_dnode) { 900 lenient_this_dnode = true; 901 } 902 lenient_next_dnode = false; 903 903 } 904 904 }
Note: See TracChangeset
for help on using the changeset viewer.