Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 1f69d0944e676846b9daa722f4830db27390b14f
https://github.com/WebKit/WebKit/commit/1f69d0944e676846b9daa722f4830db27390b14f
Author: Yusuke Suzuki <[email protected]>
Date: 2022-12-07 (Wed, 07 Dec 2022)
Changed paths:
M Source/JavaScriptCore/bytecode/Watchpoint.cpp
M Source/JavaScriptCore/bytecode/Watchpoint.h
M Source/JavaScriptCore/runtime/JSGlobalObject.cpp
M Source/JavaScriptCore/runtime/JSObject.cpp
M Source/JavaScriptCore/runtime/JSObjectInlines.h
M Source/JavaScriptCore/runtime/Structure.cpp
M Source/JavaScriptCore/runtime/Structure.h
M Source/JavaScriptCore/runtime/StructureInlines.h
Log Message:
-----------
[JSC] Clean up Structure transition watchpoint firing to pave a way to faster
/ cheap adaptive watchpoint
https://bugs.webkit.org/show_bug.cgi?id=248853
Reviewed by Ross Kirsling and Alexey Shvayka.
This patch paves the way to adding more complex / faster / cheaper adaptive
watchpoint for some of important objects.
Right now, we adaptively re-install watchpoint by using
ObjectPropertyCondition's validation, which works great, but
a bit too generic & focusing on super common pattern. We would like to have
more complex condition for this check,
and we would like to examine the reason of transition in that case.
So, we clean up our transition code to appropriately pass StructureFireDetail.
We also clean up JSObject's transitions
so that we always use DeferredStructureTransitionWatchpointFire when structure
is held by an object.
* Source/JavaScriptCore/bytecode/Watchpoint.cpp:
(JSC::DeferredWatchpointFire::fireAllSlow): Deleted.
* Source/JavaScriptCore/bytecode/Watchpoint.h:
(JSC::DeferredWatchpointFire::DeferredWatchpointFire):
(JSC::DeferredWatchpointFire::watchpointsToFire):
(JSC::DeferredWatchpointFire::fireAll): Deleted.
* Source/JavaScriptCore/runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
* Source/JavaScriptCore/runtime/JSObject.cpp:
(JSC::JSObject::notifyPresenceOfIndexedAccessors):
(JSC::JSObject::createInitialUndecided):
(JSC::JSObject::createInitialInt32):
(JSC::JSObject::createInitialDouble):
(JSC::JSObject::createInitialContiguous):
(JSC::JSObject::createArrayStorage):
(JSC::JSObject::convertUndecidedToInt32):
(JSC::JSObject::convertUndecidedToDouble):
(JSC::JSObject::convertUndecidedToContiguous):
(JSC::JSObject::convertUndecidedToArrayStorage):
(JSC::JSObject::convertInt32ToDouble):
(JSC::JSObject::convertInt32ToContiguous):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToContiguous):
(JSC::JSObject::convertDoubleToArrayStorage):
(JSC::JSObject::convertContiguousToArrayStorage):
(JSC::JSObject::convertFromCopyOnWrite):
(JSC::JSObject::switchToSlowPutArrayStorage):
(JSC::JSObject::seal):
(JSC::JSObject::freeze):
(JSC::JSObject::preventExtensions):
(JSC::JSObject::reifyAllStaticProperties):
(JSC::JSObject::convertToDictionary):
(JSC::JSObject::convertToUncacheableDictionary):
* Source/JavaScriptCore/runtime/JSObjectInlines.h:
(JSC::JSObject::putDirectInternal):
* Source/JavaScriptCore/runtime/Structure.cpp:
(JSC::Structure::create):
(JSC::Structure::addPropertyTransition):
(JSC::Structure::addNewPropertyTransition):
(JSC::Structure::removeNewPropertyTransition):
(JSC::Structure::changePrototypeTransition):
(JSC::Structure::attributeChangeTransition):
(JSC::Structure::toDictionaryTransition):
(JSC::Structure::sealTransition):
(JSC::Structure::freezeTransition):
(JSC::Structure::preventExtensionsTransition):
(JSC::Structure::nonPropertyTransitionSlow):
(JSC::DeferredStructureTransitionWatchpointFire::DeferredStructureTransitionWatchpointFire):
(JSC::DeferredStructureTransitionWatchpointFire::~DeferredStructureTransitionWatchpointFire):
* Source/JavaScriptCore/runtime/Structure.h:
* Source/JavaScriptCore/runtime/StructureInlines.h:
(JSC::Structure::nonPropertyTransition):
Canonical link: https://commits.webkit.org/257515@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes