Changeset 13466
- Timestamp:
- Feb 26, 2010, 8:00:05 PM (15 years ago)
- File:
-
- 1 edited
-
trunk/source/lisp-kernel/x86-gc.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/lisp-kernel/x86-gc.c
r13330 r13466 1959 1959 } 1960 1960 } 1961 1962 void 1963 update_self_references_in_range(LispObj *start, LispObj *end) 1964 { 1965 LispObj x1; 1966 int tag; 1967 1968 while (start < end) { 1969 x1 = *start; 1970 tag = fulltag_of(x1); 1971 if (immheader_tag_p(tag)) { 1972 start = (LispObj *)ptr_from_lispobj(skip_over_ivector(ptr_to_lispobj(start), x1)); 1973 } else if (!nodeheader_tag_p(tag)) { 1974 start += 2; 1975 } else { 1976 natural element_count = header_element_count(x1); 1977 natural size = (element_count+1+1) &~1; 1978 1979 if (header_subtag(x1) == subtag_function) { 1980 update_self_references(start); 1981 } 1982 start += size; 1983 } 1984 } 1985 } 1986 1961 1987 #endif 1962 1988 … … 3091 3117 memmove(oldfree, base, n); 3092 3118 UnCommitMemory((void *)base, n); 3119 #ifdef X8632 3120 update_self_references_in_range((LispObj *)oldfree,(LispObj *)(oldfree+n)); 3121 #endif 3093 3122 a->ndnodes = area_dnode(a, a->active); 3094 3123 src->active = src->low;
Note:
See TracChangeset
for help on using the changeset viewer.
