Ignore:
Timestamp:
Oct 31, 2019, 8:22:18 PM (6 years ago)
Author:
[email protected]
Message:

[JSC] Remove metadata(CallFrame*) accessor
https://bugs.webkit.org/show_bug.cgi?id=203712

Reviewed by Tadeu Zagallo.

We should pass CodeBlock* explicitly to remove unnecessary use of CallFrame*, which is very error-prone.

  • dfg/DFGOSREntry.cpp:

(JSC::DFG::prepareCatchOSREntry):

  • dfg/DFGOSREntry.h:
  • generator/Metadata.rb:
  • jit/JITOperations.cpp:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/jit/JITOperations.cpp

    r251518 r251903  
    17331733    BytecodeIndex bytecodeIndex = BytecodeIndex::fromBits(bytecodeIndexBits);
    17341734
    1735     CodeBlock* optimizedReplacement = callFrame->codeBlock()->replacement();
    1736     if (UNLIKELY(!optimizedReplacement))
    1737         return nullptr;
    1738 
    1739     switch (optimizedReplacement->jitType()) {
    1740     case JITType::DFGJIT:
    1741     case JITType::FTLJIT: {
    1742         MacroAssemblerCodePtr<ExceptionHandlerPtrTag> entry = DFG::prepareCatchOSREntry(vm, callFrame, optimizedReplacement, bytecodeIndex);
    1743         return entry.executableAddress<char*>();
    1744     }
    1745     default:
    1746         break;
    1747     }
    1748     return nullptr;
    1749 }
    1750 
    1751 char* JIT_OPERATION operationTryOSREnterAtCatchAndValueProfile(VM* vmPointer, uint32_t bytecodeIndexBits)
    1752 {
    1753     VM& vm = *vmPointer;
    1754     CallFrame* callFrame = DECLARE_CALL_FRAME(vm);
    1755     JITOperationPrologueCallFrameTracer tracer(vm, callFrame);
    1756     BytecodeIndex bytecodeIndex = BytecodeIndex::fromBits(bytecodeIndexBits);
    1757 
    17581735    CodeBlock* codeBlock = callFrame->codeBlock();
    17591736    CodeBlock* optimizedReplacement = codeBlock->replacement();
     
    17641741    case JITType::DFGJIT:
    17651742    case JITType::FTLJIT: {
    1766         MacroAssemblerCodePtr<ExceptionHandlerPtrTag> entry = DFG::prepareCatchOSREntry(vm, callFrame, optimizedReplacement, bytecodeIndex);
     1743        MacroAssemblerCodePtr<ExceptionHandlerPtrTag> entry = DFG::prepareCatchOSREntry(vm, callFrame, codeBlock, optimizedReplacement, bytecodeIndex);
     1744        return entry.executableAddress<char*>();
     1745    }
     1746    default:
     1747        break;
     1748    }
     1749    return nullptr;
     1750}
     1751
     1752char* JIT_OPERATION operationTryOSREnterAtCatchAndValueProfile(VM* vmPointer, uint32_t bytecodeIndexBits)
     1753{
     1754    VM& vm = *vmPointer;
     1755    CallFrame* callFrame = DECLARE_CALL_FRAME(vm);
     1756    JITOperationPrologueCallFrameTracer tracer(vm, callFrame);
     1757    BytecodeIndex bytecodeIndex = BytecodeIndex::fromBits(bytecodeIndexBits);
     1758
     1759    CodeBlock* codeBlock = callFrame->codeBlock();
     1760    CodeBlock* optimizedReplacement = codeBlock->replacement();
     1761    if (UNLIKELY(!optimizedReplacement))
     1762        return nullptr;
     1763
     1764    switch (optimizedReplacement->jitType()) {
     1765    case JITType::DFGJIT:
     1766    case JITType::FTLJIT: {
     1767        MacroAssemblerCodePtr<ExceptionHandlerPtrTag> entry = DFG::prepareCatchOSREntry(vm, callFrame, codeBlock, optimizedReplacement, bytecodeIndex);
    17671768        return entry.executableAddress<char*>();
    17681769    }
Note: See TracChangeset for help on using the changeset viewer.