electron/patches/v8/cherry-pick-f911ff372723.patch

46 lines
2.0 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shu-yu Guo <syg@chromium.org>
Date: Fri, 10 May 2024 12:08:04 -0700
Subject: Merged: [ic] Use slow stub element handler for non-JSObjects
Fixed: 339736513
(cherry picked from commit 8a69c7880844ab00ee2f32079579a040a87eedca)
Change-Id: If87462eb044c194798a32cb25a5f3648ff823196
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5555847
Commit-Queue: Shu-yu Guo <syg@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Auto-Submit: Shu-yu Guo <syg@chromium.org>
Cr-Commit-Position: refs/branch-heads/12.4@{#36}
Cr-Branched-From: 309640da62fae0485c7e4f64829627c92d53b35d-refs/heads/12.4.254@{#1}
Cr-Branched-From: 5dc24701432278556a9829d27c532f974643e6df-refs/heads/main@{#92862}
diff --git a/src/ic/ic.cc b/src/ic/ic.cc
index 61bb82aff98e4273b651801b875416c686de872e..34cf7eb6d2f5ef74b37103a6ee2356b8825d3f58 100644
--- a/src/ic/ic.cc
+++ b/src/ic/ic.cc
@@ -2349,15 +2349,16 @@ Handle<Object> KeyedStoreIC::StoreElementHandler(
isolate()),
IsStoreInArrayLiteralIC());
- if (IsJSProxyMap(*receiver_map)) {
+ if (!IsJSObjectMap(*receiver_map)) {
// DefineKeyedOwnIC, which is used to define computed fields in instances,
- // should be handled by the slow stub.
- if (IsDefineKeyedOwnIC()) {
- TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_SlowStub);
- return StoreHandler::StoreSlow(isolate(), store_mode);
+ // should handled by the slow stub below instead of the proxy stub.
+ if (IsJSProxyMap(*receiver_map) && !IsDefineKeyedOwnIC()) {
+ return StoreHandler::StoreProxy(isolate());
}
- return StoreHandler::StoreProxy(isolate());
+ // Wasm objects or other kind of special objects go through the slow stub.
+ TRACE_HANDLER_STATS(isolate(), KeyedStoreIC_SlowStub);
+ return StoreHandler::StoreSlow(isolate(), store_mode);
}
// TODO(ishell): move to StoreHandler::StoreElement().