100 Commits
Author SHA1 Message Date
Toon Verwaest 935280ab43 [parser] Allocate function ids for arrow functions and their params
This ensures that functions always precede their inner functions in the SFI table.

Change-Id: I1910281d2f89fbf00f3c7b951edd58c2c81e36a4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5615412
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94365}
2024-06-11 11:18:21 +00:00
Toon Verwaest 492a1d8e2a Drop unnecessary MacroAssembler::kCountIncludesReceiver
Change-Id: Id873b66e5170445a40b8c6319874b319c7cdd6d1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5593070
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94220}
2024-06-04 07:22:08 +00:00
Toon Verwaest 925b3ff47e Untag the length field in construct frames
That simplifies quite some code, and makes construct frame handling sligthly cheaper.

Change-Id: Idded672e3270a904924aece60a86eb3e23a1f896
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5591670
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94216}
2024-06-03 15:57:22 +00:00
Toon Verwaest 8f7698c838 Use framesize + max outgoing args to check stack limits
Now we compute the max number of outgoing arguments during bytecode compilation, and store this value on the bytecode array. It's reused by sparkplug; and by the optimizing compiler to ensure they can compute the right max unoptimized frame size for stack checks.

Bug: 341216494
Change-Id: I16e2582e397d8c7847a40e58a8a1b45be880333f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5577683
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94196}
2024-06-03 09:56:55 +00:00
Toon Verwaest 77f045f1c9 [maglev] Inline simple Number.parseInt cases
Bug: v8:7700
Change-Id: I01bbfa5a6343fc009f22c8df76e1f9508417ef23
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5573905
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Olivier Flückiger <olivf@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94115}
2024-05-27 17:26:44 +00:00
Toon Verwaest 0ee5179d6b [maglev] Remove unnecessary branch
Bug: v8:7700
Change-Id: I1586c4d93cd6fc5a97d16117d51292a38c8c5804
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5569567
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94097}
2024-05-27 11:17:27 +00:00
Toon Verwaest c225eb8a92 [maglev] Use possible maps to specialize megamorphic accesses
This will help us to figure out what .initialize we're calling in
octane/raytrace despite it being megamorphic. It's the first call after constructing the instance, so we'll know the map of the
instance. It doesn't work yet though since the arguments object creation
is currently nuking the map info for the receiver before the actual
.initialize load. We know those allocates can't alias though, so we
shouldn't nuke the info. That's follow-up work.

Bug: v8:7700
Change-Id: I7b4e2f316a449355de1796f5c391c85a429227ff
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5569671
Reviewed-by: Olivier Flückiger <olivf@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Olivier Flückiger <olivf@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94079}
2024-05-24 14:24:15 +00:00
Toon Verwaest 6f4e7882ed [maglev] Inline Math.abs
Bug: v8:7700
Change-Id: I96a6cfb2beebd4e537d32fa4642ef94316449ac4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5563085
Reviewed-by: Olivier Flückiger <olivf@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94078}
2024-05-24 13:24:29 +00:00
Toon Verwaest df52f26378 [maglev] Drop lazy-deopt from ForInPrepare
It can't actually lazy deopt.

Bug: v8:7700
Change-Id: I05cba92f665444c464628404c34c57676b649a78
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5558023
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94032}
2024-05-22 13:56:21 +00:00
Toon Verwaest 9e59b90233 [maglev] Refine element feedback
If we already have known node feedback, we can refine recorded feedback.
This allows us to e.g. drop repeated TransitionElementsKind* nodes.

(Small side improvements: turn AddNewNode<CheckHeapObject> into
BuildCheckHeapObject to avoid unnecessary checks.)

Bug: v8:7700
Change-Id: Ie9419ee3d8b646c84a4440d38632ffa9cfd625fc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5545560
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#94004}
2024-05-21 11:56:03 +00:00
Toon Verwaest f2c545830d [maglev] CreateRegExpLiteral can throw...
... stack overflow

Bug: v8:7700, 339759428
Change-Id: I3a38905c763f13f238a90bd6848ecca745bba180
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5544144
Reviewed-by: Patrick Thier <pthier@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93950}
2024-05-16 14:17:50 +00:00
Toon Verwaest e755032f5f [maglev] Optimize JumpIfJSReceiver
- always jump if we know we have a JSReceiver
- never jump if we know w can't have a JSReceiver

Bug: v8:7700
Change-Id: Ia37089cd181b0bd60086c46fd30a929d73e46f98
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5537920
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93914}
2024-05-15 11:05:33 +00:00
Toon Verwaest 22f9cdac44 Reland "[interpreter] Only Clear/Restore pending messages when CMD_RETHROW"
We only need to save/restore pending messages when we're catching and
rethrowning an exception, so push the code to paths that handle
CMD_RETHROW. (We always pass through RETHROW if we caught since we might
rethrow. This could be overwritten later of course, in which case we
won't restore.)

Change-Id: Iab00a2b2e141ffda978324e08c85ee05c2cd14c2
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5538173
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93907}
2024-05-15 09:02:45 +00:00
Toon Verwaest 8c2f4a3a4f Reland "[maglev] Finish block with Abort after CallRuntime(Throw*)"
This reverts commit 55f3c16918.

Reason for revert: Unnecessary speculative revert

Original change's description:
> Revert "[maglev] Finish block with Abort after CallRuntime(Throw*)"
>
> This reverts commit ece915ee70.
>
> Reason for revert: Suspected breaking roll: https://ci.chromium.org/ui/p/chromium/builders/try/mac-rel/1783373/overview
>
> Original change's description:
> > [maglev] Finish block with Abort after CallRuntime(Throw*)
> >
> > Bug: v8:7700
> > Change-Id: Idb7050d8ad8c15bba12db865dd7b30da2d5a5b4f
> > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5526309
> > Reviewed-by: Victor Gomes <victorgomes@chromium.org>
> > Auto-Submit: Toon Verwaest <verwaest@chromium.org>
> > Commit-Queue: Toon Verwaest <verwaest@chromium.org>
> > Cr-Commit-Position: refs/heads/main@{#93826}
>
> Bug: v8:7700
> Change-Id: Ic98e9a6c89cbedb6db953fe2a10a54f5aa1d0ddc
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5532607
> Auto-Submit: Francis McCabe <fgm@chromium.org>
> Commit-Queue: Francis McCabe <fgm@chromium.org>
> Owners-Override: Francis McCabe <fgm@chromium.org>
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Cr-Commit-Position: refs/heads/main@{#93837}

Bug: v8:7700
Change-Id: I156e2b7260b741344425b31c0a7c231bdfa775fb
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5535191
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93880}
2024-05-14 08:54:41 +00:00
Toon Verwaest 1f2786cb07 [interpreter] Only Clear/Restore pending messages when CMD_RETHROW
We only need to save/restore pending messages when we're catching and rethrowning an exception, so push the code to paths that handle CMD_RETHROW. (We always pass through RETHROW if we caught since we might rethrow. This could be overwritten later of course, in which case we won't restore.)

This is a reland of https://chromium-review.googlesource.com/c/v8/v8/+/5529233 with a test for the blocking failure. The fix is to avoid reusing the register between the context that's stashed for the `try` and the `message`. Otherwise in loops with a finally that exit the loop through the rethrow path, sloppy tracking of loop assignments thinks the context cache is assigned (by the reused message); causing a loop phi to be created.

A possible cleaner solution is to not store the context at runtime at all, and to recompute the context. However, our optimizing compilers also rely on the interpreter stashing the context on the side for `catch`, so it's not trivial to change this.


Change-Id: I2a75a248ad252e30540268b575be0fe1380c097f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5534748
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93866}
2024-05-13 16:23:23 +00:00
Toon Verwaest 2fa0a509c8 Reland "Partial revert: [maglev] Constant fold reference equal of constants"
This reverts commit 6ffe5e5d84.

Reason for revert: this is a necessary fix that's low-risk since it's a revert itself.

Original change's description:
> Revert "Partial revert: [maglev] Constant fold reference equal of constants"
>
> This reverts commit 8458aa9806.
>
> Reason for revert: Suspected of breaking https://ci.chromium.org/ui/p/chromium/builders/try/mac-rel/1783373/overview
>
> Original change's description:
> > Partial revert: [maglev] Constant fold reference equal of constants
> >
> > The check if the node is a boolean type different than one of the
> > boolean roots needs to be done with the original node.
> >
> > Fixed: 339506922
> > Change-Id: I1fa981bbde8b9606722722efe0ca9669a835e6bb
> > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5529237
> > Reviewed-by: Toon Verwaest <verwaest@chromium.org>
> > Auto-Submit: Victor Gomes <victorgomes@chromium.org>
> > Commit-Queue: Victor Gomes <victorgomes@chromium.org>
> > Commit-Queue: Toon Verwaest <verwaest@chromium.org>
> > Cr-Commit-Position: refs/heads/main@{#93821}
>
> Change-Id: I16a9d9c7c245ef6367ea6b25d4f932a7c2125274
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5531139
> Commit-Queue: Francis McCabe <fgm@chromium.org>
> Auto-Submit: Francis McCabe <fgm@chromium.org>
> Owners-Override: Francis McCabe <fgm@chromium.org>
> Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
> Cr-Commit-Position: refs/heads/main@{#93836}

Change-Id: I3e881e1009f40e26c2bc5b421d56700b92d7107f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5526607
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#93844}
2024-05-13 07:15:06 +00:00
Toon Verwaest ece915ee70 [maglev] Finish block with Abort after CallRuntime(Throw*)
Bug: v8:7700
Change-Id: Idb7050d8ad8c15bba12db865dd7b30da2d5a5b4f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5526309
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93826}
2024-05-10 11:50:25 +00:00
Toon Verwaest 586adcb473 [interpreter] Only Clear/Restore pending messages when CMD_RETHROW
We only need to save/restore pending messages when we're catching and rethrowning an exception, so push the code to paths that handle CMD_RETHROW. (We always pass through RETHROW if we caught since we might rethrow. This could be overwritten later of course, in which case we won't restore.)

Change-Id: Ic476c99747077e316b306a5d760d6fb13ae85899
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5529233
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93817}
2024-05-10 09:00:19 +00:00
Toon Verwaest f07101ad84 [arm64] Fix test failing on m3
Change-Id: I29e9e5ab32b422b1c2010d58b748746efb49b336
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5522230
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93796}
2024-05-08 13:12:57 +00:00
Toon Verwaest eade668c88 [maglev] Constant fold reference equal of smi constants
This happens e.g., in finally blocks with unreachable catch blocks

Bug: v8:7700
Change-Id: Ib47057b3075eda1582c930a7978c8d8ddec61f83
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5522093
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93773}
2024-05-07 14:28:37 +00:00
Toon Verwaest 8ab70a79e6 [valueserializer] Avoid reboxing double fields
Same as https://chromium-review.googlesource.com/c/v8/v8/+/5518891 but
without replacer.

Change-Id: I99c3f09cbcfcd0d2c81de385922abc7e37e9137b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5518759
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Reviewed-by: Patrick Thier <pthier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93756}
2024-05-07 10:29:47 +00:00
Toon Verwaest 24a8171d91 [json] Avoid unnecessary reboxing double fields during serialization
The value can only change in this tight window if there's a replacer
function.

Change-Id: I7d455bc6bdf21f0c90231b2c9458ad08352f076b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5518891
Reviewed-by: Patrick Thier <pthier@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93755}
2024-05-07 10:26:43 +00:00
Toon Verwaest 40a900106c [maglev] Lazy deopt on first throw to a so-far unused catch block
This allows us to skip emitting code for the catch block entirely.

Bug: v8:7700
Change-Id: Ie31da5094d14711aab619b146dabc14d215f0c62
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5516582
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93735}
2024-05-06 13:18:31 +00:00
Toon Verwaest 00cd869881 [maglev] Support inlining functions with try/catch
Count the distance in number of interpreter frames to the parent frame
that has an active catch block.

Bug: v8:7700
Change-Id: I23761a4bc87c3facdbfa8c883eb4363503658d00
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5512711
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93705}
2024-05-03 17:27:28 +00:00
Toon Verwaest bd6252c6fd [maglev] Eager deopt previously unvisited catch blocks
This allows us to ignore the catch block for optimization across it.
Better would be to lazy deopt code that throws if the target catch
handler wasn't generated. I'll look into that next.

Bug: v8:7700
Change-Id: Ibeac8995571a339cf88e9302011fff60caaa2fdf
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5498885
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93687}
2024-05-02 16:20:59 +00:00
Toon Verwaest 4a1d1b61c7 [arm64/macos] Don't align code targets
This keeps the code denser for better icache use

Change-Id: Id093a27c2971e986ff8328b3425ed1a85eb1a38c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5490087
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93607}
2024-04-26 10:32:59 +00:00
Toon Verwaest 5e0cc470de [maglev] Avoid StringAdd with empty string
Bug: v8:7700
Change-Id: I7177ee29b6dd03cb5e9006ceb7c2802d4bf8542d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5472102
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Patrick Thier <pthier@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93490}
2024-04-22 10:29:18 +00:00
Toon Verwaest 96d35b890a [mac-tick-processor] Fix aslr slide handling
- print the real library range at runtime instead of adding the slide
  there
- only add the slide to functions we get from the library

Change-Id: Ie062840c2170894a3e1175ebfa96d4a36736c8e5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5425027
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93197}
2024-04-05 15:37:19 +00:00
Toon Verwaest 3cbd150c50 [json] Add recursive parser up to stack overflow...
... when we're about to overflow the stack, switch to the iterative
parser instead. This improves performance by 5-10% for cases where the
recursive parser works (most cases).

Change-Id: I516cb8cc79b95d1da82648c4f149042566d78873
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5420110
Commit-Queue: Patrick Thier <pthier@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Patrick Thier <pthier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#93159}
2024-04-04 10:18:01 +00:00
Toon Verwaest 184fa4f70a [tiering] Abort optimization on context disposal
Change-Id: Ib8a929867df2f24bb21cb77507b75b7db36b18c6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4565379
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#92967}
2024-03-22 11:02:05 +00:00
Toon Verwaest bc9320445d [maglev] Minor improvements to array support
- inline simple cases of Array.isArray
- track NodeType::kJSArray for allocated arrays and array maps/constants.
- for symmetry also add the nodetype for Create*ObjectLiteral.

Bug: v8:7700
Change-Id: I3301fa7ec4d379ba517f6f966721ff0ef7b03bd4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5279446
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Olivier Flückiger <olivf@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#92259}
2024-02-09 17:53:22 +00:00
Toon Verwaest ba69602f6b [arm64] Use qword move to move float/double
On a microbenchmark

```for (let i = 0; i < ...; i++) r += i```

when I ended up getting a gap-mov double->double for r it was 20% slower
with mov.d instead of mov.q, probably because the size doesn't match the
fadd size.

Change-Id: Ida5de7bb698cfe893a75f1d1ffe348405d6ae670
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5272483
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#92217}
2024-02-06 15:57:22 +00:00
Toon Verwaest 8282ae867a Fix slow case of DictionaryTemplateInfo::NewInstance()
... when transitioning between different representations of the same
property while creating different instances (e.g. from a heap integer
to a SMI).

Bug: chromium:1499222
Change-Id: I783f0690941040863bbff84dc9f10334c17f3bd1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5235437
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91996}
2024-01-25 10:08:40 +00:00
Toon Verwaest 8ecb4930c2 [runtime] Use CreationContext as global object/proxy native context
With context-specific meta-maps we have a cheap way of accessing the
creation context, so we can use that instead. This aligns the embedder
field location for global proxies with regular objects.

Change-Id: I74cff477cd8d76903251db41e5aefe67ace1d00f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5135175
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91928}
2024-01-19 17:01:00 +00:00
Toon Verwaest 389ea9be7d [runtime] Drop fast last-property deletion
This interacts badly with other optimizations and isn't particularly
common.

Bug: chromium:1517354
Change-Id: I7adb51a8fc0ec47eaeb911ca2a4cbc517088e416
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5185340
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91782}
2024-01-11 13:00:32 +00:00
Toon Verwaest 991dc47ce2 [exceptions] Relax VerifyBuiltinsResult wrt Termination
... when strict_termination_checks is off. Otherwise we'll constantly
fail in builtin verification after a missing check elsewhere.

Change-Id: I854a26a20ba9f2623fc0625829e68621a520c8f6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5176947
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91722}
2024-01-08 16:15:17 +00:00
Toon Verwaest 09f50a8825 Revert "[api] Always clear internal exceptions on exit"
This reverts commit 3e094653d7.

Reason for revert: Scoped microtasks also need to be skipped when
there's a regular exception, otherwise it's dropped.

Original change's description:
> [api] Always clear internal exceptions on exit
>
> Support it by checking the try_catch for termination if present.
>
> Change-Id: I012244d444ad60d3516350051433f9294ecefee9
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5144993
> Commit-Queue: Toon Verwaest <verwaest@chromium.org>
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Auto-Submit: Toon Verwaest <verwaest@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#91624}

Change-Id: Idde19931208ad65b7348903a0ddb673dcb9e86d8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5173469
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91710}
2024-01-08 10:56:53 +00:00
Toon Verwaest a1ac54473f [api] Drop only_terminate_in_safe_scope
Change-Id: I9b9f995396c9910148e06f598b2a09203a9a0076
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5144994
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91633}
2023-12-22 14:34:36 +00:00
Toon Verwaest 1d819756cf Revert "[exceptions] Try to find where exceptions are coming from"
This reverts commit 4ad0344129.

Reason for revert: Was fixed by properly clearing Termination from trycatch

Original change's description:
> [exceptions] Try to find where exceptions are coming from
>
> Bug: chromium:1509114
> Change-Id: I443dd7c7855dfe38da69cdebe12748d4f871da9a
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5144987
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Auto-Submit: Toon Verwaest <verwaest@chromium.org>
> Commit-Queue: Toon Verwaest <verwaest@chromium.org>
> Reviewed-by: Leszek Swirski <leszeks@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#91620}

Bug: chromium:1509114
Change-Id: Id5494aa0a8c0856dd79fbe70236eefc4fa530ee2
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5147307
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91625}
2023-12-21 19:12:12 +00:00
Toon Verwaest 3e094653d7 [api] Always clear internal exceptions on exit
Support it by checking the try_catch for termination if present.

Change-Id: I012244d444ad60d3516350051433f9294ecefee9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5144993
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91624}
2023-12-21 17:34:36 +00:00
Toon Verwaest 9573fabd15 [api] Drop support for Escape + Local() where possible
Only use InternalEscapableScope internally, and specialize it to not
support Escape(Local<T>()) anymore.

Drop runtime check for double-escaping values. Make it a DCHECK instead.

Change-Id: Id186296c5226a54b44c4fc489d6eac395c988e42
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5144990
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91622}
2023-12-21 16:35:33 +00:00
Toon Verwaest dba30a61ab [exceptions] TryCatch::ResetInternal on CancelTerminateExecution
Otherwise the TryCatch isn't actually cleared, as regular `Reset` only
drops the termination exception on final exit out of V8.

Change-Id: I17b6bbf13fda339c94afe8525226b6bcc6bfa770
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5144988
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91621}
2023-12-21 12:58:08 +00:00
Toon Verwaest 4ad0344129 [exceptions] Try to find where exceptions are coming from
Bug: chromium:1509114
Change-Id: I443dd7c7855dfe38da69cdebe12748d4f871da9a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5144987
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91620}
2023-12-21 12:49:40 +00:00
Toon Verwaest f32c9b7c07 [exceptions] DCHECK that we don't invoke with exception
Change-Id: If0a82f40a7117c15ceacce99534917df6cb98b65
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5131010
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91567}
2023-12-18 11:55:51 +00:00
Toon Verwaest a9a3d8bbd1 [exceptions] Also clear TryCatch on clear_exception
... except where we explicitly don't want to.

Change-Id: I19a5dfb37dff35e3ea8f92564403d4c83cd3d24b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5089429
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91445}
2023-12-11 10:35:22 +00:00
Toon Verwaest 0610a2c6bd [exceptions] Use non-verbose try/catch in modules
Change-Id: If75955eda88de0269dc049d1cb8ccb6399aabdfd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5091147
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91388}
2023-12-06 20:11:12 +00:00
Toon Verwaest 0fa765780f Reland "[api] api-macro cleanup"
This is a reland of commit a9b436ed68

Original change's description:
> [api] api-macro cleanup
>
> Change-Id: Ia82a17d6bfb868afe92cbd18f048e62d1a1c266b
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5089427
> Auto-Submit: Toon Verwaest <verwaest@chromium.org>
> Reviewed-by: Camillo Bruni <cbruni@chromium.org>
> Commit-Queue: Camillo Bruni <cbruni@chromium.org>
> Commit-Queue: Toon Verwaest <verwaest@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#91359}

Change-Id: I1044b9462a1786117764daf561ebff47a4396e0a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5096253
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91384}
2023-12-06 17:54:21 +00:00
Toon Verwaest 7f330c43b0 [api] Support ArrayBuffer::Detach with no context for now
This breaks array-buffer key checking on failure (will crash on throw)
but unfortunately some embedders already don't enter before detaching so
they would possibly be broken in that case. Presumably they know what
buffers they are handling...

Change-Id: Ie17a472cf6dfe5fc4ff6de3345ad7bb6fc7e8ebf
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5095096
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91380}
2023-12-06 16:09:33 +00:00
Toon Verwaest a9b436ed68 [api] api-macro cleanup
Change-Id: Ia82a17d6bfb868afe92cbd18f048e62d1a1c266b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5089427
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91359}
2023-12-05 17:59:53 +00:00
Toon Verwaest 659059f46c [api] avoid unnecessary handle
Change-Id: Id210730bc88f69a9926bef8b88783ccb747c0a4f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5086507
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91339}
2023-12-05 02:17:10 +00:00
Toon Verwaest c1d5d38867 [api] v8::Context is i::NativeContext
Change-Id: I8b03b64b1c136cdc8c08f8277f3f625967c9d108
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5079312
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91337}
2023-12-05 00:37:20 +00:00
Toon Verwaest 026ce4d153 [api] Disallow empty context in CallDepthScope
Change-Id: I133236d8cb55e72631b3314953b72861d04babd5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5080698
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91336}
2023-12-04 23:59:34 +00:00
Toon Verwaest a34be67351 [exceptions] cleanup after unifying pending/scheduled exceptions
Change-Id: I802c1e9cf23815ceb5ccd79c079d93b150aa3d82
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5079407
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91308}
2023-12-01 19:35:00 +00:00
Toon Verwaest e6e325ae0a Undo spurious change
Change-Id: If9d1c3c7d0333364e4ea2a678161e3632e3ad2c5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5079898
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91304}
2023-12-01 16:26:08 +00:00
Toon Verwaest 12203e0c46 [exceptions] Unify pending and scheduled exceptions
The difference wasn't very well understood, and actually leads to
wonky/broken semantics.

Scheduled exceptions were embedder-side exceptions, while pending
exceptions were used inside of v8. Conversions were done on the
boundaries. Pending exceptions could be cleared locally without
try/catch since we'd only propagate exceptions to external try/catch on
Promotion. An embedder-side TryCatch could be reused without
v8::TryCatch::Reset() first. If there already was an exception and a new
one was thrown, the exception was simply overwritten.

Or that was the theory.

V8 is reentrant. When the embedder returns to V8 a scheduled exception
had to be turned into a pending exception
(Isolate::PromoteScheduledException()). When V8 returns to the embedder,
a pending exception is turned into a scheduled exception
(Isolate::OptionalRescheduleException()) to make sure that exceptions
can be returned through multiple JS/embedder stack segments.

This CL drops the distinction between scheduled and pending exceptions.
A possible pending exception is dropped on rentry in V8, meaning the
embedder will always be able to call into V8 again despite being given
an error.

This slightly changes the semantics: if an embedder calls into V8 while
a pending exception was sitting around, it won't be "rethrown" on exit
to the caller of the embedder. However, this case (rentering V8 without
an explicit TryCatch) would already have been partially broken: if V8
would call out to the embedder again, on return to V8 the exception
would have been throw there, instead of only when returning to the first
call to V8.

Embedder code may need to be fixed to account for this change. A similar
change was needed in V8 in src/d8/async-hooks-wrapper.cc: Multiple calls
to SET_HOOK_FN needed to complete before a possible exception was
propagated to the caller. The solution is to wrap the calls in TryCatch
with ReThrow.

In a follow-up I'll look into not clearing Isolate::pending_exception on
entry at all, and instead always clear it when the exception is
propagated to TryCatch (as opposed to JS). This would change DCHECKs in
V8 that guarantee that we exit V8 when we have a pending exception. I'll
support those by adding debugmode only flags.

Bug: v8:7235
Change-Id: Iff7c8fb8ff2f0bddbac0d84ce832086fba330dd1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5050065
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91288}
2023-12-01 02:10:30 +00:00
Toon Verwaest f875dd2477 [api] Cleanup after turning replacing branches with DCHECK
We don't need to return Nothing<T> anymore so we don't need to pass it
through.

Change-Id: Idb9f42f493a71458481f56fa50e9dd7c80676199
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5076902
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91286}
2023-11-30 20:26:22 +00:00
Toon Verwaest 3eed17c6a1 [api] DCHECK-fail when we reenter V8 while terminating
Change-Id: I25caa0af677f672b77b62913ba66166d8e6b557c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5075293
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91259}
2023-11-30 00:03:30 +00:00
Toon Verwaest cb04913fc1 [api] Downgrade some EscapableHandleScope to HandleScope
Change-Id: I1359b57ddade4f901225d7df5a4314f64c355d37
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5075292
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91258}
2023-11-29 23:59:45 +00:00
Toon Verwaest f4e124a033 [api] Don't allow the context to be empty
Change-Id: I1f6f3fdc93fb240a81659a1a952f52a387c6f228
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5016841
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#91063}
2023-11-20 16:41:47 +00:00
Toon Verwaest aa6c8434a0 [eval-cache] Drop feedback cells when the cache entry is aged
Change-Id: I7b5acdac74e387e55f3d5a74f74a04f89689b1c6
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5024204
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Dominik Inführ <dinfuehr@chromium.org>
Cr-Commit-Position: refs/heads/main@{#90898}
2023-11-13 18:15:13 +00:00
Toon Verwaest e48c47268c [api] Remove AllCan Read/Write
AllCan Read and Write are long-deprecated mechanisms for dealing with
cross-origin access. Chrome doesn't use this anymore, and other
embedders shouldn't be using it in the first place.

I'm trying to skip some steps though by directly dropping AccessControl
in various places. Presumably most embedders won't be directly affected
by this because they won't pass in those non-default values anyway.

In the CL I'm also deprecating SetAccessor which is an outdated type of
accessor. They should be replaced with SetNativeDataProperty for
internal properties that are spec'd as properties with special
behaviour, or SetAccessorProperty for properties that are visible to JS
as accessors.

Change-Id: I6c15fb436bd949d524fe7f90d2afad05358b963e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5006387
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/main@{#90805}
2023-11-08 10:30:00 +00:00
Toon Verwaest ef62aa3fa9 [builtins] Unify how Promise.all and .allSettled track resolution
Promise.all had a clever hack to track whether a resolve closure was
already called, but that didn't work when .allSettled needed to track
the state of a promise across both resolve and reject. Tracking was
changed to checking a hole in the values array. This CL now migrates
Promise.all to the same mechanism; avoiding the need to check the old
mechanism.

Change-Id: I501a660659804c27f16f8676f55f94953a6b089b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5000306
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#90710}
2023-11-02 14:21:19 +00:00
Toon Verwaest 35b5f762af [maglev] Split CheckConstructResult into two classes
That way we can avoid marking the node as calling in most cases, only
derived constructors need it.

Bug: v8:7700
Change-Id: I23b19046bfdda4d57e8b4ca6c18e3c918532180d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4693546
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#89018}
2023-07-18 19:10:46 +00:00
Toon Verwaest ed93bef7ab [maglev] Fix default constructor instantiation
The new.target may not be in the correct state for fast instantiation.

Bug: v8:7700, chromium:1465326
Change-Id: I09f92576c0b5573e902ae3b2210a7b5fdbd1e415
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4694007
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#89006}
2023-07-18 14:22:37 +00:00
Toon Verwaest 5208fd34be [maglev] Specialize CheckConstructResult for constructor kind
- derived constructors have implicit receiver `the hole`. They can't get
  `undefined` back from the constructor. They can throw for primitive
  return values.
- non-derived constructors always have an object as implicit receiver.
  They don't throw for primitive return values but swap the value.

Bug: v8:7700
Change-Id: I9c07fc2cc480e9733ad6dc09be4c3366d0278bea
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4679699
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88876}
2023-07-12 16:01:23 +00:00
Toon Verwaest 62971a25bf [d8] Plumb through task priority
Change-Id: Ie36e1dbed10cb77a0933843672ead44df8b57482
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4665581
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88835}
2023-07-11 13:39:25 +00:00
Toon Verwaest 5bce8a21d9 [pipeline] Don't generate code for detached contexts
With concurrent optimization it's possible we start compilation jobs
right before an iframe navigates. We may finish compilation after
navigation completes, causing likely unnecessary work to finalize the
code. Instead abort before finalization. To match this behaviour on the
optimization side, make sure we don't kick off optimization of functions
from detached contexts.

Change-Id: I81278112e5a488e621147e4d0f7d6f23b2ab0d58
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4675729
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88791}
2023-07-10 16:04:22 +00:00
Toon Verwaest 1c40bccea1 [d8] Complete the message loop after ExecuteString
Otherwise instantiating wasm modules goes back to the repl before
completion tasks are posted

Change-Id: I748ee6735619c2a272fc683e35d02923e2c7989f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4634581
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88458}
2023-06-23 13:01:49 +00:00
Toon Verwaest f12cb255f7 [maglev] Make concurrent Maglev config flag-configurable
Bug: v8:7700
Change-Id: Ia48ed65a22308d12f612f313501025538daa46e9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4629113
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88414}
2023-06-21 12:31:18 +00:00
Toon Verwaest c7c447735f [runtime] Set instance prototypes directly on maps
Bug: chromium:1452137
Change-Id: If1de44950711c99da4ace2e988f188421e849330
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4618153
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88326}
2023-06-16 15:51:52 +00:00
Toon Verwaest 4f74c2db8c [runtime] Use NativeContext more broadly; especially v8::Context
Change-Id: Ieb6851edf53aee120f7f016e0bf301f62c936166
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4615082
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88325}
2023-06-16 15:28:36 +00:00
Toon Verwaest 1f7f6d6371 [maglev] Detach maglev_osr from maglev, check both
Bug: v8:7700
Change-Id: I3dff95c68ea3b4aafb3fc4de527b97d95ac9f576
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4620191
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88318}
2023-06-16 13:11:03 +00:00
Toon Verwaest 39be7fce98 [maglev] Depend on array iterator protector early enough
Bug: v8:7700, chromium:1448986
Change-Id: I8d953a285879fd720a882a574daa8fcc1aceb66f
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4614185
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88229}
2023-06-14 11:28:50 +00:00
Toon Verwaest 6e46f2d2e0 [maglev] Add a weak positive implication for maglev-osr
Bug: v8:7700
Change-Id: I1239936ac24a1cfee41319c97d080b5236834f83
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4610282
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88190}
2023-06-13 09:54:45 +00:00
Toon Verwaest a28a54dbc7 [maglev] Simplify OSR flags
Bug: v8:7700
Change-Id: If9f1cc08006a612a908f6500205532fab92c13a8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4593719
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88089}
2023-06-06 14:10:05 +00:00
Toon Verwaest e090c5ab01 [maglev] Skipping marking for optimization if already active
Bug: v8:7700, chromium:1451056
Change-Id: I5ec2d79928c79280aea455204cf00733cb7ae44a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4588850
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#88065}
2023-06-05 16:53:54 +00:00
Toon Verwaest 8c4caa0df1 [maglev] Make sure we don't clobber the object we're trying ToNumber
Bug: v8:7700
Change-Id: I948a41b7c7b62e3b869e8843e57ab9e26dd5f92d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4572808
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87911}
2023-05-30 09:00:17 +00:00
Toon Verwaest a35630562d [maglev] Improve ToBoolean related nodes
Specialize for more known input types

Bug: v8:7700
Change-Id: I18374faf4e803749353b66ef8c6041267c493d79
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4568730
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87898}
2023-05-26 17:05:45 +00:00
Toon Verwaest e13a15c3fa Revert "[maglev] Add and enforce CanAllocate"
This reverts commit 4d5338f630.

Reason for revert: performance issues

Original change's description:
> [maglev] Add and enforce CanAllocate
>
> Replace "NonMemorySideEffects" with "CanAllocate", which matches the op
> properties in Turboshaft.
>
> Additionally, enforce the use of CanAllocate (and, while we're at it,
> Call and DeferredCall) by adding debug checks to the MaglevAssembler
> that allocation/calls are allowed.
>
> Bug: v8:7700
> Change-Id: I5e2d257da5dcec6a05aab06568c5908a6b932f5a
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4562653
> Reviewed-by: Victor Gomes <victorgomes@chromium.org>
> Commit-Queue: Leszek Swirski <leszeks@chromium.org>
> Auto-Submit: Leszek Swirski <leszeks@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#87867}

Bug: v8:7700
Change-Id: I30dd7d372bcf1e8a70abba6bbee9fcc873b6fa70
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4570545
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87897}
2023-05-26 17:02:48 +00:00
Toon Verwaest d6c05880d2 [maglev] Add an inline fast path in ToNumberOrNumeric
Make the slow path a slow deferred call.

Bug: v8:7700
Change-Id: I69aefe988dda6803a1a74ab6edfd59bd02ba901c
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4570512
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87886}
2023-05-26 11:17:38 +00:00
Toon Verwaest 060b4d887a Check whether we have bytecode before calling Compiler::Compile
Bug: v8:13999
Change-Id: I15d0c838a84f6848a826b00a56ca34208ff3bff8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4557764
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87814}
2023-05-23 17:31:58 +00:00
Toon Verwaest 0f65f55178 fix test: prepare for optimization before optimizeosr
Bug: v8:13882
Change-Id: I486fb7297ee9970477dec4e37705f3f2ee23c4c1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4557184
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87813}
2023-05-23 17:20:24 +00:00
Toon Verwaest e081e8b006 [tiering] Check whether we actaully have TF code
Bug: v8:13992, chromium:1444835
Change-Id: I6007badacf1ad6d9f14c4d8d839d987ba1f84ed9
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4556946
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87811}
2023-05-23 16:57:27 +00:00
Toon Verwaest 7aaff070e1 [tiering] Tentative tiering state fix
Bug: chromium:1444835
Change-Id: I0b3e069384a94d74c7666638b0081961378364e8
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4547387
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87778}
2023-05-22 17:27:09 +00:00
Toon Verwaest a6f56a6707 [maglev] Fix deopt size estimate with underappplication
Don't subtract missing args from the frame size. We'll push undefined
for them.

Bug: v8:7700, chromium:1446841
Change-Id: If538d8d1254b1a39ff2f24b8d6d8b95cae729d8e
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4551987
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Victor Gomes <victorgomes@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87773}
2023-05-22 14:43:02 +00:00
Toon Verwaest 215932238d [maglev] Fix smi handling in CheckMaps
Bug: v8:7700,chromium:1447359
Change-Id: Ib8bfda7ad1f2bf3c20a8ff1c5242b305c944b6cc
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4547818
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87768}
2023-05-22 11:29:28 +00:00
Toon Verwaest 2b0b37d322 [maglev] Recognize number and string maps
Bug: v8:7700, chromium:1445275
Change-Id: I18bf3fc530c8d64f579d0e750cbfaa05802d49d3
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4545318
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87752}
2023-05-19 08:20:05 +00:00
Toon Verwaest fdc017c89b [maglev] Better context specialization and super()
We know the closure and its outer context when we're context
specializing, so set the initial frame values to the right constants.
This allows super() to specialize to the actual constructor we're
running; and load constants for the super constructors as well in most
cases.

Bug: v8:7700
Change-Id: Ifabfd7261dd7d89e3900dc691a3ffb109d002a83
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4545077
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87739}
2023-05-17 17:58:27 +00:00
Toon Verwaest ffc179df5e [maglev] Optimize StaInArrayLiteral
Reuse regular element access, but skip unnecessary checks.

Bug: v8:7700
Change-Id: Ie065766f07dfb13b2402a13cd406306b281c9eb1
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4537981
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87706}
2023-05-16 16:56:23 +00:00
Toon Verwaest 24e4cf9a06 [maglev] Streamline call optimizations
Introduce 3 layers:
- BuildCallWithFeedback which consumes and checks feedback. It calls
  BuildCall after checking. (BuildCheckValue may annotation the incoming
  function node with the known function type.)
- BuildCall may specialize based on compiler-detectable values
  (constants, closures allocated in the compiled function, ..), or could
  call BuildGenericCall.
- BuildGenericCall that just calls whatever the target function is;
  but doesn't learn through the feedback vector. Doing so could skew
  invocation acounts

Function.prototype.call calls into BuildCall since it doesn't have
additional call feedback; but doing so means we avoid duplicating
optimizations already present in BuildCall.

Bug: v8:7700
Change-Id: Ia3e4d786e0c92da34a13e7a01693d872a7a6f4f7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4536977
Reviewed-by: Patrick Thier <pthier@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87700}
2023-05-16 14:57:21 +00:00
Toon Verwaest b6e1ba008c [ic] Limit the number of deprecated maps we track
Otherwise we get unlimited growth. Deprecated maps aren't guaranteed to
be duplicates of undeprecated maps; and if we don't count them at all,
we might end up with a lot of feedback in optimized code (+ very long
feedback to look through in polymorphic ICs)

Change-Id: I29e3bc5a7d4599ee03e9dbf37c14ce767e10d352
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4530993
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87663}
2023-05-15 14:44:32 +00:00
Toon Verwaest b21ec7f8cb [maglev] Fold branch also when value in ToBoolean is a boolean
And use it to convert the result of @@hasInstance.

TryBuildBranchFor should be extended to support all the cases that
BuildBranchIfRootConstant and BuildBranchIfToBooleanTrue have,
especially handling constants and untagged representations directly.

Bug: v8:7700
Change-Id: Ibe6559c1073d2600ea1c9c50b6dfef948053f9ef
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4531905
Reviewed-by: Patrick Thier <pthier@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87655}
2023-05-15 11:51:09 +00:00
Toon Verwaest ccdf86baab [maglev] Handle constant results from inlined constructors
The main case that this optimizes is constructors that don't explicitly
return anything (return undefined).

Bug: v8:7700
Change-Id: Ica0706c2e8837864f85f882a6cd478de01cba0b5
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4530368
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87653}
2023-05-15 11:49:04 +00:00
Toon Verwaest f2722b7aa4 [maglev] Enable inlining
Bug: v8:7700
Change-Id: If9c6c9dbafc0b2e7f20b2d31b8480f5dec6d3c86
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4531883
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87650}
2023-05-15 09:44:16 +00:00
Toon Verwaest 9a08be61bd [maglev] Optimize more checks
- Make ToBoolean take in check_type as well to avoid smi checks.
- Try build branches for ToBoolean(LogicalNot)

Bug: v8:7700
Change-Id: I2dbb23a623c49ff1604e232234ee69c3d8d2b97d
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4526152
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Patrick Thier <pthier@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87636}
2023-05-12 15:29:39 +00:00
Toon Verwaest e13f3b504d [maglev] Optimize a bunch of checks
- GetInternalizedString now annotates the source as string
- Pass CheckType into more nodes to avoid smi checks
- first try to convert heap numbers to indices before handling more
  complex strings

Bug: v8:7700
Change-Id: I98f57a9c39ab3e53b5a5789b489a10e247288eca
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4526144
Commit-Queue: Patrick Thier <pthier@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Patrick Thier <pthier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87633}
2023-05-12 14:30:07 +00:00
Toon Verwaest 40e67b84b2 [maglev] Tweak inlining of maglev with TF enabled
- also inline Turbofanned functions
- don't inline as much.

Bug: v8:7700
Change-Id: If8ad58ac728c5392302a04c4ca236754a3659211
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4519125
Reviewed-by: Patrick Thier <pthier@chromium.org>
Commit-Queue: Patrick Thier <pthier@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87577}
2023-05-10 16:10:46 +00:00
Toon Verwaest 4431fea15d [maglev] Remove unnecessary check
Bug: v8:7700
Change-Id: Icf4217ca0deb84cefe532a1bf045b2b919db27c4
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4515109
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87568}
2023-05-10 12:06:57 +00:00
Toon Verwaest 214861de27 [maglev] Fix elements kind dependencies for []
Bug: chromium:1442512, v8:7700
Change-Id: Ia73a4d0da698664b74b3db808d5ec2010d582150
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4515108
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87530}
2023-05-09 14:30:30 +00:00
Toon Verwaest 8db2d11ea5 [maglev] Only reset tiering if the deoptimized code is active
Bug: v8:7700, chromium:1442064
Change-Id: Ie49a93390088be46a6be356cdc1738b60850af4b
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4516242
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/main@{#87523}
2023-05-09 12:05:09 +00:00