| // 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 |
| |
| // Create a map where 'my_property' has HeapObject representation. |
| const dummy_obj = {}; |
| dummy_obj.my_property = 'some HeapObject'; |
| dummy_obj.my_property = 'some other HeapObject'; |
| |
| function gaga() { |
| const obj = {}; |
| // Store a HeapNumber and then a Smi. |
| // This must happen in a loop, even if it's only 2 iterations: |
| for (let j = -3_000_000_000; j <= -1_000_000_000; j += 2_000_000_000) { |
| obj.my_property = j; |
| } |
| // Trigger (soft) deopt. |
| if (!%IsBeingInterpreted()) obj + obj; |
| } |
| |
| %PrepareFunctionForOptimization(gaga); |
| gaga(); |
| gaga(); |
| %OptimizeFunctionOnNextCall(gaga); |
| gaga(); |