ae741d042c
Allocate the registers used as arguments to a call on-demand after visiting the argument (or reciever). This means that the visited expression can use registers that would otherwise have been allocated for arguments which haven't been visited yet. The reason for doing this is to avoid keeping things live in registers unecessarily for chained function calls, which avoids a memory leak for functions which chain a large number of calls with large temporary arguments / recievers. BUG=chromium:672027 Review-Url: https://codereview.chromium.org/2557173004 Cr-Commit-Position: refs/heads/master@{#41714}
18 lines
410 B
JavaScript
18 lines
410 B
JavaScript
// Copyright 2016 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: --max-old-space-size=100
|
|
|
|
(function() {
|
|
var source = "[]"
|
|
for (var i = 0; i < 300; i++) {
|
|
source += ".concat([";
|
|
for (var j = 0; j < 1000; j++) {
|
|
source += "0,";
|
|
}
|
|
source += "0])"
|
|
}
|
|
eval(source);
|
|
})();
|