2 * This software is part of the SBCL system. See the README file for
5 * This software is derived from the CMU CL system, which was
6 * written at Carnegie Mellon University and released into the
7 * public domain. The software is in the public domain and is
8 * provided with absolutely no warranty. See the COPYING and CREDITS
9 * files for more information.
19 #include "genesis/primitive-objects.h"
21 boolean
search_for_type(int type
, lispobj
**start
, int *count
)
25 while ((*count
== -1 || (*count
> 0)) &&
26 is_valid_lisp_addr((os_vm_address_t
)*start
)) {
32 if (widetag_of(obj
) == type
)
40 boolean
search_for_symbol(char *name
, lispobj
**start
, int *count
)
42 struct symbol
*symbol
;
43 struct vector
*symbol_name
;
45 while (search_for_type(SYMBOL_HEADER_WIDETAG
, start
, count
)) {
46 symbol
= (struct symbol
*)native_pointer((lispobj
)*start
);
47 if (lowtag_of(symbol
->name
) == OTHER_POINTER_LOWTAG
) {
48 symbol_name
= (struct vector
*)native_pointer(symbol
->name
);
49 if (is_valid_lisp_addr((os_vm_address_t
)symbol_name
) &&
50 widetag_of(symbol_name
->header
) == SIMPLE_STRING_WIDETAG
&&
51 strcmp((char *)symbol_name
->data
, name
) == 0)