return 0;
}
+ /* If the containing object is a code object, presume that the
+ * pointer is valid, simply because it could be an unboxed return
+ * address. */
+ if (widetag_of(*start_addr) == CODE_HEADER_WIDETAG)
+ return 1;
+
return looks_like_valid_lisp_pointer_p(pointer, start_addr);
}
* expensive but important, since it vastly reduces the
* probability that random garbage will be bogusly interpreted as
* a pointer which prevents a page from moving. */
- if (!(code_page_p(addr_page_index)
- || (is_lisp_pointer((lispobj)addr) &&
- possibly_valid_dynamic_space_pointer(addr))))
+ if (!possibly_valid_dynamic_space_pointer(addr))
return 0;
#endif