diff options
Diffstat (limited to 'deps/v8/test/mjsunit/baseline/test-osr.js')
-rw-r--r-- | deps/v8/test/mjsunit/baseline/test-osr.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/baseline/test-osr.js b/deps/v8/test/mjsunit/baseline/test-osr.js new file mode 100644 index 0000000000..8add12ddb2 --- /dev/null +++ b/deps/v8/test/mjsunit/baseline/test-osr.js @@ -0,0 +1,51 @@ +// Copyright 2021 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 --sparkplug --no-always-sparkplug --use-osr +// Flags: --opt --no-always-opt --deopt-every-n-times=0 + +function isExecutingBaseline(func) { + let opt_status = %GetOptimizationStatus(func); + return (opt_status & V8OptimizationStatus.kTopmostFrameIsBaseline) !== 0; +} + +function f() { + for (var i = 0; i <= 20; i++) { + if (i == 5) { + %BaselineOsr(); + } + if (i > 5) { + assertTrue(isBaseline(f)); + assertTrue(isExecutingBaseline(f)); + } + } +} + +%NeverOptimizeFunction(f); +f(); + +var expectedStatus = V8OptimizationStatus.kTopmostFrameIsInterpreted; + +function checkTopmostFrame(func) { + let opt_status = %GetOptimizationStatus(func); + assertTrue ((opt_status & expectedStatus) !== 0, "Expected flag " + + expectedStatus + " to be set in optimization status"); +} + +function g() { + for (var i = 0; i <= 20; i++) { + checkTopmostFrame(g) + if (i == 2) { + %BaselineOsr(); + expectedStatus = V8OptimizationStatus.kTopmostFrameIsBaseline; + } + if (i == 5) { + %OptimizeOsr(); + expectedStatus = V8OptimizationStatus.kTopmostFrameIsTurboFanned; + } + } +} + +%PrepareFunctionForOptimization(g); +g(); |