https://chromiumcodereview.appspot.com/10386046/diff/1/src/incremental-marking.cc File src/incremental-marking.cc (right):
https://chromiumcodereview.appspot.com/10386046/diff/1/src/incremental-marking.cc#newcode660 src/incremental-marking.cc:660: Map* map = obj->map(); On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
Hurry should also treat maps in a special way.
Done. https://chromiumcodereview.appspot.com/10386046/diff/1/src/incremental-marking.cc#newcode827 src/incremental-marking.cc:827: } else if (map->instance_type() == JS_MAP_TYPE) { On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
s/JS_MAP_TYPE/MAP_TYPE/
Already fixed in second patch set. https://chromiumcodereview.appspot.com/10386046/diff/2001/src/incremental-marking-inl.h File src/incremental-marking-inl.h (right): https://chromiumcodereview.appspot.com/10386046/diff/2001/src/incremental-marking-inl.h#newcode131 src/incremental-marking-inl.h:131: bool IncrementalMarking::MarkObject(HeapObject* obj) { On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
I suggest naming it MarkObjectAndPush
Done. https://chromiumcodereview.appspot.com/10386046/diff/2001/src/incremental-marking-inl.h#newcode145 src/incremental-marking-inl.h:145: MarkBlackOrKeepGrey(mark_bit); On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
Can it be grey at this point? I don't think so.
Done, inlined mark bit setting. https://chromiumcodereview.appspot.com/10386046/diff/2001/src/incremental-marking.cc File src/incremental-marking.cc (right): https://chromiumcodereview.appspot.com/10386046/diff/2001/src/incremental-marking.cc#newcode836 src/incremental-marking.cc:836: if (FLAG_collect_maps && map->instance_type() >= FIRST_JS_RECEIVER_TYPE) { On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
long line
Done. https://chromiumcodereview.appspot.com/10386046/diff/2001/src/mark-compact-inl.h File src/mark-compact-inl.h (right): https://chromiumcodereview.appspot.com/10386046/diff/2001/src/mark-compact-inl.h#newcode55 src/mark-compact-inl.h:55: bool MarkCompactCollector::MarkObject(HeapObject* obj) { On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
Usually we avoid to use function overloading (per style guide).
In this case it's especially dangerous as MarkObject(HeapObject*) and MarkObject(HeapObject*, MarkBit) do _completely_ different things.
Done, renamed to MarkObjectAndPush(). https://chromiumcodereview.appspot.com/10386046/diff/2001/src/mark-compact.cc File src/mark-compact.cc (right): https://chromiumcodereview.appspot.com/10386046/diff/2001/src/mark-compact.cc#newcode286 src/mark-compact.cc:286: if (FLAG_collect_maps) ClearNonLiveTransitions(); On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
It seems that running with --nocollect-maps would really cause maps
tree to be
retained in both directions (from leaves to root and from root to
leaves). Yes, now the flag treats pointers in both direction (i.e. "up the tree" and "down the tree") as strong. But IMHO that is what the name of that flag suggests. You are right, we still need to figure out how to collect whole map trees when their roots are unreachable. But that should be done without a flag. https://chromiumcodereview.appspot.com/10386046/diff/2001/src/mark-compact.cc#newcode665 src/mark-compact.cc:665: clear_map_transitions_ = true; On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
Why does not it depend on FLAG_collect_maps?
Flag and this field have some very strange relation.
Having something that is always true does not help.
If you change it to false then potentially you might get broken heap
structure
(back pointer from live map pointing to a dead map). So for now I
suggest we
should either remove it or make it work.
Done, removed flag for now. https://chromiumcodereview.appspot.com/10386046/diff/2001/src/mark-compact.cc#newcode1808 src/mark-compact.cc:1808: // Mark the Object* fields of the Map. Since the descriptor array has been On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
Try to move this to MarkMapContents to further share code?
Done. https://chromiumcodereview.appspot.com/10386046/diff/2001/src/mark-compact.h File src/mark-compact.h (right): https://chromiumcodereview.appspot.com/10386046/diff/2001/src/mark-compact.h#newcode404 src/mark-compact.h:404: MarkCompactCollector* mark_compact_collector() { On 2012/05/11 12:58:35, Vyacheslav Egorov wrote:
empty line before definition
Done. https://chromiumcodereview.appspot.com/10386046/ -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
