32 lines
637 B
JavaScript
32 lines
637 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: --expose-gc --min-semi-space-size=32
|
||
|
|
||
|
// We need to set --min-semi-space-size to enable allocation site pretenuring.
|
||
|
|
||
|
function foo(i) {
|
||
|
with({}) {};
|
||
|
x = {};
|
||
|
x.a = 0.23;
|
||
|
x.b = 0.3;
|
||
|
return x;
|
||
|
}
|
||
|
|
||
|
var all = [];
|
||
|
function step() {
|
||
|
for (var i = 0; i < 100; i++) {
|
||
|
var z = foo(i);
|
||
|
// Write unboxed double in object slack.
|
||
|
z.c = 0.1 + z.b
|
||
|
all.push(z);
|
||
|
}
|
||
|
gc(1);
|
||
|
gc(1);
|
||
|
}
|
||
|
|
||
|
step();
|
||
|
// Now foo will allocate objects in old space.
|
||
|
step();
|