⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 287758 in webkit


Ignore:
Timestamp:
Jan 7, 2022, 10:36:15 AM (5 years ago)
Author:
ysuzuki@apple.com
Message:

[JSC] Clean up StructureStubInfo
https://bugs.webkit.org/show_bug.cgi?id=234943

Reviewed by Saam Barati.

Use std::unique_ptr<PolymorphicAccess> instead of raw pointer.

  • bytecode/CheckPrivateBrandStatus.cpp:

(JSC::CheckPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/DeleteByStatus.cpp:

(JSC::DeleteByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/GetByStatus.cpp:

(JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/InByStatus.cpp:

(JSC::InByStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/InstanceOfStatus.cpp:

(JSC::InstanceOfStatus::computeForStubInfo):

  • bytecode/PutByStatus.cpp:

(JSC::PutByStatus::computeForStubInfo):

  • bytecode/SetPrivateBrandStatus.cpp:

(JSC::SetPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::deref):
(JSC::StructureStubInfo::aboutToDie):
(JSC::StructureStubInfo::addAccessCase):
(JSC::StructureStubInfo::visitAggregateImpl):
(JSC::StructureStubInfo::visitWeakReferences):
(JSC::StructureStubInfo::propagateTransitions):
(JSC::StructureStubInfo::summary const):
(JSC::StructureStubInfo::containsPC const):
(JSC::StructureStubInfo::~StructureStubInfo): Deleted.

  • bytecode/StructureStubInfo.h:

(JSC::StructureStubInfo::offsetOfCodePtr):
(JSC::StructureStubInfo::offsetOfDoneLocation):
(JSC::StructureStubInfo::offsetOfSlowPathStartLocation):
(JSC::StructureStubInfo::offsetOfSlowOperation):
(JSC::StructureStubInfo::offsetOfCountdown):

Location:
trunk/Source/JavaScriptCore
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r287738 r287758  
     12022-01-07  Yusuke Suzuki  <ysuzuki@apple.com>
     2
     3        [JSC] Clean up StructureStubInfo
     4        https://bugs.webkit.org/show_bug.cgi?id=234943
     5
     6        Reviewed by Saam Barati.
     7
     8        Use std::unique_ptr<PolymorphicAccess> instead of raw pointer.
     9
     10        * bytecode/CheckPrivateBrandStatus.cpp:
     11        (JSC::CheckPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):
     12        * bytecode/DeleteByStatus.cpp:
     13        (JSC::DeleteByStatus::computeForStubInfoWithoutExitSiteFeedback):
     14        * bytecode/GetByStatus.cpp:
     15        (JSC::GetByStatus::computeForStubInfoWithoutExitSiteFeedback):
     16        * bytecode/InByStatus.cpp:
     17        (JSC::InByStatus::computeForStubInfoWithoutExitSiteFeedback):
     18        * bytecode/InstanceOfStatus.cpp:
     19        (JSC::InstanceOfStatus::computeForStubInfo):
     20        * bytecode/PutByStatus.cpp:
     21        (JSC::PutByStatus::computeForStubInfo):
     22        * bytecode/SetPrivateBrandStatus.cpp:
     23        (JSC::SetPrivateBrandStatus::computeForStubInfoWithoutExitSiteFeedback):
     24        * bytecode/StructureStubInfo.cpp:
     25        (JSC::StructureStubInfo::deref):
     26        (JSC::StructureStubInfo::aboutToDie):
     27        (JSC::StructureStubInfo::addAccessCase):
     28        (JSC::StructureStubInfo::visitAggregateImpl):
     29        (JSC::StructureStubInfo::visitWeakReferences):
     30        (JSC::StructureStubInfo::propagateTransitions):
     31        (JSC::StructureStubInfo::summary const):
     32        (JSC::StructureStubInfo::containsPC const):
     33        (JSC::StructureStubInfo::~StructureStubInfo): Deleted.
     34        * bytecode/StructureStubInfo.h:
     35        (JSC::StructureStubInfo::offsetOfCodePtr):
     36        (JSC::StructureStubInfo::offsetOfDoneLocation):
     37        (JSC::StructureStubInfo::offsetOfSlowPathStartLocation):
     38        (JSC::StructureStubInfo::offsetOfSlowOperation):
     39        (JSC::StructureStubInfo::offsetOfCountdown):
     40
    1412022-01-06  Saam Barati  <sbarati@apple.com>
    242
  • trunk/Source/JavaScriptCore/bytecode/CheckPrivateBrandStatus.cpp

    r286994 r287758  
    101101
    102102    case CacheType::Stub: {
    103         PolymorphicAccess* list = stubInfo->u.stub;
     103        PolymorphicAccess* list = stubInfo->m_stub.get();
    104104
    105105        for (unsigned listIndex = 0; listIndex < list->size(); ++listIndex) {
  • trunk/Source/JavaScriptCore/bytecode/DeleteByStatus.cpp

    r286994 r287758  
    100100
    101101    case CacheType::Stub: {
    102         PolymorphicAccess* list = stubInfo->u.stub;
     102        PolymorphicAccess* list = stubInfo->m_stub.get();
    103103
    104104        for (unsigned listIndex = 0; listIndex < list->size(); ++listIndex) {
  • trunk/Source/JavaScriptCore/bytecode/GetByStatus.cpp

    r286994 r287758  
    237237       
    238238    case CacheType::Stub: {
    239         PolymorphicAccess* list = stubInfo->u.stub;
     239        PolymorphicAccess* list = stubInfo->m_stub.get();
    240240        if (list->size() == 1) {
    241241            const AccessCase& access = list->at(0);
  • trunk/Source/JavaScriptCore/bytecode/InByStatus.cpp

    r286994 r287758  
    161161
    162162    case CacheType::Stub: {
    163         PolymorphicAccess* list = stubInfo->u.stub;
     163        PolymorphicAccess* list = stubInfo->m_stub.get();
    164164        for (unsigned listIndex = 0; listIndex < list->size(); ++listIndex) {
    165165            const AccessCase& access = list->at(listIndex);
  • trunk/Source/JavaScriptCore/bytecode/InstanceOfStatus.cpp

    r286994 r287758  
    8484        return TakesSlowPath; // This is conservative. It could be that we have no information.
    8585   
    86     PolymorphicAccess* list = stubInfo->u.stub;
     86    PolymorphicAccess* list = stubInfo->m_stub.get();
    8787    InstanceOfStatus result;
    8888    for (unsigned listIndex = 0; listIndex < list->size(); ++listIndex) {
  • trunk/Source/JavaScriptCore/bytecode/PutByStatus.cpp

    r286994 r287758  
    189189       
    190190    case CacheType::Stub: {
    191         PolymorphicAccess* list = stubInfo->u.stub;
     191        PolymorphicAccess* list = stubInfo->m_stub.get();
    192192       
    193193        PutByStatus result;
  • trunk/Source/JavaScriptCore/bytecode/SetPrivateBrandStatus.cpp

    r286994 r287758  
    101101
    102102    case CacheType::Stub: {
    103         PolymorphicAccess* list = stubInfo->u.stub;
     103        PolymorphicAccess* list = stubInfo->m_stub.get();
    104104
    105105        for (unsigned listIndex = 0; listIndex < list->size(); ++listIndex) {
  • trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.cpp

    r286994 r287758  
    4040}
    4141
    42 StructureStubInfo::~StructureStubInfo()
    43 {
    44 }
     42StructureStubInfo::~StructureStubInfo() = default;
    4543
    4644void StructureStubInfo::initGetByIdSelf(const ConcurrentJSLockerBase& locker, CodeBlock* codeBlock, Structure* inlineAccessBaseStructure, PropertyOffset offset, CacheableIdentifier identifier)
     
    9189    switch (m_cacheType) {
    9290    case CacheType::Stub:
    93         delete u.stub;
     91        m_stub.reset();
    9492        return;
    9593    case CacheType::Unset:
     
    109107    switch (m_cacheType) {
    110108    case CacheType::Stub:
    111         u.stub->aboutToDie();
     109        m_stub->aboutToDie();
    112110        return;
    113111    case CacheType::Unset:
     
    140138       
    141139        if (m_cacheType == CacheType::Stub) {
    142             result = u.stub->addCase(locker, vm, codeBlock, *this, accessCase.releaseNonNull());
     140            result = m_stub->addCase(locker, vm, codeBlock, *this, accessCase.releaseNonNull());
    143141           
    144142            if (StructureStubInfoInternal::verbose)
     
    177175           
    178176            setCacheType(locker, CacheType::Stub);
    179             u.stub = access.release();
     177            m_stub = WTFMove(access);
    180178        }
    181179       
     
    203201        clearBufferedStructures();
    204202       
    205         result = u.stub->regenerate(locker, vm, globalObject, codeBlock, ecmaMode, *this);
     203        result = m_stub->regenerate(locker, vm, globalObject, codeBlock, ecmaMode, *this);
    206204       
    207205        if (StructureStubInfoInternal::verbose)
     
    324322        return;
    325323    case CacheType::Stub:
    326         u.stub->visitAggregate(visitor);
     324        m_stub->visitAggregate(visitor);
    327325        return;
    328326    }
     
    349347        isValid &= vm.heap.isMarked(structure);
    350348    if (m_cacheType == CacheType::Stub)
    351         isValid &= u.stub->visitWeak(vm);
     349        isValid &= m_stub->visitWeak(vm);
    352350
    353351    if (isValid)
     
    365363
    366364    if (m_cacheType == CacheType::Stub)
    367         u.stub->propagateTransitions(visitor);
     365        m_stub->propagateTransitions(visitor);
    368366}
    369367
     
    376374    StubInfoSummary simple = StubInfoSummary::Simple;
    377375    if (m_cacheType == CacheType::Stub) {
    378         PolymorphicAccess* list = u.stub;
     376        PolymorphicAccess* list = m_stub.get();
    379377        for (unsigned i = 0; i < list->size(); ++i) {
    380378            const AccessCase& access = list->at(i);
     
    408406    if (m_cacheType != CacheType::Stub)
    409407        return false;
    410     return u.stub->containsPC(pc);
     408    return m_stub->containsPC(pc);
    411409}
    412410
  • trunk/Source/JavaScriptCore/bytecode/StructureStubInfo.h

    r286994 r287758  
    3333#include "MacroAssembler.h"
    3434#include "Options.h"
     35#include "PolymorphicAccess.h"
    3536#include "PutKind.h"
    3637#include "RegisterSet.h"
     
    351352
    352353public:
    353     CodeOrigin codeOrigin;
    354     PropertyOffset byIdSelfOffset;
    355354    static ptrdiff_t offsetOfByIdSelfOffset() { return OBJECT_OFFSETOF(StructureStubInfo, byIdSelfOffset); }
    356355    static ptrdiff_t offsetOfInlineAccessBaseStructure() { return OBJECT_OFFSETOF(StructureStubInfo, m_inlineAccessBaseStructure); }
    357     union {
    358         PolymorphicAccess* stub;
    359     } u;
     356    static ptrdiff_t offsetOfCodePtr() { return OBJECT_OFFSETOF(StructureStubInfo, m_codePtr); }
     357    static ptrdiff_t offsetOfDoneLocation() { return OBJECT_OFFSETOF(StructureStubInfo, doneLocation); }
     358    static ptrdiff_t offsetOfSlowPathStartLocation() { return OBJECT_OFFSETOF(StructureStubInfo, slowPathStartLocation); }
     359    static ptrdiff_t offsetOfSlowOperation() { return OBJECT_OFFSETOF(StructureStubInfo, m_slowOperation); }
     360    static ptrdiff_t offsetOfCountdown() { return OBJECT_OFFSETOF(StructureStubInfo, countdown); }
     361
    360362    Structure* inlineAccessBaseStructure(VM& vm)
    361363    {
     
    364366        return vm.getStructure(m_inlineAccessBaseStructure);
    365367    }
     368
     369    CodeOrigin codeOrigin;
     370    PropertyOffset byIdSelfOffset;
     371    std::unique_ptr<PolymorphicAccess> m_stub;
    366372    StructureID m_inlineAccessBaseStructure { 0 };
    367373private:
     
    383389
    384390    MacroAssemblerCodePtr<JITStubRoutinePtrTag> m_codePtr;
    385 
    386     static ptrdiff_t offsetOfCodePtr() { return OBJECT_OFFSETOF(StructureStubInfo, m_codePtr); }
    387     static ptrdiff_t offsetOfDoneLocation() { return OBJECT_OFFSETOF(StructureStubInfo, doneLocation); }
    388     static ptrdiff_t offsetOfSlowPathStartLocation() { return OBJECT_OFFSETOF(StructureStubInfo, slowPathStartLocation); }
    389     static ptrdiff_t offsetOfSlowOperation() { return OBJECT_OFFSETOF(StructureStubInfo, m_slowOperation); }
    390     static ptrdiff_t offsetOfCountdown() { return OBJECT_OFFSETOF(StructureStubInfo, countdown); }
    391391
    392392    RegisterSet usedRegisters;
Note: See TracChangeset for help on using the changeset viewer.