| // Copyright 2020 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 |
| |
| let a = [0, 1, 2, 3, 4]; |
| |
| function empty() {} |
| |
| function f(p) { |
| a.pop(Reflect.construct(empty, arguments, p)); |
| } |
| |
| let p = new Proxy(Object, { |
| get: () => (a[0] = 1.1, Object.prototype) |
| }); |
| |
| function main(p) { |
| f(p); |
| } |
| |
| %PrepareFunctionForOptimization(empty); |
| %PrepareFunctionForOptimization(f); |
| %PrepareFunctionForOptimization(main); |
| |
| main(empty); |
| main(empty); |
| %OptimizeFunctionOnNextCall(main); |
| main(p); |