|  | // Copyright 2018 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 | 
|  |  | 
|  | // Create transtion => 'get a'. | 
|  | let o = {}; | 
|  | Object.defineProperty(o, 'a', { | 
|  | enumerable: true, | 
|  | configurable: true, | 
|  | get: function() { return 7 } | 
|  | }); | 
|  |  | 
|  | function spread(o) { | 
|  | let result = { ...o }; | 
|  | %HeapObjectVerify(result); | 
|  | return result; | 
|  | } | 
|  |  | 
|  | for (let i = 0; i<3; i++) { | 
|  | spread([]); | 
|  | // Use different transition => 'a'. | 
|  | spread({ a:0 }); | 
|  | spread("abc"); | 
|  | } |