Make new space iterable for --log-gc and --heap-stats options

R=hpayer@chromium.org
BUG=370827
TEST=test/mjsunit/regress/regress-370827.js
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21209 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
jarin@chromium.org 2014-05-09 09:23:10 +00:00
parent c02ad39c10
commit 3976ebef93
2 changed files with 26 additions and 6 deletions

View File

@ -3825,19 +3825,18 @@ bool HAllocate::HandleSideEffectDominator(GVNFlag side_effect,
dominator_allocate);
dominator_allocate->UpdateSize(new_dominator_size_constant);
bool keep_new_space_iterable = FLAG_log_gc || FLAG_heap_stats;
#ifdef VERIFY_HEAP
if (FLAG_verify_heap && dominator_allocate->IsNewSpaceAllocation()) {
keep_new_space_iterable = keep_new_space_iterable || FLAG_verify_heap;
#endif
if (keep_new_space_iterable && dominator_allocate->IsNewSpaceAllocation()) {
dominator_allocate->MakePrefillWithFiller();
} else {
// TODO(hpayer): This is a short-term hack to make allocation mementos
// work again in new space.
dominator_allocate->ClearNextMapWord(original_object_size);
}
#else
// TODO(hpayer): This is a short-term hack to make allocation mementos
// work again in new space.
dominator_allocate->ClearNextMapWord(original_object_size);
#endif
dominator_allocate->UpdateClearNextMapWord(MustClearNextMapWord());

View File

@ -0,0 +1,21 @@
// Copyright 2014 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// Flags: --allow-natives-syntax --expose-gc --heap-stats
function g(dummy, x) {
var start = "";
if (x) { start = x + " - "; }
start = start + "array length";
};
function f() {
gc();
g([0.1]);
}
f();
%OptimizeFunctionOnNextCall(f);
f();
f();