Drive by comments about this implementation. We should probably take this now to roll out a fix quickly, but then address the issue raised here about collection order.
-Ivan http://codereview.chromium.org/100344/diff/1/3 File src/mark-compact.cc (right): http://codereview.chromium.org/100344/diff/1/3#newcode588 Line 588: // not receive a weak reference callback. In retrospect was that not always a problem even with regular non-external strings only being referred to by a sliced string in the symbol table? http://codereview.chromium.org/100344/diff/1/3#newcode601 Line 601: SetMark(symbol_table); The flipping of mark bits to marked and back to unmarked seems fragile to me. Currently this only works because of the order (symbol table walking being first.) Since we need to handle the symbol table in a special way. The direct references are not marked but any depending ones. Can we add a special marker instead? That way we would not be depending on resetting mark bits during a GC, which is an unneeded break of the assertions of the GC algorithm and adds unknown ordering dependencies in the marking steps making the code more complex. http://codereview.chromium.org/100344 --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
