Some VM fixes

Slava Pestov 2009-05-04 15:11:31 -05:00
parent 8aedc6994b
commit 6729e70895
2 changed files with 3 additions and 4 deletions

View File

@ -218,10 +218,7 @@ void update_word_references(code_block *compiled)
the code heap with dead PICs that will be freed on the next the code heap with dead PICs that will be freed on the next
GC, we add them to the free list immediately. */ GC, we add them to the free list immediately. */
else if(compiled->block.type == PIC_TYPE) else if(compiled->block.type == PIC_TYPE)
{
fflush(stdout);
heap_free(&code,&compiled->block); heap_free(&code,&compiled->block);
}
else else
{ {
iterate_relocations(compiled,update_word_references_step); iterate_relocations(compiled,update_word_references_step);

View File

@ -108,7 +108,9 @@ PRIMITIVE(string)
static bool reallot_string_in_place_p(string *str, cell capacity) static bool reallot_string_in_place_p(string *str, cell capacity)
{ {
return in_zone(&nursery,str) && capacity <= string_capacity(str); return in_zone(&nursery,str)
&& (str->aux == F || in_zone(&nursery,untag<byte_array>(str->aux)))
&& capacity <= string_capacity(str);
} }
string* reallot_string(string *str_, cell capacity) string* reallot_string(string *str_, cell capacity)