Add flag --collect-megamorphic-maps-from-stub-cache to help diagnose a

memory leak.
Review URL: http://codereview.chromium.org/8599006

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10031 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
erik.corry@gmail.com 2011-11-18 14:08:57 +00:00
parent a0f3c5d451
commit 5c1044bb54
2 changed files with 5 additions and 1 deletions

View File

@ -128,6 +128,9 @@ DEFINE_bool(use_inlining, true, "use function inlining")
DEFINE_bool(limit_inlining, true, "limit code size growth from inlining") DEFINE_bool(limit_inlining, true, "limit code size growth from inlining")
DEFINE_bool(eliminate_empty_blocks, true, "eliminate empty blocks") DEFINE_bool(eliminate_empty_blocks, true, "eliminate empty blocks")
DEFINE_bool(loop_invariant_code_motion, true, "loop invariant code motion") DEFINE_bool(loop_invariant_code_motion, true, "loop invariant code motion")
DEFINE_bool(collect_megamorphic_maps_from_stub_cache,
true,
"crankshaft harvests type feedback from stub cache")
DEFINE_bool(hydrogen_stats, false, "print statistics for hydrogen") DEFINE_bool(hydrogen_stats, false, "print statistics for hydrogen")
DEFINE_bool(trace_hydrogen, false, "trace generated hydrogen to file") DEFINE_bool(trace_hydrogen, false, "trace generated hydrogen to file")
DEFINE_bool(trace_inlining, false, "trace inlining decisions") DEFINE_bool(trace_inlining, false, "trace inlining decisions")

View File

@ -419,7 +419,8 @@ void TypeFeedbackOracle::CollectReceiverTypes(unsigned ast_id,
ASSERT(Handle<Code>::cast(object)->ic_state() == MEGAMORPHIC); ASSERT(Handle<Code>::cast(object)->ic_state() == MEGAMORPHIC);
} else if (object->IsMap()) { } else if (object->IsMap()) {
types->Add(Handle<Map>::cast(object)); types->Add(Handle<Map>::cast(object));
} else if (Handle<Code>::cast(object)->ic_state() == MEGAMORPHIC) { } else if (FLAG_collect_megamorphic_maps_from_stub_cache &&
Handle<Code>::cast(object)->ic_state() == MEGAMORPHIC) {
types->Reserve(4); types->Reserve(4);
ASSERT(object->IsCode()); ASSERT(object->IsCode());
isolate_->stub_cache()->CollectMatchingMaps(types, *name, flags); isolate_->stub_cache()->CollectMatchingMaps(types, *name, flags);