mirror of https://github.com/electron/electron
46 lines
2.0 KiB
Diff
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().
|