v8/test/mjsunit/maglev
Jakob Linke ed90ea5cf7 [maglev] Implement Maglev-to-Turbofan OSR
This implementation sticks closely to what Ignition-to-Turbofan (and now
Sparkplug-to-TF) does. OSR is detected in the TieringManager by having
optimized code available, without having entered it. The osr_urgency is
increased to enable OSR for increasing loop depths. When a candidate
JumpLoop backedge is reached, we call into runtime to trigger OSR
compilation.

JumpLoop also detects the availability of cached OSR'd code. When a
matching OSR code object is available, Maglev 1) deoptimizes s.t. the
unoptimized frame layout is reconstructed, and 2) delegates the actual
OSR tierup to the unoptimized tier. For purposes of 1), we add a new
DeoptimizeReason that causes a one-time eager deopt without invalidating
any code.

Drive-by: Annotate OSR for more --trace-opt output.

Todo: Refactor non-Sparkplug-specific bits of the BaselineAssembler
into a generic spot that both SP and ML can use.

Bug: v8:7700
Change-Id: I6ebab2df8b87f9f70ffb78162a3c1226ec545468
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3859850
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Linke <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/main@{#82816}
2022-08-30 11:51:28 +00:00
..
00.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
01.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
02.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
03.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
04.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
05.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
06.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
07.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
08.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
09.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
10.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
11.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
12.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
13.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
14.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
15.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
16.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
17.js [maglev] Implement StoreField 2022-03-08 15:09:53 +00:00
18.js [maglev] Basic tiering to Maglev 2022-03-02 13:35:32 +00:00
19.js [maglev] CompactInterpreterFrameState fixes 2022-03-29 13:59:48 +00:00
add-number.js [maglev] Float64 box/unbox elision 2022-04-28 13:17:48 +00:00
add-smi.js [maglev] Addition Smi nodes 2022-04-05 12:34:42 +00:00
argument-over-under-application.js [maglev] Fix over application return stack cleanup 2022-03-29 10:39:28 +00:00
call-js-runtime.js [maglev] Support CallJSRuntime 2022-08-08 09:04:51 +00:00
call-runtime-for-pair.js [maglev] Support CallRuntimeForPair 2022-08-08 14:29:20 +00:00
destructuring-assignment-with-exclude-properties.js [maglev] Support CopyDataPropertiesWithExcludedPropertiesOnStack 2022-08-10 14:47:44 +00:00
eager-deopt-in-inline.js [maglev] Start implenting inlining 2022-04-21 10:43:35 +00:00
get-template-object.js [maglev] Support GetTemplateObject 2022-08-08 08:52:43 +00:00
inner-function.js [maglev] Support CreateClosure 2022-07-13 09:48:49 +00:00
int32-branch.js Reland "[maglev] Add internalized string compare fast-path" 2022-07-13 09:08:58 +00:00
lazy-deopt-with-onstack-activation.js [flags] Rename --opt to --turbofan 2022-05-03 12:10:30 +00:00
lazy-deopt-without-onstack-activation.js [flags] Rename --opt to --turbofan 2022-05-03 12:10:30 +00:00
lda-global-inside-typeof.js [maglev] Support LdaGlobalInsideTypeof 2022-08-10 13:18:24 +00:00
lda-global.js [maglev] Support LdaGlobalInsideTypeof 2022-08-10 13:18:24 +00:00
lda-module-variable-import.mjs Reland "[maglev] Support LdaModuleVariable and StaModuleVariable" 2022-08-11 06:57:23 +00:00
lda-module-variable.mjs Reland "[maglev] Support LdaModuleVariable and StaModuleVariable" 2022-08-11 06:57:23 +00:00
literals.js [maglev] Add CreateObjectLiteral nodes 2022-04-29 12:20:11 +00:00
load-named.js [maglev] Add LoadDoubleField 2022-04-27 13:12:17 +00:00
lots-of-registers.js [maglev] Drop register values before adding them to the free list 2022-04-27 12:15:41 +00:00
mutable-context-access.js [maglev] Fix result regalloc clobbering inputs 2022-05-05 13:07:16 +00:00
osr-from-ml-to-tf.js [maglev] Implement Maglev-to-Turbofan OSR 2022-08-30 11:51:28 +00:00
osr-to-tf.js [maglev] Implement Maglev-to-Turbofan OSR 2022-08-30 11:51:28 +00:00
set-pending-message.js [maglev] Support SetPendingMessage 2022-08-08 07:38:02 +00:00
shift-right-smi.js [maglev] Add more Int32/Float64 arithmetic nodes 2022-05-20 14:48:59 +00:00
simple-inlining.js [maglev] Start implenting inlining 2022-04-21 10:43:35 +00:00
spill-double.js [maglev] Float64 box/unbox elision 2022-04-28 13:17:48 +00:00
sta-module-variable.mjs Reland "[maglev] Support LdaModuleVariable and StaModuleVariable" 2022-08-11 06:57:23 +00:00
string-compare.js Reland "[maglev] Add internalized string compare fast-path" 2022-07-13 09:08:58 +00:00
super-ic.js [maglev] Support GetNamedPropertyFromSuper 2022-07-28 15:04:55 +00:00
tier-to-ml-to-tf.js [maglev] Fix test flake due to racing the compiler thread 2022-08-29 13:58:48 +00:00
undefined-or-null-branch.js [maglev] Support JumpIfUndefinedOrNull 2022-08-02 15:10:13 +00:00