Index: src/hydrogen-instructions.cc |
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc |
index 8e5b9bc41dc08c26f63a9241d07f99a6e7834586..1e6073aa72e3ef5874a6365b0674408aeba6bf6a 100644 |
--- a/src/hydrogen-instructions.cc |
+++ b/src/hydrogen-instructions.cc |
@@ -3216,6 +3216,38 @@ void HAllocate::HandleSideEffectDominator(GVNFlag side_effect, |
new_dominator_size->InsertBefore(dominator_allocate_instr); |
dominator_allocate_instr->UpdateSize(new_dominator_size); |
+#ifdef VERIFY_HEAP |
+ 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); |
+#endif |
+ |
// After that replace the dominated allocate instruction. |
HInstruction* dominated_allocate_instr = |
new(zone) HInnerAllocatedObject(dominator_allocate_instr, |