projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.1.13: will be tagged as "sbcl-1.1.13"
[sbcl.git]
/
src
/
runtime
/
gc-common.c
diff --git
a/src/runtime/gc-common.c
b/src/runtime/gc-common.c
index
1fe6400
..
490e4d1
100644
(file)
--- a/
src/runtime/gc-common.c
+++ b/
src/runtime/gc-common.c
@@
-85,9
+85,9
@@
set_forwarding_pointer(lispobj * pointer, lispobj newspace_copy) {
return newspace_copy;
}
return newspace_copy;
}
-long (*scavtab[256])(lispobj *where, lispobj object);
+sword_t (*scavtab[256])(lispobj *where, lispobj object);
lispobj (*transother[256])(lispobj object);
lispobj (*transother[256])(lispobj object);
-long (*sizetab[256])(lispobj *where);
+sword_t (*sizetab[256])(lispobj *where);
struct weak_pointer *weak_pointers;
os_vm_size_t bytes_consed_between_gcs = 12*1024*1024;
struct weak_pointer *weak_pointers;
os_vm_size_t bytes_consed_between_gcs = 12*1024*1024;
@@
-100,33
+100,29
@@
os_vm_size_t bytes_consed_between_gcs = 12*1024*1024;
/* to copy a boxed object */
lispobj
/* to copy a boxed object */
lispobj
-copy_object(lispobj object, long nwords)
+copy_object(lispobj object, sword_t nwords)
{
return gc_general_copy_object(object, nwords, BOXED_PAGE_FLAG);
}
lispobj
{
return gc_general_copy_object(object, nwords, BOXED_PAGE_FLAG);
}
lispobj
-copy_code_object(lispobj object, long nwords)
+copy_code_object(lispobj object, sword_t nwords)
{
return gc_general_copy_object(object, nwords, CODE_PAGE_FLAG);
}
{
return gc_general_copy_object(object, nwords, CODE_PAGE_FLAG);
}
-static long scav_lose(lispobj *where, lispobj object); /* forward decl */
+static sword_t scav_lose(lispobj *where, lispobj object); /* forward decl */
/* FIXME: Most calls end up going to some trouble to compute an
* 'n_words' value for this function. The system might be a little
* simpler if this function used an 'end' parameter instead. */
void
/* FIXME: Most calls end up going to some trouble to compute an
* 'n_words' value for this function. The system might be a little
* simpler if this function used an 'end' parameter instead. */
void
-scavenge(lispobj *start, long n_words)
+scavenge(lispobj *start, sword_t n_words)
{
lispobj *end = start + n_words;
lispobj *object_ptr;
{
lispobj *end = start + n_words;
lispobj *object_ptr;
- long n_words_scavenged;
-
- for (object_ptr = start;
- object_ptr < end;
- object_ptr += n_words_scavenged) {
+ for (object_ptr = start; object_ptr < end;) {
lispobj object = *object_ptr;
#ifdef LISP_FEATURE_GENCGC
if (forwarding_pointer_p(object_ptr))
lispobj object = *object_ptr;
#ifdef LISP_FEATURE_GENCGC
if (forwarding_pointer_p(object_ptr))
@@
-141,16
+137,16
@@
scavenge(lispobj *start, long n_words)
if (forwarding_pointer_p(ptr)) {
/* Yes, there's a forwarding pointer. */
*object_ptr = LOW_WORD(forwarding_pointer_value(ptr));
if (forwarding_pointer_p(ptr)) {
/* Yes, there's a forwarding pointer. */
*object_ptr = LOW_WORD(forwarding_pointer_value(ptr));
- n_words_scavenged = 1;
+ object_ptr++;
} else {
/* Scavenge that pointer. */
} else {
/* Scavenge that pointer. */
- n_words_scavenged =
+ object_ptr +=
(scavtab[widetag_of(object)])(object_ptr, object);
}
} else {
/* It points somewhere other than oldspace. Leave it
* alone. */
(scavtab[widetag_of(object)])(object_ptr, object);
}
} else {
/* It points somewhere other than oldspace. Leave it
* alone. */
- n_words_scavenged = 1;
+ object_ptr++;
}
}
#if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
}
}
#if !defined(LISP_FEATURE_X86) && !defined(LISP_FEATURE_X86_64)
@@
-166,7
+162,6
@@
scavenge(lispobj *start, long n_words)
checking a single word and it's anything other than a
pointer, just hush it up */
int widetag = widetag_of(object);
checking a single word and it's anything other than a
pointer, just hush it up */
int widetag = widetag_of(object);
- n_words_scavenged = 1;
if ((scavtab[widetag] == scav_lose) ||
(((sizetab[widetag])(object_ptr)) > 1)) {
if ((scavtab[widetag] == scav_lose) ||
(((sizetab[widetag])(object_ptr)) > 1)) {
@@
-176,15
+171,15
@@
If you can reproduce this warning, please send a bug report\n\
(see manual page for details).\n",
object, object_ptr);
}
(see manual page for details).\n",
object, object_ptr);
}
+ object_ptr++;
}
#endif
else if (fixnump(object)) {
/* It's a fixnum: really easy.. */
}
#endif
else if (fixnump(object)) {
/* It's a fixnum: really easy.. */
- n_words_scavenged = 1;
+ object_ptr++;
} else {
/* It's some sort of header object or another. */
} else {
/* It's some sort of header object or another. */
- n_words_scavenged =
- (scavtab[widetag_of(object)])(object_ptr, object);
+ object_ptr += (scavtab[widetag_of(object)])(object_ptr, object);
}
}
gc_assert_verbose(object_ptr == end, "Final object pointer %p, start %p, end %p\n",
}
}
gc_assert_verbose(object_ptr == end, "Final object pointer %p, start %p, end %p\n",
@@
-194,7
+189,7
@@
If you can reproduce this warning, please send a bug report\n\
static lispobj trans_fun_header(lispobj object); /* forward decls */
static lispobj trans_boxed(lispobj object);
static lispobj trans_fun_header(lispobj object); /* forward decls */
static lispobj trans_boxed(lispobj object);
-static long
+static sword_t
scav_fun_pointer(lispobj *where, lispobj object)
{
lispobj *first_pointer;
scav_fun_pointer(lispobj *where, lispobj object)
{
lispobj *first_pointer;
@@
-237,7
+232,7
@@
trans_code(struct code *code)
struct code *new_code;
lispobj first, l_code, l_new_code;
uword_t nheader_words, ncode_words, nwords;
struct code *new_code;
lispobj first, l_code, l_new_code;
uword_t nheader_words, ncode_words, nwords;
- unsigned long displacement;
+ uword_t displacement;
lispobj fheaderl, *prev_pointer;
/* if object has already been transported, just return pointer */
lispobj fheaderl, *prev_pointer;
/* if object has already been transported, just return pointer */
@@
-265,7
+260,7
@@
trans_code(struct code *code)
#if defined(DEBUG_CODE_GC)
printf("Old code object at 0x%08x, new code object at 0x%08x.\n",
#if defined(DEBUG_CODE_GC)
printf("Old code object at 0x%08x, new code object at 0x%08x.\n",
- (unsigned long) code, (unsigned long) new_code);
+ (uword_t) code, (uword_t) new_code);
printf("Code object is %d words long.\n", nwords);
#endif
printf("Code object is %d words long.\n", nwords);
#endif
@@
-317,23
+312,23
@@
trans_code(struct code *code)
#ifdef LISP_FEATURE_GENCGC
/* Cheneygc doesn't need this os_flush_icache, it flushes the whole
spaces once when all copying is done. */
#ifdef LISP_FEATURE_GENCGC
/* Cheneygc doesn't need this os_flush_icache, it flushes the whole
spaces once when all copying is done. */
- os_flush_icache((os_vm_address_t) (((long *)new_code) + nheader_words),
- ncode_words * sizeof(long));
+ os_flush_icache((os_vm_address_t) (((sword_t *)new_code) + nheader_words),
+ ncode_words * sizeof(sword_t));
#endif
#endif
-#if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)
+#ifdef LISP_FEATURE_X86
gencgc_apply_code_fixups(code, new_code);
#endif
return new_code;
}
gencgc_apply_code_fixups(code, new_code);
#endif
return new_code;
}
-static long
+static sword_t
scav_code_header(lispobj *where, lispobj object)
{
struct code *code;
scav_code_header(lispobj *where, lispobj object)
{
struct code *code;
- long n_header_words, n_code_words, n_words;
+ sword_t n_header_words, n_code_words, n_words;
lispobj entry_point; /* tagged pointer to entry point */
struct simple_fun *function_ptr; /* untagged pointer to entry point */
lispobj entry_point; /* tagged pointer to entry point */
struct simple_fun *function_ptr; /* untagged pointer to entry point */
@@
-354,7
+349,7
@@
scav_code_header(lispobj *where, lispobj object)
gc_assert_verbose(is_lisp_pointer(entry_point),
"Entry point %lx\n is not a lisp pointer.",
gc_assert_verbose(is_lisp_pointer(entry_point),
"Entry point %lx\n is not a lisp pointer.",
- (long)entry_point);
+ (sword_t)entry_point);
function_ptr = (struct simple_fun *) native_pointer(entry_point);
gc_assert(widetag_of(function_ptr->header)==SIMPLE_FUN_HEADER_WIDETAG);
function_ptr = (struct simple_fun *) native_pointer(entry_point);
gc_assert(widetag_of(function_ptr->header)==SIMPLE_FUN_HEADER_WIDETAG);
@@
-378,11
+373,11
@@
trans_code_header(lispobj object)
}
}
-static long
+static sword_t
size_code_header(lispobj *where)
{
struct code *code;
size_code_header(lispobj *where)
{
struct code *code;
- long nheader_words, ncode_words, nwords;
+ sword_t nheader_words, ncode_words, nwords;
code = (struct code *) where;
code = (struct code *) where;
@@
-395,12
+390,12
@@
size_code_header(lispobj *where)
}
#if !defined(LISP_FEATURE_X86) && ! defined(LISP_FEATURE_X86_64)
}
#if !defined(LISP_FEATURE_X86) && ! defined(LISP_FEATURE_X86_64)
-static long
+static sword_t
scav_return_pc_header(lispobj *where, lispobj object)
{
lose("attempted to scavenge a return PC header where=0x%08x object=0x%08x\n",
scav_return_pc_header(lispobj *where, lispobj object)
{
lose("attempted to scavenge a return PC header where=0x%08x object=0x%08x\n",
- (unsigned long) where,
- (unsigned long) object);
+ (uword_t) where,
+ (uword_t) object);
return 0; /* bogus return value to satisfy static type checking */
}
#endif /* LISP_FEATURE_X86 */
return 0; /* bogus return value to satisfy static type checking */
}
#endif /* LISP_FEATURE_X86 */
@@
-409,7
+404,7
@@
static lispobj
trans_return_pc_header(lispobj object)
{
struct simple_fun *return_pc;
trans_return_pc_header(lispobj object)
{
struct simple_fun *return_pc;
- unsigned long offset;
+ uword_t offset;
struct code *code, *ncode;
return_pc = (struct simple_fun *) native_pointer(object);
struct code *code, *ncode;
return_pc = (struct simple_fun *) native_pointer(object);
@@
-417,7
+412,7
@@
trans_return_pc_header(lispobj object)
offset = HeaderValue(return_pc->header) * N_WORD_BYTES;
/* Transport the whole code object */
offset = HeaderValue(return_pc->header) * N_WORD_BYTES;
/* Transport the whole code object */
- code = (struct code *) ((unsigned long) return_pc - offset);
+ code = (struct code *) ((uword_t) return_pc - offset);
ncode = trans_code(code);
return ((lispobj) LOW_WORD(ncode) + offset) | OTHER_POINTER_LOWTAG;
ncode = trans_code(code);
return ((lispobj) LOW_WORD(ncode) + offset) | OTHER_POINTER_LOWTAG;
@@
-430,7
+425,7
@@
trans_return_pc_header(lispobj object)
* have to figure out that the function is still live. */
#if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)
* have to figure out that the function is still live. */
#if defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64)
-static long
+static sword_t
scav_closure_header(lispobj *where, lispobj object)
{
struct closure *closure;
scav_closure_header(lispobj *where, lispobj object)
{
struct closure *closure;
@@
-450,12
+445,12
@@
scav_closure_header(lispobj *where, lispobj object)
#endif
#if !(defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64))
#endif
#if !(defined(LISP_FEATURE_X86) || defined(LISP_FEATURE_X86_64))
-static long
+static sword_t
scav_fun_header(lispobj *where, lispobj object)
{
lose("attempted to scavenge a function header where=0x%08x object=0x%08x\n",
scav_fun_header(lispobj *where, lispobj object)
{
lose("attempted to scavenge a function header where=0x%08x object=0x%08x\n",
- (unsigned long) where,
- (unsigned long) object);
+ (uword_t) where,
+ (uword_t) object);
return 0; /* bogus return value to satisfy static type checking */
}
#endif /* LISP_FEATURE_X86 */
return 0; /* bogus return value to satisfy static type checking */
}
#endif /* LISP_FEATURE_X86 */
@@
-464,7
+459,7
@@
static lispobj
trans_fun_header(lispobj object)
{
struct simple_fun *fheader;
trans_fun_header(lispobj object)
{
struct simple_fun *fheader;
- unsigned long offset;
+ uword_t offset;
struct code *code, *ncode;
fheader = (struct simple_fun *) native_pointer(object);
struct code *code, *ncode;
fheader = (struct simple_fun *) native_pointer(object);
@@
-472,7
+467,7
@@
trans_fun_header(lispobj object)
offset = HeaderValue(fheader->header) * N_WORD_BYTES;
/* Transport the whole code object */
offset = HeaderValue(fheader->header) * N_WORD_BYTES;
/* Transport the whole code object */
- code = (struct code *) ((unsigned long) fheader - offset);
+ code = (struct code *) ((uword_t) fheader - offset);
ncode = trans_code(code);
return ((lispobj) LOW_WORD(ncode) + offset) | FUN_POINTER_LOWTAG;
ncode = trans_code(code);
return ((lispobj) LOW_WORD(ncode) + offset) | FUN_POINTER_LOWTAG;
@@
-483,7
+478,7
@@
trans_fun_header(lispobj object)
* instances
*/
* instances
*/
-static long
+static sword_t
scav_instance_pointer(lispobj *where, lispobj object)
{
lispobj copy, *first_pointer;
scav_instance_pointer(lispobj *where, lispobj object)
{
lispobj copy, *first_pointer;
@@
-509,7
+504,7
@@
scav_instance_pointer(lispobj *where, lispobj object)
static lispobj trans_list(lispobj object);
static lispobj trans_list(lispobj object);
-static long
+static sword_t
scav_list_pointer(lispobj *where, lispobj object)
{
lispobj first, *first_pointer;
scav_list_pointer(lispobj *where, lispobj object)
{
lispobj first, *first_pointer;
@@
-593,7
+588,7
@@
trans_list(lispobj object)
* scavenging and transporting other pointers
*/
* scavenging and transporting other pointers
*/
-static long
+static sword_t
scav_other_pointer(lispobj *where, lispobj object)
{
lispobj first, *first_pointer;
scav_other_pointer(lispobj *where, lispobj object)
{
lispobj first, *first_pointer;
@@
-623,13
+618,13
@@
scav_other_pointer(lispobj *where, lispobj object)
* immediate, boxed, and unboxed objects
*/
* immediate, boxed, and unboxed objects
*/
-static long
+static sword_t
size_pointer(lispobj *where)
{
return 1;
}
size_pointer(lispobj *where)
{
return 1;
}
-static long
+static sword_t
scav_immediate(lispobj *where, lispobj object)
{
return 1;
scav_immediate(lispobj *where, lispobj object)
{
return 1;
@@
-642,24
+637,24
@@
trans_immediate(lispobj object)
return NIL; /* bogus return value to satisfy static type checking */
}
return NIL; /* bogus return value to satisfy static type checking */
}
-static long
+static sword_t
size_immediate(lispobj *where)
{
return 1;
}
size_immediate(lispobj *where)
{
return 1;
}
-static long
+static sword_t
scav_boxed(lispobj *where, lispobj object)
{
return 1;
}
scav_boxed(lispobj *where, lispobj object)
{
return 1;
}
-static long
+static sword_t
scav_instance(lispobj *where, lispobj object)
{
lispobj nuntagged;
scav_instance(lispobj *where, lispobj object)
{
lispobj nuntagged;
- long ntotal = HeaderValue(object);
+ sword_t ntotal = HeaderValue(object);
lispobj layout = ((struct instance *)where)->slots[0];
if (!layout)
lispobj layout = ((struct instance *)where)->slots[0];
if (!layout)
@@
-677,7
+672,7
@@
static lispobj
trans_boxed(lispobj object)
{
lispobj header;
trans_boxed(lispobj object)
{
lispobj header;
- unsigned long length;
+ uword_t length;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-689,11
+684,11
@@
trans_boxed(lispobj object)
}
}
-static long
+static sword_t
size_boxed(lispobj *where)
{
lispobj header;
size_boxed(lispobj *where)
{
lispobj header;
- unsigned long length;
+ uword_t length;
header = *where;
length = HeaderValue(header) + 1;
header = *where;
length = HeaderValue(header) + 1;
@@
-705,7
+700,7
@@
size_boxed(lispobj *where)
/* Note: on the sparc we don't have to do anything special for fdefns, */
/* 'cause the raw-addr has a function lowtag. */
#if !defined(LISP_FEATURE_SPARC)
/* Note: on the sparc we don't have to do anything special for fdefns, */
/* 'cause the raw-addr has a function lowtag. */
#if !defined(LISP_FEATURE_SPARC)
-static long
+static sword_t
scav_fdefn(lispobj *where, lispobj object)
{
struct fdefn *fdefn;
scav_fdefn(lispobj *where, lispobj object)
{
struct fdefn *fdefn;
@@
-732,10
+727,10
@@
scav_fdefn(lispobj *where, lispobj object)
}
#endif
}
#endif
-static long
+static sword_t
scav_unboxed(lispobj *where, lispobj object)
{
scav_unboxed(lispobj *where, lispobj object)
{
- unsigned long length;
+ uword_t length;
length = HeaderValue(object) + 1;
length = CEILING(length, 2);
length = HeaderValue(object) + 1;
length = CEILING(length, 2);
@@
-747,7
+742,7
@@
static lispobj
trans_unboxed(lispobj object)
{
lispobj header;
trans_unboxed(lispobj object)
{
lispobj header;
- unsigned long length;
+ uword_t length;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-759,11
+754,11
@@
trans_unboxed(lispobj object)
return copy_unboxed_object(object, length);
}
return copy_unboxed_object(object, length);
}
-static long
+static sword_t
size_unboxed(lispobj *where)
{
lispobj header;
size_unboxed(lispobj *where)
{
lispobj header;
- unsigned long length;
+ uword_t length;
header = *where;
length = HeaderValue(header) + 1;
header = *where;
length = HeaderValue(header) + 1;
@@
-774,11
+769,11
@@
size_unboxed(lispobj *where)
\f
/* vector-like objects */
\f
/* vector-like objects */
-static long
+static sword_t
scav_base_string(lispobj *where, lispobj object)
{
struct vector *vector;
scav_base_string(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
/* NOTE: Strings contain one more byte of data than the length */
/* slot indicates. */
/* NOTE: Strings contain one more byte of data than the length */
/* slot indicates. */
@@
-793,7
+788,7
@@
static lispobj
trans_base_string(lispobj object)
{
struct vector *vector;
trans_base_string(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-808,11
+803,11
@@
trans_base_string(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_base_string(lispobj *where)
{
struct vector *vector;
size_base_string(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
/* NOTE: A string contains one more byte of data (a terminating
* '\0' to help when interfacing with C functions) than indicated
/* NOTE: A string contains one more byte of data (a terminating
* '\0' to help when interfacing with C functions) than indicated
@@
-825,7
+820,7
@@
size_base_string(lispobj *where)
return nwords;
}
return nwords;
}
-static long
+static sword_t
scav_character_string(lispobj *where, lispobj object)
{
struct vector *vector;
scav_character_string(lispobj *where, lispobj object)
{
struct vector *vector;
@@
-859,7
+854,7
@@
trans_character_string(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_character_string(lispobj *where)
{
struct vector *vector;
size_character_string(lispobj *where)
{
struct vector *vector;
@@
-880,7
+875,7
@@
static lispobj
trans_vector(lispobj object)
{
struct vector *vector;
trans_vector(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-892,11
+887,11
@@
trans_vector(lispobj object)
return copy_large_object(object, nwords);
}
return copy_large_object(object, nwords);
}
-static long
+static sword_t
size_vector(lispobj *where)
{
struct vector *vector;
size_vector(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-905,7
+900,7
@@
size_vector(lispobj *where)
return nwords;
}
return nwords;
}
-static long
+static sword_t
scav_vector_nil(lispobj *where, lispobj object)
{
return 2;
scav_vector_nil(lispobj *where, lispobj object)
{
return 2;
@@
-918,18
+913,18
@@
trans_vector_nil(lispobj object)
return copy_unboxed_object(object, 2);
}
return copy_unboxed_object(object, 2);
}
-static long
+static sword_t
size_vector_nil(lispobj *where)
{
/* Just the header word and the length word */
return 2;
}
size_vector_nil(lispobj *where)
{
/* Just the header word and the length word */
return 2;
}
-static long
+static sword_t
scav_vector_bit(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_bit(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-942,7
+937,7
@@
static lispobj
trans_vector_bit(lispobj object)
{
struct vector *vector;
trans_vector_bit(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-953,11
+948,11
@@
trans_vector_bit(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_bit(lispobj *where)
{
struct vector *vector;
size_vector_bit(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-966,11
+961,11
@@
size_vector_bit(lispobj *where)
return nwords;
}
return nwords;
}
-static long
+static sword_t
scav_vector_unsigned_byte_2(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_unsigned_byte_2(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-983,7
+978,7
@@
static lispobj
trans_vector_unsigned_byte_2(lispobj object)
{
struct vector *vector;
trans_vector_unsigned_byte_2(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-994,11
+989,11
@@
trans_vector_unsigned_byte_2(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_unsigned_byte_2(lispobj *where)
{
struct vector *vector;
size_vector_unsigned_byte_2(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1007,11
+1002,11
@@
size_vector_unsigned_byte_2(lispobj *where)
return nwords;
}
return nwords;
}
-static long
+static sword_t
scav_vector_unsigned_byte_4(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_unsigned_byte_4(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1024,7
+1019,7
@@
static lispobj
trans_vector_unsigned_byte_4(lispobj object)
{
struct vector *vector;
trans_vector_unsigned_byte_4(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-1034,11
+1029,11
@@
trans_vector_unsigned_byte_4(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_unsigned_byte_4(lispobj *where)
{
struct vector *vector;
size_vector_unsigned_byte_4(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1048,11
+1043,11
@@
size_vector_unsigned_byte_4(lispobj *where)
}
}
-static long
+static sword_t
scav_vector_unsigned_byte_8(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_unsigned_byte_8(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1069,7
+1064,7
@@
static lispobj
trans_vector_unsigned_byte_8(lispobj object)
{
struct vector *vector;
trans_vector_unsigned_byte_8(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-1080,11
+1075,11
@@
trans_vector_unsigned_byte_8(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_unsigned_byte_8(lispobj *where)
{
struct vector *vector;
size_vector_unsigned_byte_8(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1094,11
+1089,11
@@
size_vector_unsigned_byte_8(lispobj *where)
}
}
-static long
+static sword_t
scav_vector_unsigned_byte_16(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_unsigned_byte_16(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1111,7
+1106,7
@@
static lispobj
trans_vector_unsigned_byte_16(lispobj object)
{
struct vector *vector;
trans_vector_unsigned_byte_16(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-1122,11
+1117,11
@@
trans_vector_unsigned_byte_16(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_unsigned_byte_16(lispobj *where)
{
struct vector *vector;
size_vector_unsigned_byte_16(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1135,11
+1130,11
@@
size_vector_unsigned_byte_16(lispobj *where)
return nwords;
}
return nwords;
}
-static long
+static sword_t
scav_vector_unsigned_byte_32(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_unsigned_byte_32(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1152,7
+1147,7
@@
static lispobj
trans_vector_unsigned_byte_32(lispobj object)
{
struct vector *vector;
trans_vector_unsigned_byte_32(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-1163,11
+1158,11
@@
trans_vector_unsigned_byte_32(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_unsigned_byte_32(lispobj *where)
{
struct vector *vector;
size_vector_unsigned_byte_32(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1177,11
+1172,11
@@
size_vector_unsigned_byte_32(lispobj *where)
}
#if N_WORD_BITS == 64
}
#if N_WORD_BITS == 64
-static long
+static sword_t
scav_vector_unsigned_byte_64(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_unsigned_byte_64(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1194,7
+1189,7
@@
static lispobj
trans_vector_unsigned_byte_64(lispobj object)
{
struct vector *vector;
trans_vector_unsigned_byte_64(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-1205,11
+1200,11
@@
trans_vector_unsigned_byte_64(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_unsigned_byte_64(lispobj *where)
{
struct vector *vector;
size_vector_unsigned_byte_64(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1219,11
+1214,11
@@
size_vector_unsigned_byte_64(lispobj *where)
}
#endif
}
#endif
-static long
+static sword_t
scav_vector_single_float(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_single_float(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1236,7
+1231,7
@@
static lispobj
trans_vector_single_float(lispobj object)
{
struct vector *vector;
trans_vector_single_float(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-1247,11
+1242,11
@@
trans_vector_single_float(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_single_float(lispobj *where)
{
struct vector *vector;
size_vector_single_float(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1260,11
+1255,11
@@
size_vector_single_float(lispobj *where)
return nwords;
}
return nwords;
}
-static long
+static sword_t
scav_vector_double_float(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_double_float(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1277,7
+1272,7
@@
static lispobj
trans_vector_double_float(lispobj object)
{
struct vector *vector;
trans_vector_double_float(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-1288,11
+1283,11
@@
trans_vector_double_float(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_double_float(lispobj *where)
{
struct vector *vector;
size_vector_double_float(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1335,7
+1330,7
@@
static long
size_vector_long_float(lispobj *where)
{
struct vector *vector;
size_vector_long_float(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1347,11
+1342,11
@@
size_vector_long_float(lispobj *where)
#ifdef SIMPLE_ARRAY_COMPLEX_SINGLE_FLOAT_WIDETAG
#ifdef SIMPLE_ARRAY_COMPLEX_SINGLE_FLOAT_WIDETAG
-static long
+static sword_t
scav_vector_complex_single_float(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_complex_single_float(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1364,7
+1359,7
@@
static lispobj
trans_vector_complex_single_float(lispobj object)
{
struct vector *vector;
trans_vector_complex_single_float(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-1375,11
+1370,11
@@
trans_vector_complex_single_float(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_complex_single_float(lispobj *where)
{
struct vector *vector;
size_vector_complex_single_float(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1390,11
+1385,11
@@
size_vector_complex_single_float(lispobj *where)
#endif
#ifdef SIMPLE_ARRAY_COMPLEX_DOUBLE_FLOAT_WIDETAG
#endif
#ifdef SIMPLE_ARRAY_COMPLEX_DOUBLE_FLOAT_WIDETAG
-static long
+static sword_t
scav_vector_complex_double_float(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_complex_double_float(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1407,7
+1402,7
@@
static lispobj
trans_vector_complex_double_float(lispobj object)
{
struct vector *vector;
trans_vector_complex_double_float(lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
gc_assert(is_lisp_pointer(object));
gc_assert(is_lisp_pointer(object));
@@
-1418,11
+1413,11
@@
trans_vector_complex_double_float(lispobj object)
return copy_large_unboxed_object(object, nwords);
}
return copy_large_unboxed_object(object, nwords);
}
-static long
+static sword_t
size_vector_complex_double_float(lispobj *where)
{
struct vector *vector;
size_vector_complex_double_float(lispobj *where)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1438,7
+1433,7
@@
static long
scav_vector_complex_long_float(lispobj *where, lispobj object)
{
struct vector *vector;
scav_vector_complex_long_float(lispobj *where, lispobj object)
{
struct vector *vector;
- long length, nwords;
+ sword_t length, nwords;
vector = (struct vector *) where;
length = fixnum_value(vector->length);
vector = (struct vector *) where;
length = fixnum_value(vector->length);
@@
-1507,7
+1502,7
@@
trans_weak_pointer(lispobj object)
return copy;
}
return copy;
}
-static long
+static sword_t
size_weak_pointer(lispobj *where)
{
return WEAK_POINTER_NWORDS;
size_weak_pointer(lispobj *where)
{
return WEAK_POINTER_NWORDS;
@@
-1601,7
+1596,7
@@
weak_hash_entry_alivep (lispobj weakness, lispobj key, lispobj value)
* length) or NULL if it isn't an array of the specified widetag after
* all. */
static inline lispobj *
* length) or NULL if it isn't an array of the specified widetag after
* all. */
static inline lispobj *
-get_array_data (lispobj array, int widetag, unsigned long *length)
+get_array_data (lispobj array, int widetag, uword_t *length)
{
if (is_lisp_pointer(array) &&
(widetag_of(*(lispobj *)native_pointer(array)) == widetag)) {
{
if (is_lisp_pointer(array) &&
(widetag_of(*(lispobj *)native_pointer(array)) == widetag)) {
@@
-1622,16
+1617,16
@@
static void
scav_hash_table_entries (struct hash_table *hash_table)
{
lispobj *kv_vector;
scav_hash_table_entries (struct hash_table *hash_table)
{
lispobj *kv_vector;
- unsigned long kv_length;
+ uword_t kv_length;
lispobj *index_vector;
lispobj *index_vector;
- unsigned long length;
+ uword_t length;
lispobj *next_vector;
lispobj *next_vector;
- unsigned long next_vector_length;
+ uword_t next_vector_length;
lispobj *hash_vector;
lispobj *hash_vector;
- unsigned long hash_vector_length;
+ uword_t hash_vector_length;
lispobj empty_symbol;
lispobj weakness = hash_table->weakness;
lispobj empty_symbol;
lispobj weakness = hash_table->weakness;
- unsigned long i;
+ uword_t i;
kv_vector = get_array_data(hash_table->table,
SIMPLE_VECTOR_WIDETAG, &kv_length);
kv_vector = get_array_data(hash_table->table,
SIMPLE_VECTOR_WIDETAG, &kv_length);
@@
-1691,11
+1686,10
@@
scav_hash_table_entries (struct hash_table *hash_table)
}
}
}
}
-long
+sword_t
scav_vector (lispobj *where, lispobj object)
{
scav_vector (lispobj *where, lispobj object)
{
- unsigned long kv_length;
- lispobj *kv_vector;
+ uword_t kv_length;
struct hash_table *hash_table;
/* SB-VM:VECTOR-VALID-HASHING-SUBTYPE is set for EQ-based and weak
struct hash_table *hash_table;
/* SB-VM:VECTOR-VALID-HASHING-SUBTYPE is set for EQ-based and weak
@@
-1705,7
+1699,6
@@
scav_vector (lispobj *where, lispobj object)
return 1;
kv_length = fixnum_value(where[1]);
return 1;
kv_length = fixnum_value(where[1]);
- kv_vector = where + 2; /* Skip the header and length. */
/*FSHOW((stderr,"/kv_length = %d\n", kv_length));*/
/* Scavenge element 0, which may be a hash-table structure. */
/*FSHOW((stderr,"/kv_length = %d\n", kv_length));*/
/* Scavenge element 0, which may be a hash-table structure. */
@@
-1716,11
+1709,11
@@
scav_vector (lispobj *where, lispobj object)
* sets the header in %%PUTHASH.
*/
fprintf(stderr,
* sets the header in %%PUTHASH.
*/
fprintf(stderr,
- "Warning: no pointer at %lx in hash table: this indicates "
+ "Warning: no pointer at %p in hash table: this indicates "
"non-fatal corruption caused by concurrent access to a "
"hash-table from multiple threads. Any accesses to "
"hash-tables shared between threads should be protected "
"non-fatal corruption caused by concurrent access to a "
"hash-table from multiple threads. Any accesses to "
"hash-tables shared between threads should be protected "
- "by locks.\n", (unsigned long)&where[2]);
+ "by locks.\n", (uword_t)&where[2]);
// We've scavenged three words.
return 3;
}
// We've scavenged three words.
return 3;
}
@@
-1814,13
+1807,13
@@
scan_weak_hash_table (struct hash_table *hash_table)
{
lispobj *kv_vector;
lispobj *index_vector;
{
lispobj *kv_vector;
lispobj *index_vector;
- unsigned long length = 0; /* prevent warning */
+ uword_t length = 0; /* prevent warning */
lispobj *next_vector;
lispobj *next_vector;
- unsigned long next_vector_length = 0; /* prevent warning */
+ uword_t next_vector_length = 0; /* prevent warning */
lispobj *hash_vector;
lispobj empty_symbol;
lispobj weakness = hash_table->weakness;
lispobj *hash_vector;
lispobj empty_symbol;
lispobj weakness = hash_table->weakness;
- unsigned long i;
+ uword_t i;
kv_vector = get_array_data(hash_table->table,
SIMPLE_VECTOR_WIDETAG, NULL);
kv_vector = get_array_data(hash_table->table,
SIMPLE_VECTOR_WIDETAG, NULL);
@@
-1860,11
+1853,11
@@
scan_weak_hash_tables (void)
* initialization
*/
* initialization
*/
-static long
+static sword_t
scav_lose(lispobj *where, lispobj object)
{
lose("no scavenge function for object 0x%08x (widetag 0x%x)\n",
scav_lose(lispobj *where, lispobj object)
{
lose("no scavenge function for object 0x%08x (widetag 0x%x)\n",
- (unsigned long)object,
+ (uword_t)object,
widetag_of(*where));
return 0; /* bogus return value to satisfy static type checking */
widetag_of(*where));
return 0; /* bogus return value to satisfy static type checking */
@@
-1874,16
+1867,16
@@
static lispobj
trans_lose(lispobj object)
{
lose("no transport function for object 0x%08x (widetag 0x%x)\n",
trans_lose(lispobj object)
{
lose("no transport function for object 0x%08x (widetag 0x%x)\n",
- (unsigned long)object,
+ (uword_t)object,
widetag_of(*(lispobj*)native_pointer(object)));
return NIL; /* bogus return value to satisfy static type checking */
}
widetag_of(*(lispobj*)native_pointer(object)));
return NIL; /* bogus return value to satisfy static type checking */
}
-static long
+static sword_t
size_lose(lispobj *where)
{
lose("no size function for object at 0x%08x (widetag 0x%x)\n",
size_lose(lispobj *where)
{
lose("no size function for object at 0x%08x (widetag 0x%x)\n",
- (unsigned long)where,
+ (uword_t)where,
widetag_of(*where));
return 1; /* bogus return value to satisfy static type checking */
}
widetag_of(*where));
return 1; /* bogus return value to satisfy static type checking */
}
@@
-1896,7
+1889,7
@@
size_lose(lispobj *where)
void
gc_init_tables(void)
{
void
gc_init_tables(void)
{
- unsigned long i, j;
+ uword_t i, j;
/* Set default value in all slots of scavenge table. FIXME
* replace this gnarly sizeof with something based on
/* Set default value in all slots of scavenge table. FIXME
* replace this gnarly sizeof with something based on
@@
-1948,6
+1941,9
@@
gc_init_tables(void)
#ifdef COMPLEX_LONG_FLOAT_WIDETAG
scavtab[COMPLEX_LONG_FLOAT_WIDETAG] = scav_unboxed;
#endif
#ifdef COMPLEX_LONG_FLOAT_WIDETAG
scavtab[COMPLEX_LONG_FLOAT_WIDETAG] = scav_unboxed;
#endif
+#ifdef SIMD_PACK_WIDETAG
+ scavtab[SIMD_PACK_WIDETAG] = scav_unboxed;
+#endif
scavtab[SIMPLE_ARRAY_WIDETAG] = scav_boxed;
scavtab[SIMPLE_BASE_STRING_WIDETAG] = scav_base_string;
#ifdef SIMPLE_CHARACTER_STRING_WIDETAG
scavtab[SIMPLE_ARRAY_WIDETAG] = scav_boxed;
scavtab[SIMPLE_BASE_STRING_WIDETAG] = scav_base_string;
#ifdef SIMPLE_CHARACTER_STRING_WIDETAG
@@
-2186,6
+2182,9
@@
gc_init_tables(void)
transother[SYMBOL_HEADER_WIDETAG] = trans_boxed;
transother[CHARACTER_WIDETAG] = trans_immediate;
transother[SAP_WIDETAG] = trans_unboxed;
transother[SYMBOL_HEADER_WIDETAG] = trans_boxed;
transother[CHARACTER_WIDETAG] = trans_immediate;
transother[SAP_WIDETAG] = trans_unboxed;
+#ifdef SIMD_PACK_WIDETAG
+ transother[SIMD_PACK_WIDETAG] = trans_unboxed;
+#endif
transother[UNBOUND_MARKER_WIDETAG] = trans_immediate;
transother[NO_TLS_VALUE_MARKER_WIDETAG] = trans_immediate;
transother[WEAK_POINTER_WIDETAG] = trans_weak_pointer;
transother[UNBOUND_MARKER_WIDETAG] = trans_immediate;
transother[NO_TLS_VALUE_MARKER_WIDETAG] = trans_immediate;
transother[WEAK_POINTER_WIDETAG] = trans_weak_pointer;
@@
-2329,6
+2328,9
@@
gc_init_tables(void)
sizetab[SYMBOL_HEADER_WIDETAG] = size_boxed;
sizetab[CHARACTER_WIDETAG] = size_immediate;
sizetab[SAP_WIDETAG] = size_unboxed;
sizetab[SYMBOL_HEADER_WIDETAG] = size_boxed;
sizetab[CHARACTER_WIDETAG] = size_immediate;
sizetab[SAP_WIDETAG] = size_unboxed;
+#ifdef SIMD_PACK_WIDETAG
+ sizetab[SIMD_PACK_WIDETAG] = size_unboxed;
+#endif
sizetab[UNBOUND_MARKER_WIDETAG] = size_immediate;
sizetab[NO_TLS_VALUE_MARKER_WIDETAG] = size_immediate;
sizetab[WEAK_POINTER_WIDETAG] = size_weak_pointer;
sizetab[UNBOUND_MARKER_WIDETAG] = size_immediate;
sizetab[NO_TLS_VALUE_MARKER_WIDETAG] = size_immediate;
sizetab[WEAK_POINTER_WIDETAG] = size_weak_pointer;
@@
-2501,6
+2503,9
@@
looks_like_valid_lisp_pointer_p(lispobj pointer, lispobj *start_addr)
#ifdef COMPLEX_LONG_FLOAT_WIDETAG
case COMPLEX_LONG_FLOAT_WIDETAG:
#endif
#ifdef COMPLEX_LONG_FLOAT_WIDETAG
case COMPLEX_LONG_FLOAT_WIDETAG:
#endif
+#ifdef SIMD_PACK_WIDETAG
+ case SIMD_PACK_WIDETAG:
+#endif
case SIMPLE_ARRAY_WIDETAG:
case COMPLEX_BASE_STRING_WIDETAG:
#ifdef COMPLEX_CHARACTER_STRING_WIDETAG
case SIMPLE_ARRAY_WIDETAG:
case COMPLEX_BASE_STRING_WIDETAG:
#ifdef COMPLEX_CHARACTER_STRING_WIDETAG
@@
-2745,23
+2750,23
@@
scrub_thread_control_stack(struct thread *th)
#ifdef LISP_FEATURE_STACK_GROWS_DOWNWARD_NOT_UPWARD
do {
*sp = 0;
#ifdef LISP_FEATURE_STACK_GROWS_DOWNWARD_NOT_UPWARD
do {
*sp = 0;
- } while (((unsigned long)sp--) & (BYTES_ZERO_BEFORE_END - 1));
+ } while (((uword_t)sp--) & (BYTES_ZERO_BEFORE_END - 1));
if ((os_vm_address_t)sp < (hard_guard_page_address + os_vm_page_size))
return;
do {
if (*sp)
goto scrub;
if ((os_vm_address_t)sp < (hard_guard_page_address + os_vm_page_size))
return;
do {
if (*sp)
goto scrub;
- } while (((unsigned long)sp--) & (BYTES_ZERO_BEFORE_END - 1));
+ } while (((uword_t)sp--) & (BYTES_ZERO_BEFORE_END - 1));
#else
do {
*sp = 0;
#else
do {
*sp = 0;
- } while (((unsigned long)++sp) & (BYTES_ZERO_BEFORE_END - 1));
+ } while (((uword_t)++sp) & (BYTES_ZERO_BEFORE_END - 1));
if ((os_vm_address_t)sp >= hard_guard_page_address)
return;
do {
if (*sp)
goto scrub;
if ((os_vm_address_t)sp >= hard_guard_page_address)
return;
do {
if (*sp)
goto scrub;
- } while (((unsigned long)++sp) & (BYTES_ZERO_BEFORE_END - 1));
+ } while (((uword_t)++sp) & (BYTES_ZERO_BEFORE_END - 1));
#endif
#endif /* LISP_FEATURE_C_STACK_IS_CONTROL_STACK */
}
#endif
#endif /* LISP_FEATURE_C_STACK_IS_CONTROL_STACK */
}
@@
-2846,7
+2851,7
@@
static int boxed_registers[] = BOXED_REGISTERS;
*os_context_ctr_addr(context)
#define INTERIOR_POINTER_VARS(name) \
*os_context_ctr_addr(context)
#define INTERIOR_POINTER_VARS(name) \
- unsigned long name##_offset; \
+ uword_t name##_offset; \
int name##_register_pair
#define PAIR_INTERIOR_POINTER(name) \
int name##_register_pair
#define PAIR_INTERIOR_POINTER(name) \
@@
-2875,8
+2880,8
@@
static int boxed_registers[] = BOXED_REGISTERS;
static void
static void
-pair_interior_pointer(os_context_t *context, unsigned long pointer,
- unsigned long *saved_offset, int *register_pair)
+pair_interior_pointer(os_context_t *context, uword_t pointer,
+ uword_t *saved_offset, int *register_pair)
{
int i;
{
int i;
@@
-2887,11
+2892,11
@@
pair_interior_pointer(os_context_t *context, unsigned long pointer,
*/
/* 0x7FFFFFFF on 32-bit platforms;
0x7FFFFFFFFFFFFFFF on 64-bit platforms */
*/
/* 0x7FFFFFFF on 32-bit platforms;
0x7FFFFFFFFFFFFFFF on 64-bit platforms */
- *saved_offset = (((unsigned long)1) << (N_WORD_BITS - 1)) - 1;
+ *saved_offset = (((uword_t)1) << (N_WORD_BITS - 1)) - 1;
*register_pair = -1;
for (i = 0; i < (sizeof(boxed_registers) / sizeof(int)); i++) {
*register_pair = -1;
for (i = 0; i < (sizeof(boxed_registers) / sizeof(int)); i++) {
- unsigned long reg;
- long offset;
+ uword_t reg;
+ sword_t offset;
int index;
index = boxed_registers[i];
int index;
index = boxed_registers[i];