Changeset 250775 in webkit


Ignore:
Timestamp:
Oct 7, 2019 9:47:30 AM (5 years ago)
Author:
Matt Lewis
Message:

Unreviewed, rolling out r250750.

Reverting change as this broke interal test over the weekend.

Reverted changeset:

"Allow OSR exit to the LLInt"
https://bugs.webkit.org/show_bug.cgi?id=197993
https://trac.webkit.org/changeset/250750

Location:
trunk
Files:
2 added
2 deleted
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/JSTests/ChangeLog

    r250750 r250775  
     12019-10-07  Matt Lewis  <jlewis3@apple.com>
     2
     3        Unreviewed, rolling out r250750.
     4
     5        Reverting change as this broke interal test over the weekend.
     6
     7        Reverted changeset:
     8
     9        "Allow OSR exit to the LLInt"
     10        https://bugs.webkit.org/show_bug.cgi?id=197993
     11        https://trac.webkit.org/changeset/250750
     12
    1132019-10-04  Saam Barati  <sbarati@apple.com>
    214
  • trunk/Source/JavaScriptCore/ChangeLog

    r250752 r250775  
     12019-10-07  Matt Lewis  <jlewis3@apple.com>
     2
     3        Unreviewed, rolling out r250750.
     4
     5        Reverting change as this broke interal test over the weekend.
     6
     7        Reverted changeset:
     8
     9        "Allow OSR exit to the LLInt"
     10        https://bugs.webkit.org/show_bug.cgi?id=197993
     11        https://trac.webkit.org/changeset/250750
     12
    1132019-10-04  Ross Kirsling  <ross.kirsling@sony.com>
    214
  • trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r250750 r250775  
    183183                0F235BE217178E1C00690C7F /* FTLThunks.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BCC17178E1C00690C7F /* FTLThunks.h */; settings = {ATTRIBUTES = (Private, ); }; };
    184184                0F235BEC17178E7300690C7F /* DFGOSRExitBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BE817178E7300690C7F /* DFGOSRExitBase.h */; };
     185                0F235BEE17178E7300690C7F /* DFGOSRExitPreparation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BEA17178E7300690C7F /* DFGOSRExitPreparation.h */; };
    185186                0F24E54117EA9F5900ABB217 /* AssemblyHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F24E53C17EA9F5900ABB217 /* AssemblyHelpers.h */; settings = {ATTRIBUTES = (Private, ); }; };
    186187                0F24E54217EA9F5900ABB217 /* CCallHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F24E53D17EA9F5900ABB217 /* CCallHelpers.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    22962297                0F235BE717178E7300690C7F /* DFGOSRExitBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitBase.cpp; path = dfg/DFGOSRExitBase.cpp; sourceTree = "<group>"; };
    22972298                0F235BE817178E7300690C7F /* DFGOSRExitBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExitBase.h; path = dfg/DFGOSRExitBase.h; sourceTree = "<group>"; };
     2299                0F235BE917178E7300690C7F /* DFGOSRExitPreparation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGOSRExitPreparation.cpp; path = dfg/DFGOSRExitPreparation.cpp; sourceTree = "<group>"; };
     2300                0F235BEA17178E7300690C7F /* DFGOSRExitPreparation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGOSRExitPreparation.h; path = dfg/DFGOSRExitPreparation.h; sourceTree = "<group>"; };
    22982301                0F24E53B17EA9F5900ABB217 /* AssemblyHelpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AssemblyHelpers.cpp; sourceTree = "<group>"; };
    22992302                0F24E53C17EA9F5900ABB217 /* AssemblyHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AssemblyHelpers.h; sourceTree = "<group>"; };
     
    78707873                                0FEFC9A71681A3B000567F53 /* DFGOSRExitJumpPlaceholder.cpp */,
    78717874                                0FEFC9A81681A3B000567F53 /* DFGOSRExitJumpPlaceholder.h */,
     7875                                0F235BE917178E7300690C7F /* DFGOSRExitPreparation.cpp */,
     7876                                0F235BEA17178E7300690C7F /* DFGOSRExitPreparation.h */,
    78727877                                0F6237951AE45CA700D402EA /* DFGPhantomInsertionPhase.cpp */,
    78737878                                0F6237961AE45CA700D402EA /* DFGPhantomInsertionPhase.h */,
     
    92359240                                0F392C8A1B46188400844728 /* DFGOSRExitFuzz.h in Headers */,
    92369241                                0FEFC9AB1681A3B600567F53 /* DFGOSRExitJumpPlaceholder.h in Headers */,
     9242                                0F235BEE17178E7300690C7F /* DFGOSRExitPreparation.h in Headers */,
    92379243                                0F6237981AE45CA700D402EA /* DFGPhantomInsertionPhase.h in Headers */,
    92389244                                0FFFC95C14EF90AF00C72532 /* DFGPhase.h in Headers */,
  • trunk/Source/JavaScriptCore/Sources.txt

    r250750 r250775  
    383383dfg/DFGOSRExitFuzz.cpp
    384384dfg/DFGOSRExitJumpPlaceholder.cpp
     385dfg/DFGOSRExitPreparation.cpp
    385386dfg/DFGObjectAllocationSinkingPhase.cpp
    386387dfg/DFGObjectMaterializationData.cpp
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.h

    r250750 r250775  
    893893    }
    894894
    895     MetadataTable* metadataTable() { return m_metadata.get(); }
    896     const void* instructionsRawPointer() { return m_instructionsRawPointer; }
    897 
    898895protected:
    899896    void finalizeLLIntInlineCaches();
  • trunk/Source/JavaScriptCore/bytecode/InlineCallFrame.h

    r250750 r250775  
    241241inline CodeBlock* baselineCodeBlockForOriginAndBaselineCodeBlock(const CodeOrigin& codeOrigin, CodeBlock* baselineCodeBlock)
    242242{
    243     ASSERT(JITCode::isBaselineCode(baselineCodeBlock->jitType()));
     243    ASSERT(baselineCodeBlock->jitType() == JITType::BaselineJIT);
    244244    auto* inlineCallFrame = codeOrigin.inlineCallFrame();
    245245    if (inlineCallFrame)
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExit.cpp

    r250750 r250775  
    3535#include "DFGMayExit.h"
    3636#include "DFGOSRExitCompilerCommon.h"
     37#include "DFGOSRExitPreparation.h"
    3738#include "DFGOperations.h"
    3839#include "DFGSpeculativeJIT.h"
     
    372373        // exit ramp code.
    373374
     375        // Ensure we have baseline codeBlocks to OSR exit to.
     376        prepareCodeOriginForOSRExit(exec, exit.m_codeOrigin);
     377
    374378        CodeBlock* baselineCodeBlock = codeBlock->baselineAlternative();
    375         ASSERT(JITCode::isBaselineCode(baselineCodeBlock->jitType()));
     379        ASSERT(baselineCodeBlock->jitType() == JITType::BaselineJIT);
    376380
    377381        SpeculationRecovery* recovery = nullptr;
     
    403407
    404408        CodeBlock* codeBlockForExit = baselineCodeBlockForOriginAndBaselineCodeBlock(exit.m_codeOrigin, baselineCodeBlock);
    405         bool exitToLLInt = Options::forceOSRExitToLLInt() || codeBlockForExit->jitType() == JITType::InterpreterThunk;
    406         void* jumpTarget;
    407         if (exitToLLInt) {
    408             unsigned bytecodeOffset = exit.m_codeOrigin.bytecodeIndex();
    409             const Instruction& currentInstruction = *codeBlockForExit->instructions().at(bytecodeOffset).ptr();
    410             MacroAssemblerCodePtr<JSEntryPtrTag> destination = LLInt::getCodePtr<JSEntryPtrTag>(currentInstruction);
    411             jumpTarget = destination.executableAddress();   
    412         } else {
    413             const JITCodeMap& codeMap = codeBlockForExit->jitCodeMap();
    414             CodeLocationLabel<JSEntryPtrTag> codeLocation = codeMap.find(exit.m_codeOrigin.bytecodeIndex());
    415             ASSERT(codeLocation);
    416             jumpTarget = codeLocation.executableAddress();
    417         }
     409        const JITCodeMap& codeMap = codeBlockForExit->jitCodeMap();
     410        CodeLocationLabel<JSEntryPtrTag> codeLocation = codeMap.find(exit.m_codeOrigin.bytecodeIndex());
     411        ASSERT(codeLocation);
     412
     413        void* jumpTarget = codeLocation.executableAddress();
    418414
    419415        // Compute the value recoveries.
     
    423419        ptrdiff_t stackPointerOffset = -static_cast<ptrdiff_t>(codeBlock->jitCode()->dfgCommon()->requiredRegisterCountForExit) * sizeof(Register);
    424420
    425         exit.exitState = adoptRef(new OSRExitState(exit, codeBlock, baselineCodeBlock, operands, WTFMove(undefinedOperandSpans), recovery, stackPointerOffset, activeThreshold, adjustedThreshold, jumpTarget, arrayProfile, exitToLLInt));
     421        exit.exitState = adoptRef(new OSRExitState(exit, codeBlock, baselineCodeBlock, operands, WTFMove(undefinedOperandSpans), recovery, stackPointerOffset, activeThreshold, adjustedThreshold, jumpTarget, arrayProfile));
    426422
    427423        if (UNLIKELY(vm.m_perBytecodeProfiler && codeBlock->jitCode()->dfgCommon()->compilation)) {
     
    451447    OSRExitState& exitState = *exit.exitState.get();
    452448    CodeBlock* baselineCodeBlock = exitState.baselineCodeBlock;
    453     ASSERT(JITCode::isBaselineCode(baselineCodeBlock->jitType()));
     449    ASSERT(baselineCodeBlock->jitType() == JITType::BaselineJIT);
    454450
    455451    Operands<ValueRecovery>& operands = exitState.operands;
     
    762758    // in presence of inlined tail calls.
    763759    // https://bugs.webkit.org/show_bug.cgi?id=147511
    764     ASSERT(JITCode::isBaselineCode(outermostBaselineCodeBlock->jitType()));
     760    ASSERT(outermostBaselineCodeBlock->jitType() == JITType::BaselineJIT);
    765761    frame.setOperand<CodeBlock*>(CallFrameSlot::codeBlock, outermostBaselineCodeBlock);
    766762
     
    773769        void* callerFrame = cpu.fp();
    774770
    775         bool callerIsLLInt = false;
    776 
    777771        if (!trueCaller) {
    778772            ASSERT(inlineCallFrame->isTail());
     
    788782            CodeBlock* baselineCodeBlockForCaller = baselineCodeBlockForOriginAndBaselineCodeBlock(*trueCaller, outermostBaselineCodeBlock);
    789783            unsigned callBytecodeIndex = trueCaller->bytecodeIndex();
    790             void* jumpTarget = callerReturnPC(baselineCodeBlockForCaller, callBytecodeIndex, trueCallerCallKind, callerIsLLInt);
     784            MacroAssemblerCodePtr<JSInternalPtrTag> jumpTarget;
     785
     786            switch (trueCallerCallKind) {
     787            case InlineCallFrame::Call:
     788            case InlineCallFrame::Construct:
     789            case InlineCallFrame::CallVarargs:
     790            case InlineCallFrame::ConstructVarargs:
     791            case InlineCallFrame::TailCall:
     792            case InlineCallFrame::TailCallVarargs: {
     793                CallLinkInfo* callLinkInfo =
     794                    baselineCodeBlockForCaller->getCallLinkInfoForBytecodeIndex(callBytecodeIndex);
     795                RELEASE_ASSERT(callLinkInfo);
     796
     797                jumpTarget = callLinkInfo->callReturnLocation();
     798                break;
     799            }
     800
     801            case InlineCallFrame::GetterCall:
     802            case InlineCallFrame::SetterCall: {
     803                StructureStubInfo* stubInfo =
     804                    baselineCodeBlockForCaller->findStubInfo(CodeOrigin(callBytecodeIndex));
     805                RELEASE_ASSERT(stubInfo);
     806
     807                jumpTarget = stubInfo->doneLocation();
     808                break;
     809            }
     810
     811            default:
     812                RELEASE_ASSERT_NOT_REACHED();
     813            }
    791814
    792815            if (trueCaller->inlineCallFrame())
    793816                callerFrame = cpu.fp<uint8_t*>() + trueCaller->inlineCallFrame()->stackOffset * sizeof(EncodedJSValue);
    794817
     818            void* targetAddress = jumpTarget.executableAddress();
    795819#if CPU(ARM64E)
    796820            void* newEntrySP = cpu.fp<uint8_t*>() + inlineCallFrame->returnPCOffset() + sizeof(void*);
    797             jumpTarget = tagCodePtr(jumpTarget, bitwise_cast<PtrTag>(newEntrySP));
    798 #endif
    799             frame.set<void*>(inlineCallFrame->returnPCOffset(), jumpTarget);
     821            targetAddress = retagCodePtr(targetAddress, JSInternalPtrTag, bitwise_cast<PtrTag>(newEntrySP));
     822#endif
     823            frame.set<void*>(inlineCallFrame->returnPCOffset(), targetAddress);
    800824        }
    801825
     
    806830        // copy the prior contents of the tag registers already saved for the outer frame to this frame.
    807831        saveOrCopyCalleeSavesFor(context, baselineCodeBlock, VirtualRegister(inlineCallFrame->stackOffset), !trueCaller);
    808 
    809         if (callerIsLLInt) {
    810             CodeBlock* baselineCodeBlockForCaller = baselineCodeBlockForOriginAndBaselineCodeBlock(*trueCaller, outermostBaselineCodeBlock);
    811             frame.set<const void*>(calleeSaveSlot(inlineCallFrame, baselineCodeBlock, LLInt::Registers::metadataTableGPR).offset, baselineCodeBlockForCaller->metadataTable());
    812 #if USE(JSVALUE64)
    813             frame.set<const void*>(calleeSaveSlot(inlineCallFrame, baselineCodeBlock, LLInt::Registers::pbGPR).offset, baselineCodeBlockForCaller->instructionsRawPointer());
    814 #endif
    815         }
    816832
    817833        if (!inlineCallFrame->isVarargs())
     
    879895
    880896    vm.topCallFrame = context.fp<ExecState*>();
    881 
    882     if (exitState->isJumpToLLInt) {
    883         CodeBlock* codeBlockForExit = baselineCodeBlockForOriginAndBaselineCodeBlock(exit.m_codeOrigin, baselineCodeBlock);
    884         unsigned bytecodeOffset = exit.m_codeOrigin.bytecodeIndex();
    885         const Instruction& currentInstruction = *codeBlockForExit->instructions().at(bytecodeOffset).ptr();
    886 
    887         context.gpr(LLInt::Registers::metadataTableGPR) = bitwise_cast<uintptr_t>(codeBlockForExit->metadataTable());
    888 #if USE(JSVALUE64)
    889         context.gpr(LLInt::Registers::pbGPR) = bitwise_cast<uintptr_t>(codeBlockForExit->instructionsRawPointer());
    890         context.gpr(LLInt::Registers::pcGPR) = static_cast<uintptr_t>(exit.m_codeOrigin.bytecodeIndex());
    891 #else
    892         context.gpr(LLInt::Registers::pcGPR) = bitwise_cast<uintptr_t>(&currentInstruction);
    893 #endif
    894 
    895         if (exit.isExceptionHandler())
    896             vm.targetInterpreterPCForThrow = &currentInstruction;
    897     }
    898 
    899897    context.pc() = untagCodePtr<JSEntryPtrTag>(jumpTarget);
    900898}
     
    10551053    EXCEPTION_ASSERT_UNUSED(scope, !!scope.exception() || !exit.isExceptionHandler());
    10561054   
     1055    prepareCodeOriginForOSRExit(exec, exit.m_codeOrigin);
     1056
    10571057    // Compute the value recoveries.
    10581058    Operands<ValueRecovery> operands;
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExit.h

    r250750 r250775  
    107107
    108108struct OSRExitState : RefCounted<OSRExitState> {
    109     OSRExitState(OSRExitBase& exit, CodeBlock* codeBlock, CodeBlock* baselineCodeBlock, Operands<ValueRecovery>& operands, Vector<UndefinedOperandSpan>&& undefinedOperandSpans, SpeculationRecovery* recovery, ptrdiff_t stackPointerOffset, int32_t activeThreshold, double memoryUsageAdjustedThreshold, void* jumpTarget, ArrayProfile* arrayProfile, bool isJumpToLLInt)
     109    OSRExitState(OSRExitBase& exit, CodeBlock* codeBlock, CodeBlock* baselineCodeBlock, Operands<ValueRecovery>& operands, Vector<UndefinedOperandSpan>&& undefinedOperandSpans, SpeculationRecovery* recovery, ptrdiff_t stackPointerOffset, int32_t activeThreshold, double memoryUsageAdjustedThreshold, void* jumpTarget, ArrayProfile* arrayProfile)
    110110        : exit(exit)
    111111        , codeBlock(codeBlock)
     
    119119        , jumpTarget(jumpTarget)
    120120        , arrayProfile(arrayProfile)
    121         , isJumpToLLInt(isJumpToLLInt)
    122121    { }
    123122
     
    133132    void* jumpTarget;
    134133    ArrayProfile* arrayProfile;
    135     bool isJumpToLLInt;
    136134
    137135    ExtraInitializationLevel extraInitializationLevel;
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp

    r250750 r250775  
    3434#include "JSCJSValueInlines.h"
    3535#include "JSCInlines.h"
    36 #include "LLIntData.h"
    3736#include "StructureStubInfo.h"
    3837
    3938namespace JSC { namespace DFG {
    40 
    41 // These are the LLInt OSR exit return points.
    42 extern "C" void op_call_return_location_narrow();
    43 extern "C" void op_call_return_location_wide_16();
    44 extern "C" void op_call_return_location_wide_32();
    45 
    46 extern "C" void op_construct_return_location_narrow();
    47 extern "C" void op_construct_return_location_wide_16();
    48 extern "C" void op_construct_return_location_wide_32();
    49 
    50 extern "C" void op_call_varargs_slow_return_location_narrow();
    51 extern "C" void op_call_varargs_slow_return_location_wide_16();
    52 extern "C" void op_call_varargs_slow_return_location_wide_32();
    53 
    54 extern "C" void op_construct_varargs_slow_return_location_narrow();
    55 extern "C" void op_construct_varargs_slow_return_location_wide_16();
    56 extern "C" void op_construct_varargs_slow_return_location_wide_32();
    57 
    58 extern "C" void op_get_by_id_return_location_narrow();
    59 extern "C" void op_get_by_id_return_location_wide_16();
    60 extern "C" void op_get_by_id_return_location_wide_32();
    61 
    62 extern "C" void op_get_by_val_return_location_narrow();
    63 extern "C" void op_get_by_val_return_location_wide_16();
    64 extern "C" void op_get_by_val_return_location_wide_32();
    65 
    66 extern "C" void op_put_by_id_return_location_narrow();
    67 extern "C" void op_put_by_id_return_location_wide_16();
    68 extern "C" void op_put_by_id_return_location_wide_32();
    69 
    70 extern "C" void op_put_by_val_return_location_narrow();
    71 extern "C" void op_put_by_val_return_location_wide_16();
    72 extern "C" void op_put_by_val_return_location_wide_32();
    7339
    7440void handleExitCounts(CCallHelpers& jit, const OSRExitBase& exit)
     
    171137}
    172138
    173 void* callerReturnPC(CodeBlock* baselineCodeBlockForCaller, unsigned callBytecodeIndex, InlineCallFrame::Kind trueCallerCallKind, bool& callerIsLLInt)
    174 {
    175     callerIsLLInt = Options::forceOSRExitToLLInt() || baselineCodeBlockForCaller->jitType() == JITType::InterpreterThunk;
    176 
    177     void* jumpTarget;
    178 
    179     if (callerIsLLInt) {
    180         const Instruction& callInstruction = *baselineCodeBlockForCaller->instructions().at(callBytecodeIndex).ptr();
    181 
    182 #define LLINT_RETURN_LOCATION(name) FunctionPtr<NoPtrTag>(callInstruction.isWide16() ? name##_return_location_wide_16 : (callInstruction.isWide32() ? name##_return_location_wide_32 : name##_return_location_narrow)).executableAddress()
    183 
    184         switch (trueCallerCallKind) {
    185         case InlineCallFrame::Call:
    186             jumpTarget = LLINT_RETURN_LOCATION(op_call);
    187             break;
    188         case InlineCallFrame::Construct:
    189             jumpTarget = LLINT_RETURN_LOCATION(op_construct);
    190             break;
    191         case InlineCallFrame::CallVarargs:
    192             jumpTarget = LLINT_RETURN_LOCATION(op_call_varargs_slow);
    193             break;
    194         case InlineCallFrame::ConstructVarargs:
    195             jumpTarget = LLINT_RETURN_LOCATION(op_construct_varargs_slow);
    196             break;
    197         case InlineCallFrame::GetterCall: {
    198             if (callInstruction.opcodeID() == op_get_by_id)
    199                 jumpTarget = LLINT_RETURN_LOCATION(op_get_by_id);
    200             else if (callInstruction.opcodeID() == op_get_by_val)
    201                 jumpTarget = LLINT_RETURN_LOCATION(op_get_by_val);
    202             else
    203                 RELEASE_ASSERT_NOT_REACHED();
    204             break;
    205         }
    206         case InlineCallFrame::SetterCall: {
    207             if (callInstruction.opcodeID() == op_put_by_id)
    208                 jumpTarget = LLINT_RETURN_LOCATION(op_put_by_id);
    209             else if (callInstruction.opcodeID() == op_put_by_val)
    210                 jumpTarget = LLINT_RETURN_LOCATION(op_put_by_val);
    211             else
    212                 RELEASE_ASSERT_NOT_REACHED();
    213             break;
    214         }
    215         default:
    216             RELEASE_ASSERT_NOT_REACHED();
    217         }
    218 
    219 #undef LLINT_RETURN_LOCATION
    220 
    221     } else {
    222         switch (trueCallerCallKind) {
    223         case InlineCallFrame::Call:
    224         case InlineCallFrame::Construct:
    225         case InlineCallFrame::CallVarargs:
    226         case InlineCallFrame::ConstructVarargs: {
    227             CallLinkInfo* callLinkInfo =
    228                 baselineCodeBlockForCaller->getCallLinkInfoForBytecodeIndex(callBytecodeIndex);
    229             RELEASE_ASSERT(callLinkInfo);
    230 
    231             jumpTarget = callLinkInfo->callReturnLocation().untaggedExecutableAddress();
    232             break;
    233         }
    234 
    235         case InlineCallFrame::GetterCall:
    236         case InlineCallFrame::SetterCall: {
    237             StructureStubInfo* stubInfo =
    238                 baselineCodeBlockForCaller->findStubInfo(CodeOrigin(callBytecodeIndex));
    239             RELEASE_ASSERT(stubInfo);
    240 
    241             jumpTarget = stubInfo->doneLocation().untaggedExecutableAddress();
    242             break;
    243         }
    244 
    245         default:
    246             RELEASE_ASSERT_NOT_REACHED();
    247         }
    248     }
    249 
    250     return jumpTarget;
    251 }
    252 
    253 CCallHelpers::Address calleeSaveSlot(InlineCallFrame* inlineCallFrame, CodeBlock* baselineCodeBlock, GPRReg calleeSave)
    254 {
    255     const RegisterAtOffsetList* calleeSaves = baselineCodeBlock->calleeSaveRegisters();
    256     for (unsigned i = 0; i < calleeSaves->size(); i++) {
    257         RegisterAtOffset entry = calleeSaves->at(i);
    258         if (entry.reg() != calleeSave)
    259             continue;
    260         return CCallHelpers::Address(CCallHelpers::framePointerRegister, static_cast<VirtualRegister>(inlineCallFrame->stackOffset).offsetInBytes() + entry.offset());
    261     }
    262 
    263     RELEASE_ASSERT_NOT_REACHED();
    264     return CCallHelpers::Address(CCallHelpers::framePointerRegister);
    265 }
    266 
    267139void reifyInlinedCallFrames(CCallHelpers& jit, const OSRExitBase& exit)
    268140{
     
    270142    // in presence of inlined tail calls.
    271143    // https://bugs.webkit.org/show_bug.cgi?id=147511
    272     ASSERT(JITCode::isBaselineCode(jit.baselineCodeBlock()->jitType()));
     144    ASSERT(jit.baselineCodeBlock()->jitType() == JITType::BaselineJIT);
    273145    jit.storePtr(AssemblyHelpers::TrustedImmPtr(jit.baselineCodeBlock()), AssemblyHelpers::addressFor((VirtualRegister)CallFrameSlot::codeBlock));
    274146
     
    280152        CodeOrigin* trueCaller = inlineCallFrame->getCallerSkippingTailCalls(&trueCallerCallKind);
    281153        GPRReg callerFrameGPR = GPRInfo::callFrameRegister;
    282 
    283         bool callerIsLLInt = false;
    284154
    285155        if (!trueCaller) {
     
    298168            CodeBlock* baselineCodeBlockForCaller = jit.baselineCodeBlockFor(*trueCaller);
    299169            unsigned callBytecodeIndex = trueCaller->bytecodeIndex();
    300             void* jumpTarget = callerReturnPC(baselineCodeBlockForCaller, callBytecodeIndex, trueCallerCallKind, callerIsLLInt);
     170            void* jumpTarget = nullptr;
     171
     172            switch (trueCallerCallKind) {
     173            case InlineCallFrame::Call:
     174            case InlineCallFrame::Construct:
     175            case InlineCallFrame::CallVarargs:
     176            case InlineCallFrame::ConstructVarargs:
     177            case InlineCallFrame::TailCall:
     178            case InlineCallFrame::TailCallVarargs: {
     179                CallLinkInfo* callLinkInfo =
     180                    baselineCodeBlockForCaller->getCallLinkInfoForBytecodeIndex(callBytecodeIndex);
     181                RELEASE_ASSERT(callLinkInfo);
     182
     183                jumpTarget = callLinkInfo->callReturnLocation().untaggedExecutableAddress();
     184                break;
     185            }
     186
     187            case InlineCallFrame::GetterCall:
     188            case InlineCallFrame::SetterCall: {
     189                StructureStubInfo* stubInfo =
     190                    baselineCodeBlockForCaller->findStubInfo(CodeOrigin(callBytecodeIndex));
     191                RELEASE_ASSERT(stubInfo);
     192
     193                jumpTarget = stubInfo->doneLocation().untaggedExecutableAddress();
     194                break;
     195            }
     196
     197            default:
     198                RELEASE_ASSERT_NOT_REACHED();
     199            }
    301200
    302201            if (trueCaller->inlineCallFrame()) {
     
    328227            trueCaller ? AssemblyHelpers::UseExistingTagRegisterContents : AssemblyHelpers::CopyBaselineCalleeSavedRegistersFromBaseFrame,
    329228            GPRInfo::regT2);
    330 
    331         if (callerIsLLInt) {
    332             CodeBlock* baselineCodeBlockForCaller = jit.baselineCodeBlockFor(*trueCaller);
    333             jit.storePtr(CCallHelpers::TrustedImmPtr(baselineCodeBlockForCaller->metadataTable()), calleeSaveSlot(inlineCallFrame, baselineCodeBlock, LLInt::Registers::metadataTableGPR));
    334 #if USE(JSVALUE64)
    335             jit.storePtr(CCallHelpers::TrustedImmPtr(baselineCodeBlockForCaller->instructionsRawPointer()), calleeSaveSlot(inlineCallFrame, baselineCodeBlock, LLInt::Registers::pbGPR));
    336 #endif
    337         }
    338229
    339230        if (!inlineCallFrame->isVarargs())
     
    411302    CodeBlock* codeBlockForExit = jit.baselineCodeBlockFor(exit.m_codeOrigin);
    412303    ASSERT(codeBlockForExit == codeBlockForExit->baselineVersion());
    413     ASSERT(JITCode::isBaselineCode(codeBlockForExit->jitType()));
    414 
    415     void* jumpTarget;
    416     bool exitToLLInt = Options::forceOSRExitToLLInt() || codeBlockForExit->jitType() == JITType::InterpreterThunk;
    417     if (exitToLLInt) {
    418         unsigned bytecodeOffset = exit.m_codeOrigin.bytecodeIndex();
    419         const Instruction& currentInstruction = *codeBlockForExit->instructions().at(bytecodeOffset).ptr();
    420         MacroAssemblerCodePtr<JSEntryPtrTag> destination = LLInt::getCodePtr<JSEntryPtrTag>(currentInstruction);
    421 
    422         if (exit.isExceptionHandler()) {
    423             jit.move(CCallHelpers::TrustedImmPtr(&currentInstruction), GPRInfo::regT2);
    424             jit.storePtr(GPRInfo::regT2, &vm.targetInterpreterPCForThrow);
    425         }
    426 
    427         jit.move(CCallHelpers::TrustedImmPtr(codeBlockForExit->metadataTable()), LLInt::Registers::metadataTableGPR);
    428 #if USE(JSVALUE64)
    429         jit.move(CCallHelpers::TrustedImmPtr(codeBlockForExit->instructionsRawPointer()), LLInt::Registers::pbGPR);
    430         jit.move(CCallHelpers::TrustedImm32(bytecodeOffset), LLInt::Registers::pcGPR);
    431 #else
    432         jit.move(CCallHelpers::TrustedImmPtr(&currentInstruction), LLInt::Registers::pcGPR);
    433 #endif
    434         jumpTarget = destination.retagged<OSRExitPtrTag>().executableAddress();
    435     } else {
    436         CodeLocationLabel<JSEntryPtrTag> codeLocation = codeBlockForExit->jitCodeMap().find(exit.m_codeOrigin.bytecodeIndex());
    437         ASSERT(codeLocation);
    438 
    439         jumpTarget = codeLocation.retagged<OSRExitPtrTag>().executableAddress();
    440     }
    441 
     304    ASSERT(codeBlockForExit->jitType() == JITType::BaselineJIT);
     305    CodeLocationLabel<JSEntryPtrTag> codeLocation = codeBlockForExit->jitCodeMap().find(exit.m_codeOrigin.bytecodeIndex());
     306    ASSERT(codeLocation);
     307
     308    void* jumpTarget = codeLocation.retagged<OSRExitPtrTag>().executableAddress();
    442309    jit.addPtr(AssemblyHelpers::TrustedImm32(JIT::stackPointerOffsetFor(codeBlockForExit) * sizeof(Register)), GPRInfo::callFrameRegister, AssemblyHelpers::stackPointerRegister);
    443310    if (exit.isExceptionHandler()) {
  • trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.h

    r250750 r250775  
    4040void reifyInlinedCallFrames(CCallHelpers&, const OSRExitBase&);
    4141void adjustAndJumpToTarget(VM&, CCallHelpers&, const OSRExitBase&);
    42 void* callerReturnPC(CodeBlock* baselineCodeBlockForCaller, unsigned callBytecodeOffset, InlineCallFrame::Kind callerKind, bool& callerIsLLInt);
    43 CCallHelpers::Address calleeSaveSlot(InlineCallFrame*, CodeBlock* baselineCodeBlock, GPRReg calleeSave);
    4442
    4543template <typename JITCodeType>
  • trunk/Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp

    r250750 r250775  
    3131#include "BytecodeStructs.h"
    3232#include "DFGOSRExitCompilerCommon.h"
     33#include "DFGOSRExitPreparation.h"
    3334#include "FTLExitArgumentForOperand.h"
    3435#include "FTLJITCode.h"
     
    544545    }
    545546
     547    prepareCodeOriginForOSRExit(exec, exit.m_codeOrigin);
     548
    546549    compileStub(exitID, jitCode, exit, &vm, codeBlock);
    547550
  • trunk/Source/JavaScriptCore/llint/LLIntData.h

    r250750 r250775  
    2626#pragma once
    2727
    28 #include "GPRInfo.h"
    29 #include "Instruction.h"
    3028#include "JSCJSValue.h"
    3129#include "MacroAssemblerCodeRef.h"
     
    3533
    3634class VM;
     35struct Instruction;
    3736
    3837#if ENABLE(C_LOOP)
     
    147146
    148147template<PtrTag tag>
    149 ALWAYS_INLINE MacroAssemblerCodePtr<tag> getCodePtr(const Instruction& instruction)
    150 {
    151     if (instruction.isWide16())
    152         return getWide16CodePtr<tag>(instruction.opcodeID());
    153     if (instruction.isWide32())
    154         return getWide32CodePtr<tag>(instruction.opcodeID());
    155     return getCodePtr<tag>(instruction.opcodeID());
    156 }
    157 
    158 template<PtrTag tag>
    159148ALWAYS_INLINE MacroAssemblerCodeRef<tag> getCodeRef(OpcodeID opcodeID)
    160149{
     
    196185}
    197186
    198 #if ENABLE(JIT)
    199 struct Registers {
    200     static const GPRReg pcGPR = GPRInfo::regT4;
    201 
    202 #if CPU(X86_64) && !OS(WINDOWS)
    203     static const GPRReg metadataTableGPR = GPRInfo::regCS1;
    204     static const GPRReg pbGPR = GPRInfo::regCS2;
    205 #elif CPU(X86_64) && OS(WINDOWS)
    206     static const GPRReg metadataTableGPR = GPRInfo::regCS3;
    207     static const GPRReg pbGPR = GPRInfo::regCS4;
    208 #elif CPU(ARM64)
    209     static const GPRReg metadataTableGPR = GPRInfo::regCS6;
    210     static const GPRReg pbGPR = GPRInfo::regCS7;
    211 #elif CPU(MIPS) || CPU(ARM_THUMB2)
    212     static const GPRReg metadataTableGPR = GPRInfo::regCS0;
    213 #endif
    214 };
    215 #endif
    216 
    217187} } // namespace JSC::LLInt
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm

    r250750 r250775  
    930930end
    931931
    932 macro defineOSRExitReturnLabel(opcodeName, size)
    933     macro defineNarrow()
    934         global _%opcodeName%_return_location_narrow
    935         _%opcodeName%_return_location_narrow:
    936     end
    937 
    938     macro defineWide16()
    939         global _%opcodeName%_return_location_wide_16
    940         _%opcodeName%_return_location_wide_16:
    941     end
    942 
    943     macro defineWide32()
    944         global _%opcodeName%_return_location_wide_32
    945         _%opcodeName%_return_location_wide_32:
    946     end
    947 
    948     size(defineNarrow, defineWide16, defineWide32, macro (f) f() end)
    949 end
    950 
    951 macro callTargetFunction(opcodeName, size, opcodeStruct, dispatch, callee, callPtrTag)
     932macro callTargetFunction(size, opcodeStruct, dispatch, callee, callPtrTag)
    952933    if C_LOOP or C_LOOP_WIN
    953934        cloopCallJSFunction callee
     
    955936        call callee, callPtrTag
    956937    end
    957 
    958     defineOSRExitReturnLabel(opcodeName, size)
    959938    restoreStackPointerAfterCall()
    960939    dispatchAfterCall(size, opcodeStruct, dispatch)
     
    10261005end
    10271006
    1028 macro slowPathForCall(opcodeName, size, opcodeStruct, dispatch, slowPath, prepareCall)
     1007macro slowPathForCall(size, opcodeStruct, dispatch, slowPath, prepareCall)
    10291008    callCallSlowPath(
    10301009        slowPath,
     
    10351014            prepareCall(callee, t2, t3, t4, SlowPathPtrTag)
    10361015        .dontUpdateSP:
    1037             callTargetFunction(%opcodeName%_slow, size, opcodeStruct, dispatch, callee, SlowPathPtrTag)
     1016            callTargetFunction(size, opcodeStruct, dispatch, callee, SlowPathPtrTag)
    10381017        end)
    1039 end
    1040 
    1041 macro getterSetterOSRExitReturnPoint(opName, size)
    1042     crash() # We don't reach this in straight line code. We only reach it via returning to the code below when reconstructing stack frames during OSR exit.
    1043 
    1044     defineOSRExitReturnLabel(opName, size)
    1045 
    1046     restoreStackPointerAfterCall()
    1047     loadi ArgumentCount + TagOffset[cfr], PC
    10481018end
    10491019
     
    17721742
    17731743
    1774 macro doCallVarargs(opcodeName, size, opcodeStruct, dispatch, frameSlowPath, slowPath, prepareCall)
     1744macro doCallVarargs(size, opcodeStruct, dispatch, frameSlowPath, slowPath, prepareCall)
    17751745    callSlowPath(frameSlowPath)
    17761746    branchIfException(_llint_throw_from_slow_path_trampoline)
     
    17871757        end
    17881758    end
    1789     slowPathForCall(opcodeName, size, opcodeStruct, dispatch, slowPath, prepareCall)
     1759    slowPathForCall(size, opcodeStruct, dispatch, slowPath, prepareCall)
    17901760end
    17911761
    17921762
    17931763llintOp(op_call_varargs, OpCallVarargs, macro (size, get, dispatch)
    1794     doCallVarargs(op_call_varargs, size, OpCallVarargs, dispatch, _llint_slow_path_size_frame_for_varargs, _llint_slow_path_call_varargs, prepareForRegularCall)
     1764    doCallVarargs(size, OpCallVarargs, dispatch, _llint_slow_path_size_frame_for_varargs, _llint_slow_path_call_varargs, prepareForRegularCall)
    17951765end)
    17961766
     
    17991769    # We lie and perform the tail call instead of preparing it since we can't
    18001770    # prepare the frame for a call opcode
    1801     doCallVarargs(op_tail_call_varargs, size, OpTailCallVarargs, dispatch, _llint_slow_path_size_frame_for_varargs, _llint_slow_path_tail_call_varargs, prepareForTailCall)
     1771    doCallVarargs(size, OpTailCallVarargs, dispatch, _llint_slow_path_size_frame_for_varargs, _llint_slow_path_tail_call_varargs, prepareForTailCall)
    18021772end)
    18031773
     
    18071777    # We lie and perform the tail call instead of preparing it since we can't
    18081778    # prepare the frame for a call opcode
    1809     doCallVarargs(op_tail_call_forward_arguments, size, OpTailCallForwardArguments, dispatch, _llint_slow_path_size_frame_for_forward_arguments, _llint_slow_path_tail_call_forward_arguments, prepareForTailCall)
     1779    doCallVarargs(size, OpTailCallForwardArguments, dispatch, _llint_slow_path_size_frame_for_forward_arguments, _llint_slow_path_tail_call_forward_arguments, prepareForTailCall)
    18101780end)
    18111781
    18121782
    18131783llintOp(op_construct_varargs, OpConstructVarargs, macro (size, get, dispatch)
    1814     doCallVarargs(op_construct_varargs, size, OpConstructVarargs, dispatch, _llint_slow_path_size_frame_for_varargs, _llint_slow_path_construct_varargs, prepareForRegularCall)
     1784    doCallVarargs(size, OpConstructVarargs, dispatch, _llint_slow_path_size_frame_for_varargs, _llint_slow_path_construct_varargs, prepareForRegularCall)
    18151785end)
    18161786
     
    18511821_llint_op_call_eval:
    18521822    slowPathForCall(
    1853         op_call_eval_narrow,
    18541823        narrow,
    18551824        OpCallEval,
     
    18601829_llint_op_call_eval_wide16:
    18611830    slowPathForCall(
    1862         op_call_eval_wide16,
    18631831        wide16,
    18641832        OpCallEval,
     
    18691837_llint_op_call_eval_wide32:
    18701838    slowPathForCall(
    1871         op_call_eval_wide32,
    18721839        wide32,
    18731840        OpCallEval,
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm

    r250750 r250775  
    13991399    callSlowPath(_llint_slow_path_get_by_id)
    14001400    dispatch()
    1401 
    1402 # osr return point
    1403     getterSetterOSRExitReturnPoint(op_get_by_id, size)
    1404     metadata(t2, t3)
    1405     valueProfile(OpGetById, t2, r1, r0)
    1406     return(r1, r0)
    1407 
    14081401end)
    14091402
     
    14681461    callSlowPath(_llint_slow_path_put_by_id)
    14691462    dispatch()
    1470 
    1471 # osr return point
    1472     getterSetterOSRExitReturnPoint(op_put_by_id, size)
    1473     dispatch()
    1474 
    14751463end)
    14761464
     
    15241512    callSlowPath(_llint_slow_path_get_by_val)
    15251513    dispatch()
    1526 
    1527 # osr return point
    1528     getterSetterOSRExitReturnPoint(op_get_by_val, size)
    1529     metadata(t2, t3)
    1530     valueProfile(OpGetByVal, t2, r1, r0)
    1531     return(r1, r0)
    1532 
    1533 end)
    1534 
    1535 
    1536 macro putByValOp(opcodeName, opcodeStruct, osrExitPoint)
     1514end)
     1515
     1516
     1517macro putByValOp(opcodeName, opcodeStruct)
    15371518    llintOpWithMetadata(op_%opcodeName%, opcodeStruct, macro (size, get, dispatch, metadata, return)
    15381519        macro contiguousPutByVal(storeCallback)
     
    16221603        callSlowPath(_llint_slow_path_%opcodeName%)
    16231604        dispatch()
    1624 
    1625     .osrExitPoint:
    1626         osrExitPoint(size, dispatch)
    16271605    end)
    16281606end
    16291607
    16301608
    1631 putByValOp(put_by_val, OpPutByVal, macro (size, dispatch)
    1632     # osr return point
    1633     getterSetterOSRExitReturnPoint(op_put_by_val, size)
    1634     dispatch()
    1635 end)
    1636 
    1637 putByValOp(put_by_val_direct, OpPutByValDirect, macro (a, b) end)
     1609putByValOp(put_by_val, OpPutByVal)
     1610
     1611putByValOp(put_by_val_direct, OpPutByValDirect)
    16381612
    16391613
     
    19021876        move t3, sp
    19031877        prepareCall(%opcodeStruct%::Metadata::m_callLinkInfo.m_machineCodeTarget[t5], t2, t3, t4, JSEntryPtrTag)
    1904         callTargetFunction(opcodeName, size, opcodeStruct, dispatch, %opcodeStruct%::Metadata::m_callLinkInfo.m_machineCodeTarget[t5], JSEntryPtrTag)
     1878        callTargetFunction(size, opcodeStruct, dispatch, %opcodeStruct%::Metadata::m_callLinkInfo.m_machineCodeTarget[t5], JSEntryPtrTag)
    19051879
    19061880    .opCallSlow:
    1907         slowPathForCall(opcodeName, size, opcodeStruct, dispatch, slowPath, prepareCall)
     1881        slowPathForCall(size, opcodeStruct, dispatch, slowPath, prepareCall)
    19081882    end)
    19091883end
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm

    r250750 r250775  
    13261326end)
    13271327
     1328
    13281329llintOpWithMetadata(op_get_by_id, OpGetById, macro (size, get, dispatch, metadata, return)
    13291330    metadata(t2, t1)
     
    13761377    callSlowPath(_llint_slow_path_get_by_id)
    13771378    dispatch()
    1378 
    1379 # osr return point
    1380     getterSetterOSRExitReturnPoint(op_get_by_id, size)
    1381     metadata(t2, t3)
    1382     valueProfile(OpGetById, t2, r0)
    1383     return(r0)
    1384 
    13851379end)
    13861380
     
    14551449    callSlowPath(_llint_slow_path_put_by_id)
    14561450    dispatch()
    1457 
    1458 # osr return point
    1459     getterSetterOSRExitReturnPoint(op_put_by_id, size)
    1460     dispatch()
    1461 
    14621451end)
    14631452
     
    16311620    callSlowPath(_llint_slow_path_get_by_val)
    16321621    dispatch()
    1633 
    1634 # osr return point
    1635     getterSetterOSRExitReturnPoint(op_get_by_val, size)
    1636     metadata(t5, t2)
    1637     valueProfile(OpGetByVal, t5, r0)
    1638     return(r0)
    1639 
    1640 end)
    1641 
    1642 
    1643 macro putByValOp(opcodeName, opcodeStruct, osrExitPoint)
     1622end)
     1623
     1624
     1625macro putByValOp(opcodeName, opcodeStruct)
    16441626    llintOpWithMetadata(op_%opcodeName%, opcodeStruct, macro (size, get, dispatch, metadata, return)
    16451627        macro contiguousPutByVal(storeCallback)
     
    17291711        callSlowPath(_llint_slow_path_%opcodeName%)
    17301712        dispatch()
    1731 
    1732         osrExitPoint(size, dispatch)
    1733        
    17341713    end)
    17351714end
    17361715
    1737 putByValOp(put_by_val, OpPutByVal, macro (size, dispatch)
    1738     # osr return point
    1739     getterSetterOSRExitReturnPoint(op_put_by_val, size)
    1740     dispatch()
    1741 end)
    1742 
    1743 putByValOp(put_by_val_direct, OpPutByValDirect, macro (a, b) end)
     1716putByValOp(put_by_val, OpPutByVal)
     1717
     1718putByValOp(put_by_val_direct, OpPutByValDirect)
    17441719
    17451720
     
    20302005        move t3, sp
    20312006        prepareCall(%opcodeStruct%::Metadata::m_callLinkInfo.m_machineCodeTarget[t5], t2, t3, t4, JSEntryPtrTag)
    2032         callTargetFunction(opcodeName, size, opcodeStruct, dispatch, %opcodeStruct%::Metadata::m_callLinkInfo.m_machineCodeTarget[t5], JSEntryPtrTag)
     2007        callTargetFunction(size, opcodeStruct, dispatch, %opcodeStruct%::Metadata::m_callLinkInfo.m_machineCodeTarget[t5], JSEntryPtrTag)
    20332008
    20342009    .opCallSlow:
    2035         slowPathForCall(opcodeName, size, opcodeStruct, dispatch, slowPath, prepareCall)
     2010        slowPathForCall(size, opcodeStruct, dispatch, slowPath, prepareCall)
    20362011    end)
    20372012end
  • trunk/Source/JavaScriptCore/offlineasm/asm.rb

    r250750 r250775  
    215215    def putsLabel(labelName, isGlobal)
    216216        raise unless @state == :asm
    217         unless isGlobal
    218             @deferredNextLabelActions.each {
    219                 | action |
    220                 action.call()
    221             }
    222         end
     217        @deferredNextLabelActions.each {
     218            | action |
     219            action.call()
     220        }
    223221        @deferredNextLabelActions = []
    224222        @numGlobalLabels += 1
     
    404402            lowLevelAST.validate
    405403            emitCodeInConfiguration(concreteSettings, lowLevelAST, backend) {
    406                 $currentSettings = concreteSettings
     404                 $currentSettings = concreteSettings
    407405                $asm.inAsm {
    408406                    lowLevelAST.lower(backend)
  • trunk/Source/JavaScriptCore/offlineasm/transform.rb

    r250750 r250775  
    260260                end
    261261            }
    262             result = Label.forName(codeOrigin, name, @definedInFile)
    263             result.setGlobal() if @global
    264             result
     262            Label.forName(codeOrigin, name, @definedInFile)
    265263        else
    266264            self
     
    275273                mapping[var].name
    276274            }
    277             result = Label.forName(codeOrigin, name, @definedInFile)
    278             result.setGlobal() if @global
    279             result
     275            Label.forName(codeOrigin, name, @definedInFile)
    280276        else
    281277            self
  • trunk/Source/JavaScriptCore/runtime/OptionsList.h

    r250750 r250775  
    465465    v(Double, dumpJITMemoryFlushInterval, 10, Restricted, "Maximum time in between flushes of the JIT memory dump in seconds.") \
    466466    v(Bool, useUnlinkedCodeBlockJettisoning, false, Normal, "If true, UnlinkedCodeBlock can be jettisoned.") \
    467     v(Bool, forceOSRExitToLLInt, false, Normal, "If true, we always exit to the LLInt. If false, we exit to whatever is most convenient.") \
    468467
    469468enum OptionEquivalence {
  • trunk/Tools/ChangeLog

    r250774 r250775  
     12019-10-07  Matt Lewis  <jlewis3@apple.com>
     2
     3        Unreviewed, rolling out r250750.
     4
     5        Reverting change as this broke interal test over the weekend.
     6
     7        Reverted changeset:
     8
     9        "Allow OSR exit to the LLInt"
     10        https://bugs.webkit.org/show_bug.cgi?id=197993
     11        https://trac.webkit.org/changeset/250750
     12
    1132019-10-07  youenn fablet  <youenn@apple.com>
    214
  • trunk/Tools/Scripts/run-jsc-stress-tests

    r250750 r250775  
    496496FTL_OPTIONS = ["--useFTLJIT=true"]
    497497PROBE_OSR_EXIT_OPTION = ["--useProbeOSRExit=true"]
    498 FORCE_LLINT_EXIT_OPTIONS = ["--forceOSRExitToLLInt=true"]
    499498
    500499require_relative "webkitruby/jsc-stress-test-writer-#{$testWriter}"
     
    710709
    711710def runFTLNoCJITB3O0(*optionalTestSpecificOptions)
    712     run("ftl-no-cjit-b3o0", "--useArrayAllocationProfiling=false", "--forcePolyProto=true", *(FTL_OPTIONS + NO_CJIT_OPTIONS + B3O0_OPTIONS + FORCE_LLINT_EXIT_OPTIONS + optionalTestSpecificOptions))
     711    run("ftl-no-cjit-b3o0", "--useArrayAllocationProfiling=false", "--forcePolyProto=true", *(FTL_OPTIONS + NO_CJIT_OPTIONS + B3O0_OPTIONS + optionalTestSpecificOptions))
    713712end
    714713
     
    730729
    731730def runDFGEager(*optionalTestSpecificOptions)
    732     run("dfg-eager", *(EAGER_OPTIONS + COLLECT_CONTINUOUSLY_OPTIONS + PROBE_OSR_EXIT_OPTION + FORCE_LLINT_EXIT_OPTIONS + optionalTestSpecificOptions))
     731    run("dfg-eager", *(EAGER_OPTIONS + COLLECT_CONTINUOUSLY_OPTIONS + PROBE_OSR_EXIT_OPTION + optionalTestSpecificOptions))
    733732end
    734733
     
    747746
    748747def runFTLEagerNoCJITValidate(*optionalTestSpecificOptions)
    749     run("ftl-eager-no-cjit", "--validateGraph=true", "--airForceIRCAllocator=true", *(FTL_OPTIONS + NO_CJIT_OPTIONS + EAGER_OPTIONS + COLLECT_CONTINUOUSLY_OPTIONS + FORCE_LLINT_EXIT_OPTIONS + optionalTestSpecificOptions))
     748    run("ftl-eager-no-cjit", "--validateGraph=true", "--airForceIRCAllocator=true", *(FTL_OPTIONS + NO_CJIT_OPTIONS + EAGER_OPTIONS + COLLECT_CONTINUOUSLY_OPTIONS + optionalTestSpecificOptions))
    750749end
    751750
Note: See TracChangeset for help on using the changeset viewer.