Changeset 292447 in webkit for trunk/Source/JavaScriptCore/dfg


Ignore:
Timestamp:
Apr 5, 2022, 8:41:00 PM (3 years ago)
Author:
[email protected]
Message:

[JSC] Use inlined assertion for CodeBlock type
https://bugs.webkit.org/show_bug.cgi?id=238849

Reviewed by Michael Saboff.

We introduced probeDebug-based CodeBlock assertion, but it is too slow and causing timeout on Debug JSC tests.
Instead, we use inlined assertion which is much faster to prevent these Debug build timeout.

  • assembler/AbortReason.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::compileEntry):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCurrentBlock):

  • dfg/DFGThunks.cpp:

(JSC::DFG::osrEntryThunkGenerator):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::jitAssertCodeBlockOnCallFrameWithType):
(JSC::AssemblyHelpers::jitAssertCodeBlockOnCallFrameIsOptimizingJIT):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::jitAssertCodeBlockOnCallFrameWithType):
(JSC::AssemblyHelpers::jitAssertCodeBlockOnCallFrameIsOptimizingJIT):

  • jit/JIT.cpp:

(JSC::JIT::compileAndLinkWithoutFinalizing):

  • jit/JITCode.h:

(JSC::JITCode::offsetOfJITType):

Location:
trunk/Source/JavaScriptCore/dfg
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp

    r292445 r292447  
    112112    // both normal return code and when jumping to an exception handler).
    113113    emitFunctionPrologue();
    114 #if ASSERT_ENABLED
    115     probeDebug([=](Probe::Context& ctx) {
    116         CodeBlock* codeBlock = ctx.fp<CallFrame*>()->codeBlock();
    117         RELEASE_ASSERT(codeBlock->jitType() == JITType::DFGJIT);
    118     });
    119 #endif
     114    jitAssertCodeBlockOnCallFrameWithType(GPRInfo::regT2, JITType::DFGJIT);
    120115}
    121116
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp

    r292445 r292447  
    22172217        m_jit.addPtr(CCallHelpers::TrustedImm32(-(m_graph.frameRegisterCount() * sizeof(Register))), GPRInfo::callFrameRegister,  CCallHelpers::stackPointerRegister);
    22182218        m_jit.emitSaveCalleeSaves();
     2219        // CodeBlock in the stack is already replaced in OSR entry.
     2220#if USE(JSVALUE64)
     2221        // Use numberTagRegister as a scratch since it is recovered after this.
     2222        m_jit.jitAssertCodeBlockOnCallFrameWithType(GPRInfo::numberTagRegister, JITType::DFGJIT);
     2223#endif
    22192224        m_jit.emitMaterializeTagCheckRegisters();
    2220         // CodeBlock in the stack is already replaced in OSR entry.
    22212225    }
    22222226
  • trunk/Source/JavaScriptCore/dfg/DFGThunks.cpp

    r292372 r292447  
    164164    ok.link(&jit);
    165165
    166 #if ASSERT_ENABLED
    167     jit.probeDebug([](Probe::Context& ctx) {
    168         CodeBlock* codeBlock = ctx.fp<CallFrame*>()->codeBlock();
    169         RELEASE_ASSERT(JITCode::isOptimizingJIT(codeBlock->jitType()));
    170     });
    171 #endif
     166    jit.jitAssertCodeBlockOnCallFrameIsOptimizingJIT(GPRInfo::regT2);
    172167
    173168    jit.restoreCalleeSavesFromEntryFrameCalleeSavesBuffer(vm.topEntryFrame);
Note: See TracChangeset for help on using the changeset viewer.