X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fgc-common.c;h=3f251bf845eb33d0577b499755bcd455b8934923;hb=dc5d8cef786c974258601109f79ab18f874b1270;hp=3a76955eb7f7512bfc1b3e0a28fcbaba75d98960;hpb=f318d0b1654042ed8f1b887852a9ba1f539208e4;p=sbcl.git diff --git a/src/runtime/gc-common.c b/src/runtime/gc-common.c index 3a76955..3f251bf 100644 --- a/src/runtime/gc-common.c +++ b/src/runtime/gc-common.c @@ -54,6 +54,7 @@ #endif size_t dynamic_space_size = DEFAULT_DYNAMIC_SPACE_SIZE; +size_t thread_control_stack_size = DEFAULT_CONTROL_STACK_SIZE; inline static boolean forwarding_pointer_p(lispobj *pointer) { @@ -137,7 +138,9 @@ scavenge(lispobj *start, long n_words) lispobj object = *object_ptr; #ifdef LISP_FEATURE_GENCGC - gc_assert(!forwarding_pointer_p(object_ptr)); + if (forwarding_pointer_p(object_ptr)) + lose("unexpect forwarding pointer in scavenge: %p, start=%p, n=%l\n", + object_ptr, start, n_words); #endif if (is_lisp_pointer(object)) { if (from_space_p(object)) { @@ -1638,7 +1641,7 @@ scav_hash_table_entries (struct hash_table *hash_table) unsigned long hash_vector_length; lispobj empty_symbol; lispobj weakness = hash_table->weakness; - long i; + unsigned long i; kv_vector = get_array_data(hash_table->table, SIMPLE_VECTOR_WIDETAG, &kv_length); @@ -1722,7 +1725,12 @@ scav_vector (lispobj *where, lispobj object) * and fills it with zero, but some other thread simulatenously * sets the header in %%PUTHASH. */ - fprintf(stderr, "Warning: no pointer at %x 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 by locks.\n", &where[2]); + fprintf(stderr, + "Warning: no pointer at %lx 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 " + "by locks.\n", (unsigned long)&where[2]); // We've scavenged three words. return 3; } @@ -1822,7 +1830,7 @@ scan_weak_hash_table (struct hash_table *hash_table) lispobj *hash_vector; lispobj empty_symbol; lispobj weakness = hash_table->weakness; - long i; + unsigned long i; kv_vector = get_array_data(hash_table->table, SIMPLE_VECTOR_WIDETAG, NULL); @@ -1898,7 +1906,7 @@ size_lose(lispobj *where) void gc_init_tables(void) { - long i; + unsigned long i; /* Set default value in all slots of scavenge table. FIXME * replace this gnarly sizeof with something based on @@ -2446,7 +2454,7 @@ maybe_gc(os_context_t *context) /* SIG_STOP_FOR_GC needs to be enabled before we can call lisp: * otherwise two threads racing here may deadlock: the other will * wait on the GC lock, and the other cannot stop the first one... */ - funcall0(SymbolFunction(SUB_GC)); + funcall0(StaticSymbolFunction(SUB_GC)); undo_fake_foreign_function_call(context); return 1; }