| // 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(); |