Commit 90a8ac78 authored by hpayer@chromium.org's avatar hpayer@chromium.org

Remove filler map when folding allocations and turn on allocation folding.

BUG=
R=titzer@chromium.org

Review URL: https://codereview.chromium.org/18384004

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent c0603d29
......@@ -215,7 +215,7 @@ DEFINE_bool(use_gvn, true, "use hydrogen global value numbering")
DEFINE_bool(use_canonicalizing, true, "use hydrogen instruction canonicalizing")
DEFINE_bool(use_inlining, true, "use function inlining")
DEFINE_bool(use_escape_analysis, false, "use hydrogen escape analysis")
DEFINE_bool(use_allocation_folding, false, "use allocation folding")
DEFINE_bool(use_allocation_folding, true, "use allocation folding")
DEFINE_int(max_inlined_source_size, 600,
"maximum source size in bytes considered for a single inlining")
DEFINE_int(max_inlined_nodes, 196,
......
......@@ -3216,37 +3216,6 @@ void HAllocate::HandleSideEffectDominator(GVNFlag side_effect,
new_dominator_size->InsertBefore(dominator_allocate_instr);
dominator_allocate_instr->UpdateSize(new_dominator_size);
// TODO(hpayer): Remove filler map but make sure new space is valid.
HInstruction* free_space_instr =
new(zone) HInnerAllocatedObject(dominator_allocate_instr,
dominator_size_constant,
type());
free_space_instr->InsertAfter(dominator_allocate_instr);
HConstant* filler_map = new(zone) HConstant(
isolate()->factory()->free_space_map(),
UniqueValueId(isolate()->heap()->free_space_map()),
Representation::Tagged(),
HType::Tagged(),
false,
true,
false,
false);
filler_map->InsertAfter(free_space_instr);
HInstruction* store_map = new(zone) HStoreNamedField(
free_space_instr, HObjectAccess::ForMap(), filler_map);
store_map->SetFlag(HValue::kHasNoObservableSideEffects);
store_map->InsertAfter(filler_map);
HInstruction* free_space_size = new(zone) HConstant(current_size_constant);
free_space_size->InsertAfter(store_map);
HObjectAccess access =
HObjectAccess::ForJSObjectOffset(FreeSpace::kSizeOffset);
HInstruction* store_size = new(zone) HStoreNamedField(
free_space_instr, access, free_space_size);
store_size->SetFlag(HValue::kHasNoObservableSideEffects);
store_size->InsertAfter(free_space_size);
// After that replace the dominated allocate instruction.
HInstruction* dominated_allocate_instr =
new(zone) HInnerAllocatedObject(dominator_allocate_instr,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment