bcad9b547d
This introduces a CopyFixedArrayAndGrow method on Factory that takes the "grow amount" instead of the "new size" as an argument. The new interface is safer because it allows for mutations by the GC that potentially trim the source array. This also fixes a bug in SharedFunctionInfo::AddToOptimizedCodeMap where the aformentioned scenario led to unused entries within the optimized code map. Note that FixedArray::CopySize is hereby deprecated because it is considered unsafe and should no longer be used. R=hpayer@chromium.org TEST=mjsunit/regress/regress-crbug-513507 BUG=chromium:513507 LOG=n Review URL: https://codereview.chromium.org/1255173006 Cr-Commit-Position: refs/heads/master@{#30012}
25 lines
677 B
JavaScript
25 lines
677 B
JavaScript
// Copyright 2015 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: --noflush-optimized-code-cache --allow-natives-syntax
|
|
|
|
// The following triggers a GC in SharedFunctionInfo::AddToOptimizedCodeMap.
|
|
// Flags: --gc-interval=1234 --gc-global
|
|
|
|
function makeFun() {
|
|
function fun(osr_fuse) {
|
|
for (var i = 0; i < 3; ++i) {
|
|
if (i == osr_fuse) %OptimizeOsr();
|
|
}
|
|
for (var i = 3; i < 6; ++i) {
|
|
if (i == osr_fuse) %OptimizeOsr();
|
|
}
|
|
}
|
|
return fun;
|
|
}
|
|
|
|
makeFun()(7); // Warm up.
|
|
makeFun()(4); // Optimize once.
|
|
makeFun()(1); // Optimize again.
|