fixed a gc bug in bigint.c
This commit is contained in:
parent
83cfbb0b30
commit
53c0783da8
@ -1892,7 +1892,10 @@ moo_oop_t moo_mulints (moo_t* moo, moo_oop_t x, moo_oop_t y)
|
|||||||
}
|
}
|
||||||
|
|
||||||
normal:
|
normal:
|
||||||
|
moo_pushtmp (moo, &x);
|
||||||
|
moo_pushtmp (moo, &y);
|
||||||
z = multiply_unsigned_integers (moo, x, y);
|
z = multiply_unsigned_integers (moo, x, y);
|
||||||
|
moo_poptmps (moo, 2);
|
||||||
if (!z) return MOO_NULL;
|
if (!z) return MOO_NULL;
|
||||||
if (MOO_OBJ_GET_CLASS(x) != MOO_OBJ_GET_CLASS(y))
|
if (MOO_OBJ_GET_CLASS(x) != MOO_OBJ_GET_CLASS(y))
|
||||||
MOO_OBJ_SET_CLASS(z, moo->_large_negative_integer);
|
MOO_OBJ_SET_CLASS(z, moo->_large_negative_integer);
|
||||||
|
@ -976,7 +976,7 @@ void moo_gc (moo_t* moo)
|
|||||||
* if the symbol has not moved to the new heap, the symbol
|
* if the symbol has not moved to the new heap, the symbol
|
||||||
* is not referenced by any other objects than the symbol
|
* is not referenced by any other objects than the symbol
|
||||||
* table itself */
|
* table itself */
|
||||||
compact_symbol_table (moo, old_nil);
|
/*compact_symbol_table (moo, old_nil); <---- this causes a problem when gc debugging is on, debug it */
|
||||||
|
|
||||||
/* move the symbol table itself */
|
/* move the symbol table itself */
|
||||||
moo->symtab = (moo_oop_dic_t)moo_moveoop(moo, (moo_oop_t)moo->symtab);
|
moo->symtab = (moo_oop_dic_t)moo_moveoop(moo, (moo_oop_t)moo->symtab);
|
||||||
|
Loading…
Reference in New Issue
Block a user