-
Notifications
You must be signed in to change notification settings - Fork 15k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: cherry-pick 014e1f857c33 from v8 (#31672)
* chore: cherry-pick 014e1f857c33 from v8 * chore: update patches Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Co-authored-by: Electron Bot <electron@github.com>
- Loading branch information
1 parent
20c63a6
commit a6636c3
Showing
2 changed files
with
60 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: =?UTF-8?q?Marja=20H=C3=B6ltt=C3=A4?= <marja@chromium.org> | ||
Date: Mon, 25 Oct 2021 12:17:15 +0200 | ||
Subject: Merged: [super ic] Fix receiver vs lookup start object confusion | ||
related to module exports | ||
MIME-Version: 1.0 | ||
Content-Type: text/plain; charset=UTF-8 | ||
Content-Transfer-Encoding: 8bit | ||
|
||
Revision: e4dba97006ca20337deafb85ac00524a94a62fe | ||
|
||
BUG=chromium:1260577 | ||
NOTRY=true | ||
NOPRESUBMIT=true | ||
NOTREECHECKS=true | ||
R=ishell@chromium.org | ||
|
||
Change-Id: Ia85235fecdb37a5da6a28f7a0092a754a8620552 | ||
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3240826 | ||
Reviewed-by: Igor Sheludko <ishell@chromium.org> | ||
Commit-Queue: Marja Hölttä <marja@chromium.org> | ||
Cr-Commit-Position: refs/branch-heads/9.4@{#48} | ||
Cr-Branched-From: 3b51863bc25492549a8bf96ff67ce481b1a3337b-refs/heads/9.4.146@{#1} | ||
Cr-Branched-From: 2890419fc8fb9bdb507fdd801d76fa7dd9f022b5-refs/heads/master@{#76233} | ||
|
||
diff --git a/src/ic/accessor-assembler.cc b/src/ic/accessor-assembler.cc | ||
index 64d64cd017c354be04561e1c7487437420febb48..f27e3b7f590a76ad4ca995c21f2d279bc9d47042 100644 | ||
--- a/src/ic/accessor-assembler.cc | ||
+++ b/src/ic/accessor-assembler.cc | ||
@@ -846,8 +846,8 @@ void AccessorAssembler::HandleLoadICSmiHandlerLoadNamedCase( | ||
Comment("module export"); | ||
TNode<UintPtrT> index = | ||
DecodeWord<LoadHandler::ExportsIndexBits>(handler_word); | ||
- TNode<Module> module = LoadObjectField<Module>( | ||
- CAST(p->receiver()), JSModuleNamespace::kModuleOffset); | ||
+ TNode<Module> module = | ||
+ LoadObjectField<Module>(CAST(holder), JSModuleNamespace::kModuleOffset); | ||
TNode<ObjectHashTable> exports = | ||
LoadObjectField<ObjectHashTable>(module, Module::kExportsOffset); | ||
TNode<Cell> cell = CAST(LoadFixedArrayElement(exports, index)); | ||
diff --git a/src/ic/ic.cc b/src/ic/ic.cc | ||
index 047a74cfd3a2608004b38278a1565fb818e5cc69..b1c76e371a7a5b2a1f37df38d64c96e719417408 100644 | ||
--- a/src/ic/ic.cc | ||
+++ b/src/ic/ic.cc | ||
@@ -983,7 +983,13 @@ Handle<Object> LoadIC::ComputeHandler(LookupIterator* lookup) { | ||
// We found the accessor, so the entry must exist. | ||
DCHECK(entry.is_found()); | ||
int index = ObjectHashTable::EntryToValueIndex(entry); | ||
- return LoadHandler::LoadModuleExport(isolate(), index); | ||
+ Handle<Smi> smi_handler = | ||
+ LoadHandler::LoadModuleExport(isolate(), index); | ||
+ if (holder_is_lookup_start_object) { | ||
+ return smi_handler; | ||
+ } | ||
+ return LoadHandler::LoadFromPrototype(isolate(), map, holder, | ||
+ smi_handler); | ||
} | ||
|
||
Handle<Object> accessors = lookup->GetAccessors(); |