[maps] Avoid self-prototype transition in Map::GetDerivedMap When Map::GetDerivedMap is called with a non-JSObject prototype (such as a JSProxy) that matches from->prototype(), it previously called TransitionRootMapToPrototypeForNewObject unconditionally, creating a prototype transition to a new map with the same prototype and back-pointer set to the original root map. Subsequent MapUpdater runs walked the back-pointer to the original root map and skipped the prototype transition because root_map_->prototype() equals *new_prototype_, causing a CHECK_EQ failure in LookupIterator::IsCacheableTransition(). Fixed: 565836459 TAG=agy CONV=9d3c2c3d-d780-4e2c-b8ce-ad0e25cd2825 Change-Id: Icdc5ddcdcaf7bd24956bc75f7dabeca1e7fa7b4e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8468367 Commit-Queue: Igor Sheludko <ishell@chromium.org> Auto-Submit: Igor Sheludko <ishell@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#110107}
V8 is Google's open source JavaScript engine.
V8 implements ECMAScript as specified in ECMA-262.
V8 is written in C++ and is used in Chromium, the open source browser from Google.
V8 can run standalone, or can be embedded into any C++ application.
V8 Project page: https://v8.dev/docs
Checkout depot tools, and run
fetch v8
This will checkout V8 into the directory v8 and fetch all of its dependencies. To stay up to date, run
git pull origin
gclient sync
For fetching all branches, add the following into your remote configuration in .git/config:
fetch = +refs/branch-heads/*:refs/remotes/branch-heads/*
fetch = +refs/tags/*:refs/tags/*
Please follow the instructions mentioned at v8.dev/docs/contribute.