Skip to content

Commit

Permalink
Unreviewed, follow-up after 262809@main
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=255273
rdar://107871233

Follow-up after 262809@main. Resolving review comments.

* Source/JavaScriptCore/runtime/JSObject.cpp:
* Source/JavaScriptCore/runtime/ObjectConstructor.cpp:
(JSC::JSC_DEFINE_HOST_FUNCTION):
* Source/JavaScriptCore/runtime/StructureInlines.h:
(JSC::Structure::addPropertyTransitionToExistingStructureImpl):
(JSC::StructureTransitionTable::finalizeUnconditionally):

Canonical link: https://commits.webkit.org/262811@main
  • Loading branch information
Constellation committed Apr 11, 2023
1 parent 8096a94 commit ec39b38
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 15 deletions.
1 change: 0 additions & 1 deletion Source/JavaScriptCore/runtime/JSObject.cpp
Expand Up @@ -40,7 +40,6 @@
#include "PropertyDescriptor.h"
#include "PropertyNameArray.h"
#include "ProxyObject.h"
#include "SuperSampler.h"
#include "TypeError.h"
#include "VMInlines.h"
#include "VMTrapsInlines.h"
Expand Down
2 changes: 2 additions & 0 deletions Source/JavaScriptCore/runtime/ObjectConstructor.cpp
Expand Up @@ -326,6 +326,8 @@ JSC_DEFINE_HOST_FUNCTION(objectConstructorAssign, (JSGlobalObject* globalObject,
bool targetCanPerformFastPut = jsDynamicCast<JSFinalObject*>(target) && target->canPerformFastPutInlineExcludingProto() && target->isStructureExtensible();
unsigned argsCount = callFrame->argumentCount();

// argsCount == 2 case does not need to use arguments' batching.
// We limit argsCount < 5 not to increase properties / values vector super large.
if (argsCount > 2 && argsCount < 5 && targetCanPerformFastPut) {
bool willBatch = true;
for (unsigned i = 1; i < argsCount; ++i) {
Expand Down
20 changes: 6 additions & 14 deletions Source/JavaScriptCore/runtime/StructureInlines.h
Expand Up @@ -35,7 +35,6 @@
#include "Structure.h"
#include "StructureChain.h"
#include "StructureRareDataInlines.h"
#include "SuperSampler.h"
#include "Watchpoint.h"
#include <wtf/CompactRefPtr.h>
#include <wtf/Threading.h>
Expand Down Expand Up @@ -712,16 +711,10 @@ inline Structure* Structure::addPropertyTransitionToExistingStructureImpl(Struct
if (structure->hasBeenDictionary())
return nullptr;

Structure* existingTransition = nullptr;
{
{
existingTransition = structure->m_transitionTable.get(uid, attributes, TransitionKind::PropertyAddition);
}
if (existingTransition) {
validateOffset(existingTransition->transitionOffset(), existingTransition->inlineCapacity());
offset = existingTransition->transitionOffset();
return existingTransition;
}
if (Structure* existingTransition = structure->m_transitionTable.get(uid, attributes, TransitionKind::PropertyAddition)) {
validateOffset(existingTransition->transitionOffset(), existingTransition->inlineCapacity());
offset = existingTransition->transitionOffset();
return existingTransition;
}

return nullptr;
Expand Down Expand Up @@ -758,9 +751,8 @@ inline Structure* StructureTransitionTable::get(UniquedStringImpl* rep, unsigned

inline void StructureTransitionTable::finalizeUnconditionally(VM& vm, CollectionScope)
{
if (isUsingSingleSlot()) {
auto* transition = trySingleTransition();
if (transition && !vm.heap.isMarked(transition))
if (auto* transition = trySingleTransition()) {
if (!vm.heap.isMarked(transition))
m_data = UsingSingleSlotFlag;
}
}
Expand Down

0 comments on commit ec39b38

Please sign in to comment.