Remove LLVM dependencies from WebKit
authorfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Feb 2016 00:11:21 +0000 (00:11 +0000)
committerfpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 18 Feb 2016 00:11:21 +0000 (00:11 +0000)
https://bugs.webkit.org/show_bug.cgi?id=154323

Reviewed by Antti Koivisto and Benjamin Poulain.

Source/JavaScriptCore:

We have switched all ports that use the FTL JIT to using B3 as the backend. This renders all
LLVM-related code dead, including the disassembler, which was only reachable when you were on
a platform that already had an in-tree disassembler.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* dfg/DFGCommon.h:
* dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThread):
(JSC::DFG::Plan::compileInThreadImpl):
(JSC::DFG::Plan::compileTimeStats):
* disassembler/ARM64Disassembler.cpp:
(JSC::tryToDisassemble):
* disassembler/ARMv7Disassembler.cpp:
(JSC::tryToDisassemble):
* disassembler/Disassembler.cpp:
(JSC::disassemble):
(JSC::disassembleAsynchronously):
* disassembler/Disassembler.h:
(JSC::tryToDisassemble):
* disassembler/LLVMDisassembler.cpp: Removed.
* disassembler/LLVMDisassembler.h: Removed.
* disassembler/UDis86Disassembler.cpp:
(JSC::tryToDisassembleWithUDis86):
* disassembler/UDis86Disassembler.h:
(JSC::tryToDisassembleWithUDis86):
* disassembler/X86Disassembler.cpp:
(JSC::tryToDisassemble):
* ftl/FTLAbbreviatedTypes.h:
* ftl/FTLAbbreviations.h: Removed.
* ftl/FTLAbstractHeap.cpp:
(JSC::FTL::AbstractHeap::decorateInstruction):
(JSC::FTL::AbstractHeap::dump):
(JSC::FTL::AbstractField::dump):
(JSC::FTL::IndexedAbstractHeap::IndexedAbstractHeap):
(JSC::FTL::IndexedAbstractHeap::~IndexedAbstractHeap):
(JSC::FTL::IndexedAbstractHeap::baseIndex):
(JSC::FTL::IndexedAbstractHeap::dump):
(JSC::FTL::NumberedAbstractHeap::NumberedAbstractHeap):
(JSC::FTL::NumberedAbstractHeap::dump):
(JSC::FTL::AbsoluteAbstractHeap::AbsoluteAbstractHeap):
(JSC::FTL::AbstractHeap::tbaaMetadataSlow): Deleted.
* ftl/FTLAbstractHeap.h:
(JSC::FTL::AbstractHeap::AbstractHeap):
(JSC::FTL::AbstractHeap::heapName):
(JSC::FTL::IndexedAbstractHeap::atAnyIndex):
(JSC::FTL::NumberedAbstractHeap::atAnyNumber):
(JSC::FTL::AbsoluteAbstractHeap::atAnyAddress):
(JSC::FTL::AbstractHeap::tbaaMetadata): Deleted.
* ftl/FTLAbstractHeapRepository.cpp:
(JSC::FTL::AbstractHeapRepository::AbstractHeapRepository):
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLB3Compile.cpp:
* ftl/FTLB3Output.cpp:
(JSC::FTL::Output::Output):
(JSC::FTL::Output::check):
(JSC::FTL::Output::load):
(JSC::FTL::Output::store):
* ftl/FTLB3Output.h:
* ftl/FTLCommonValues.cpp:
(JSC::FTL::CommonValues::CommonValues):
(JSC::FTL::CommonValues::initializeConstants):
* ftl/FTLCommonValues.h:
(JSC::FTL::CommonValues::initialize): Deleted.
* ftl/FTLCompile.cpp: Removed.
* ftl/FTLCompileBinaryOp.cpp: Removed.
* ftl/FTLCompileBinaryOp.h: Removed.
* ftl/FTLDWARFDebugLineInfo.cpp: Removed.
* ftl/FTLDWARFDebugLineInfo.h: Removed.
* ftl/FTLDWARFRegister.cpp: Removed.
* ftl/FTLDWARFRegister.h: Removed.
* ftl/FTLDataSection.cpp: Removed.
* ftl/FTLDataSection.h: Removed.
* ftl/FTLExceptionHandlerManager.cpp: Removed.
* ftl/FTLExceptionHandlerManager.h: Removed.
* ftl/FTLExceptionTarget.cpp:
* ftl/FTLExceptionTarget.h:
* ftl/FTLExitThunkGenerator.cpp: Removed.
* ftl/FTLExitThunkGenerator.h: Removed.
* ftl/FTLFail.cpp:
(JSC::FTL::fail):
* ftl/FTLInlineCacheDescriptor.h: Removed.
* ftl/FTLInlineCacheSize.cpp: Removed.
* ftl/FTLInlineCacheSize.h: Removed.
* ftl/FTLIntrinsicRepository.cpp: Removed.
* ftl/FTLIntrinsicRepository.h: Removed.
* ftl/FTLJITCode.cpp:
(JSC::FTL::JITCode::~JITCode):
(JSC::FTL::JITCode::initializeB3Code):
(JSC::FTL::JITCode::initializeB3Byproducts):
(JSC::FTL::JITCode::initializeAddressForCall):
(JSC::FTL::JITCode::contains):
(JSC::FTL::JITCode::ftl):
(JSC::FTL::JITCode::liveRegistersToPreserveAtExceptionHandlingCallSite):
(JSC::FTL::JITCode::initializeExitThunks): Deleted.
(JSC::FTL::JITCode::addHandle): Deleted.
(JSC::FTL::JITCode::addDataSection): Deleted.
(JSC::FTL::JITCode::exitThunks): Deleted.
* ftl/FTLJITCode.h:
(JSC::FTL::JITCode::b3Code):
(JSC::FTL::JITCode::handles): Deleted.
(JSC::FTL::JITCode::dataSections): Deleted.
* ftl/FTLJITFinalizer.cpp:
(JSC::FTL::JITFinalizer::codeSize):
(JSC::FTL::JITFinalizer::finalizeFunction):
* ftl/FTLJITFinalizer.h:
* ftl/FTLJSCall.cpp: Removed.
* ftl/FTLJSCall.h: Removed.
* ftl/FTLJSCallBase.cpp: Removed.
* ftl/FTLJSCallBase.h: Removed.
* ftl/FTLJSCallVarargs.cpp: Removed.
* ftl/FTLJSCallVarargs.h: Removed.
* ftl/FTLJSTailCall.cpp: Removed.
* ftl/FTLJSTailCall.h: Removed.
* ftl/FTLLazySlowPath.cpp:
(JSC::FTL::LazySlowPath::LazySlowPath):
(JSC::FTL::LazySlowPath::generate):
* ftl/FTLLazySlowPath.h:
(JSC::FTL::LazySlowPath::createGenerator):
(JSC::FTL::LazySlowPath::patchableJump):
(JSC::FTL::LazySlowPath::done):
(JSC::FTL::LazySlowPath::usedRegisters):
(JSC::FTL::LazySlowPath::callSiteIndex):
(JSC::FTL::LazySlowPath::stub):
(JSC::FTL::LazySlowPath::patchpoint): Deleted.
* ftl/FTLLink.cpp:
(JSC::FTL::link):
* ftl/FTLLocation.cpp:
(JSC::FTL::Location::forValueRep):
(JSC::FTL::Location::dump):
(JSC::FTL::Location::forStackmaps): Deleted.
* ftl/FTLLocation.h:
(JSC::FTL::Location::forRegister):
(JSC::FTL::Location::forIndirect):
(JSC::FTL::Location::forConstant):
(JSC::FTL::Location::kind):
(JSC::FTL::Location::hasReg):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::LowerDFGToLLVM):
(JSC::FTL::DFG::LowerDFGToLLVM::lower):
(JSC::FTL::DFG::LowerDFGToLLVM::createPhiVariables):
(JSC::FTL::DFG::LowerDFGToLLVM::compileNode):
(JSC::FTL::DFG::LowerDFGToLLVM::compileUpsilon):
(JSC::FTL::DFG::LowerDFGToLLVM::compilePhi):
(JSC::FTL::DFG::LowerDFGToLLVM::compileDoubleConstant):
(JSC::FTL::DFG::LowerDFGToLLVM::compileValueAdd):
(JSC::FTL::DFG::LowerDFGToLLVM::compileStrCat):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithAddOrSub):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithMul):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithDiv):
(JSC::FTL::DFG::LowerDFGToLLVM::compileArithNegate):
(JSC::FTL::DFG::LowerDFGToLLVM::compileBitAnd):
(JSC::FTL::DFG::LowerDFGToLLVM::compileBitOr):
(JSC::FTL::DFG::LowerDFGToLLVM::compileBitXor):
(JSC::FTL::DFG::LowerDFGToLLVM::compileBitRShift):
(JSC::FTL::DFG::LowerDFGToLLVM::compileBitLShift):
(JSC::FTL::DFG::LowerDFGToLLVM::compileBitURShift):
(JSC::FTL::DFG::LowerDFGToLLVM::compilePutById):
(JSC::FTL::DFG::LowerDFGToLLVM::compileGetButterfly):
(JSC::FTL::DFG::LowerDFGToLLVM::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToLLVM::compileTailCall):
(JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToLLVM::compileLoadVarargs):
(JSC::FTL::DFG::LowerDFGToLLVM::compileInvalidationPoint):
(JSC::FTL::DFG::LowerDFGToLLVM::compileIsUndefined):
(JSC::FTL::DFG::LowerDFGToLLVM::compileIn):
(JSC::FTL::DFG::LowerDFGToLLVM::getById):
(JSC::FTL::DFG::LowerDFGToLLVM::loadButterflyWithBarrier):
(JSC::FTL::DFG::LowerDFGToLLVM::stringsEqual):
(JSC::FTL::DFG::LowerDFGToLLVM::emitRightShiftSnippet):
(JSC::FTL::DFG::LowerDFGToLLVM::allocateCell):
(JSC::FTL::DFG::LowerDFGToLLVM::lazySlowPath):
(JSC::FTL::DFG::LowerDFGToLLVM::speculate):
(JSC::FTL::DFG::LowerDFGToLLVM::callCheck):
(JSC::FTL::DFG::LowerDFGToLLVM::preparePatchpointForExceptions):
(JSC::FTL::DFG::LowerDFGToLLVM::lowBlock):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExitDescriptor):
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExit):
(JSC::FTL::DFG::LowerDFGToLLVM::blessSpeculation):
(JSC::FTL::DFG::LowerDFGToLLVM::buildExitArguments):
(JSC::FTL::DFG::LowerDFGToLLVM::exitValueForAvailability):
(JSC::FTL::DFG::LowerDFGToLLVM::exitValueForNode):
(JSC::FTL::DFG::LowerDFGToLLVM::probe):
(JSC::FTL::DFG::LowerDFGToLLVM::crash):
(JSC::FTL::DFG::LowerDFGToLLVM::compileUntypedBinaryOp): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExitArgumentsForPatchpointIfWillCatchException): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::emitOSRExitCall): Deleted.
(JSC::FTL::DFG::LowerDFGToLLVM::callStackmap): Deleted.
* ftl/FTLOSRExit.cpp:
(JSC::FTL::OSRExitDescriptor::OSRExitDescriptor):
(JSC::FTL::OSRExitDescriptor::validateReferences):
(JSC::FTL::OSRExitDescriptor::emitOSRExit):
(JSC::FTL::OSRExitDescriptor::prepareOSRExitHandle):
(JSC::FTL::OSRExit::OSRExit):
(JSC::FTL::OSRExit::codeLocationForRepatch):
(JSC::FTL::OSRExit::gatherRegistersToSpillForCallIfException): Deleted.
(JSC::FTL::OSRExit::spillRegistersToSpillSlot): Deleted.
(JSC::FTL::OSRExit::recoverRegistersFromSpillSlot): Deleted.
(JSC::FTL::OSRExit::willArriveAtExitFromIndirectExceptionCheck): Deleted.
(JSC::FTL::OSRExit::willArriveAtOSRExitFromCallOperation): Deleted.
(JSC::FTL::OSRExit::needsRegisterRecoveryOnGenericUnwindOSRExitPath): Deleted.
* ftl/FTLOSRExit.h:
(JSC::FTL::OSRExit::considerAddingAsFrequentExitSite):
(JSC::FTL::OSRExitDescriptorImpl::OSRExitDescriptorImpl): Deleted.
* ftl/FTLOSRExitCompilationInfo.h: Removed.
* ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileRecovery):
(JSC::FTL::compileStub):
(JSC::FTL::compileFTLOSRExit):
* ftl/FTLOSRExitHandle.cpp:
* ftl/FTLOSRExitHandle.h:
* ftl/FTLOutput.cpp: Removed.
* ftl/FTLOutput.h: Removed.
* ftl/FTLPatchpointExceptionHandle.cpp:
* ftl/FTLPatchpointExceptionHandle.h:
* ftl/FTLStackMaps.cpp: Removed.
* ftl/FTLStackMaps.h: Removed.
* ftl/FTLState.cpp:
(JSC::FTL::State::State):
(JSC::FTL::State::~State):
(JSC::FTL::State::dumpState): Deleted.
* ftl/FTLState.h:
* ftl/FTLUnwindInfo.cpp: Removed.
* ftl/FTLUnwindInfo.h: Removed.
* ftl/FTLValueRange.cpp:
(JSC::FTL::ValueRange::decorateInstruction):
* ftl/FTLValueRange.h:
(JSC::FTL::ValueRange::ValueRange):
(JSC::FTL::ValueRange::begin):
(JSC::FTL::ValueRange::end):
* ftl/FTLWeight.h:
(JSC::FTL::Weight::value):
(JSC::FTL::Weight::frequencyClass):
(JSC::FTL::Weight::scaleToTotal):
* llvm/InitializeLLVM.cpp: Removed.
* llvm/InitializeLLVM.h: Removed.
* llvm/InitializeLLVMMac.cpp: Removed.
* llvm/InitializeLLVMPOSIX.cpp: Removed.
* llvm/InitializeLLVMPOSIX.h: Removed.
* llvm/LLVMAPI.cpp: Removed.
* llvm/LLVMAPI.h: Removed.
* llvm/LLVMAPIFunctions.h: Removed.
* llvm/LLVMHeaders.h: Removed.
* llvm/library/LLVMAnchor.cpp: Removed.
* llvm/library/LLVMExports.cpp: Removed.
* llvm/library/LLVMOverrides.cpp: Removed.
* llvm/library/config_llvm.h: Removed.

Source/WTF:

* wtf/Platform.h:

Tools:

* Scripts/copy-webkitlibraries-to-product-directory:
(isContentOfFileEqualToString):
(fileContains): Deleted.
(buildLLVM): Deleted.
(symlinkLLVMLibrariesIfNeeded): Deleted.

WebKitLibraries:

* LLVMIncludesElCapitan.tar.bz2: Removed.
* LLVMIncludesIOS9.tar.bz2: Removed.
* LLVMIncludesMavericks.tar.bz2: Removed.
* LLVMIncludesYosemite.tar.bz2: Removed.
* LLVMLibrariesElCapitan.tar.bz2: Removed.
* LLVMLibrariesIOS9.tar.bz2: Removed.
* LLVMLibrariesMavericks.tar.bz2: Removed.
* LLVMLibrariesYosemite.tar.bz2: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@196729 268f45cc-cd09-0410-ab3c-d52691b4dbfc

109 files changed:
Source/JavaScriptCore/CMakeLists.txt
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
Source/JavaScriptCore/dfg/DFGCommon.h
Source/JavaScriptCore/dfg/DFGPlan.cpp
Source/JavaScriptCore/disassembler/ARM64Disassembler.cpp
Source/JavaScriptCore/disassembler/ARMv7Disassembler.cpp
Source/JavaScriptCore/disassembler/Disassembler.cpp
Source/JavaScriptCore/disassembler/Disassembler.h
Source/JavaScriptCore/disassembler/LLVMDisassembler.cpp [deleted file]
Source/JavaScriptCore/disassembler/LLVMDisassembler.h [deleted file]
Source/JavaScriptCore/disassembler/UDis86Disassembler.cpp
Source/JavaScriptCore/disassembler/UDis86Disassembler.h
Source/JavaScriptCore/disassembler/X86Disassembler.cpp
Source/JavaScriptCore/ftl/FTLAbbreviatedTypes.h
Source/JavaScriptCore/ftl/FTLAbbreviations.h [deleted file]
Source/JavaScriptCore/ftl/FTLAbstractHeap.cpp
Source/JavaScriptCore/ftl/FTLAbstractHeap.h
Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.cpp
Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h
Source/JavaScriptCore/ftl/FTLB3Compile.cpp
Source/JavaScriptCore/ftl/FTLB3Output.cpp
Source/JavaScriptCore/ftl/FTLB3Output.h
Source/JavaScriptCore/ftl/FTLCommonValues.cpp
Source/JavaScriptCore/ftl/FTLCommonValues.h
Source/JavaScriptCore/ftl/FTLCompile.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLCompileBinaryOp.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLCompileBinaryOp.h [deleted file]
Source/JavaScriptCore/ftl/FTLDWARFDebugLineInfo.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLDWARFDebugLineInfo.h [deleted file]
Source/JavaScriptCore/ftl/FTLDWARFRegister.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLDWARFRegister.h [deleted file]
Source/JavaScriptCore/ftl/FTLDataSection.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLDataSection.h [deleted file]
Source/JavaScriptCore/ftl/FTLExceptionHandlerManager.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLExceptionHandlerManager.h [deleted file]
Source/JavaScriptCore/ftl/FTLExceptionTarget.cpp
Source/JavaScriptCore/ftl/FTLExceptionTarget.h
Source/JavaScriptCore/ftl/FTLExitThunkGenerator.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLExitThunkGenerator.h [deleted file]
Source/JavaScriptCore/ftl/FTLFail.cpp
Source/JavaScriptCore/ftl/FTLInlineCacheDescriptor.h [deleted file]
Source/JavaScriptCore/ftl/FTLInlineCacheSize.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLInlineCacheSize.h [deleted file]
Source/JavaScriptCore/ftl/FTLIntrinsicRepository.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h [deleted file]
Source/JavaScriptCore/ftl/FTLJITCode.cpp
Source/JavaScriptCore/ftl/FTLJITCode.h
Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp
Source/JavaScriptCore/ftl/FTLJITFinalizer.h
Source/JavaScriptCore/ftl/FTLJSCall.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLJSCall.h [deleted file]
Source/JavaScriptCore/ftl/FTLJSCallBase.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLJSCallBase.h [deleted file]
Source/JavaScriptCore/ftl/FTLJSCallVarargs.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLJSCallVarargs.h [deleted file]
Source/JavaScriptCore/ftl/FTLJSTailCall.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLJSTailCall.h [deleted file]
Source/JavaScriptCore/ftl/FTLLazySlowPath.cpp
Source/JavaScriptCore/ftl/FTLLazySlowPath.h
Source/JavaScriptCore/ftl/FTLLink.cpp
Source/JavaScriptCore/ftl/FTLLocation.cpp
Source/JavaScriptCore/ftl/FTLLocation.h
Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp
Source/JavaScriptCore/ftl/FTLOSRExit.cpp
Source/JavaScriptCore/ftl/FTLOSRExit.h
Source/JavaScriptCore/ftl/FTLOSRExitCompilationInfo.h [deleted file]
Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp
Source/JavaScriptCore/ftl/FTLOSRExitHandle.cpp
Source/JavaScriptCore/ftl/FTLOSRExitHandle.h
Source/JavaScriptCore/ftl/FTLOutput.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLOutput.h [deleted file]
Source/JavaScriptCore/ftl/FTLPatchpointExceptionHandle.cpp
Source/JavaScriptCore/ftl/FTLPatchpointExceptionHandle.h
Source/JavaScriptCore/ftl/FTLStackMaps.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLStackMaps.h [deleted file]
Source/JavaScriptCore/ftl/FTLState.cpp
Source/JavaScriptCore/ftl/FTLState.h
Source/JavaScriptCore/ftl/FTLUnwindInfo.cpp [deleted file]
Source/JavaScriptCore/ftl/FTLUnwindInfo.h [deleted file]
Source/JavaScriptCore/ftl/FTLValueRange.cpp
Source/JavaScriptCore/ftl/FTLValueRange.h
Source/JavaScriptCore/ftl/FTLWeight.h
Source/JavaScriptCore/llvm/InitializeLLVM.cpp [deleted file]
Source/JavaScriptCore/llvm/InitializeLLVM.h [deleted file]
Source/JavaScriptCore/llvm/InitializeLLVMMac.cpp [deleted file]
Source/JavaScriptCore/llvm/InitializeLLVMPOSIX.cpp [deleted file]
Source/JavaScriptCore/llvm/InitializeLLVMPOSIX.h [deleted file]
Source/JavaScriptCore/llvm/LLVMAPI.cpp [deleted file]
Source/JavaScriptCore/llvm/LLVMAPI.h [deleted file]
Source/JavaScriptCore/llvm/LLVMAPIFunctions.h [deleted file]
Source/JavaScriptCore/llvm/LLVMHeaders.h [deleted file]
Source/JavaScriptCore/llvm/library/LLVMAnchor.cpp [deleted file]
Source/JavaScriptCore/llvm/library/LLVMExports.cpp [deleted file]
Source/JavaScriptCore/llvm/library/LLVMOverrides.cpp [deleted file]
Source/JavaScriptCore/llvm/library/config_llvm.h [deleted file]
Source/WTF/ChangeLog
Source/WTF/wtf/Platform.h
Tools/ChangeLog
Tools/Scripts/copy-webkitlibraries-to-product-directory
WebKitLibraries/ChangeLog
WebKitLibraries/LLVMIncludesElCapitan.tar.bz2 [deleted file]
WebKitLibraries/LLVMIncludesIOS9.tar.bz2 [deleted file]
WebKitLibraries/LLVMIncludesMavericks.tar.bz2 [deleted file]
WebKitLibraries/LLVMIncludesYosemite.tar.bz2 [deleted file]
WebKitLibraries/LLVMLibrariesElCapitan.tar.bz2 [deleted file]
WebKitLibraries/LLVMLibrariesIOS9.tar.bz2 [deleted file]
WebKitLibraries/LLVMLibrariesMavericks.tar.bz2 [deleted file]
WebKitLibraries/LLVMLibrariesYosemite.tar.bz2 [deleted file]

index ac17b70..fae7033 100644 (file)
@@ -27,7 +27,6 @@ set(JavaScriptCore_INCLUDE_DIRECTORIES
     "${JAVASCRIPTCORE_DIR}/interpreter"
     "${JAVASCRIPTCORE_DIR}/jit"
     "${JAVASCRIPTCORE_DIR}/llint"
-    "${JAVASCRIPTCORE_DIR}/llvm"
     "${JAVASCRIPTCORE_DIR}/parser"
     "${JAVASCRIPTCORE_DIR}/profiler"
     "${JAVASCRIPTCORE_DIR}/replay"
@@ -378,7 +377,6 @@ set(JavaScriptCore_SOURCES
     disassembler/ARM64Disassembler.cpp
     disassembler/ARMv7Disassembler.cpp
     disassembler/Disassembler.cpp
-    disassembler/LLVMDisassembler.cpp
     disassembler/UDis86Disassembler.cpp
     disassembler/X86Disassembler.cpp
 
@@ -1006,29 +1004,16 @@ if (ENABLE_FTL_JIT)
         ftl/FTLB3Output.cpp
         ftl/FTLCapabilities.cpp
         ftl/FTLCommonValues.cpp
-        ftl/FTLCompile.cpp
-        ftl/FTLCompileBinaryOp.cpp
-        ftl/FTLDWARFDebugLineInfo.cpp
-        ftl/FTLDWARFRegister.cpp
-        ftl/FTLDataSection.cpp
-        ftl/FTLExceptionHandlerManager.cpp
         ftl/FTLExceptionTarget.cpp
         ftl/FTLExitArgument.cpp
         ftl/FTLExitArgumentForOperand.cpp
         ftl/FTLExitPropertyValue.cpp
-        ftl/FTLExitThunkGenerator.cpp
         ftl/FTLExitTimeObjectMaterialization.cpp
         ftl/FTLExitValue.cpp
         ftl/FTLFail.cpp
         ftl/FTLForOSREntryJITCode.cpp
-        ftl/FTLInlineCacheSize.cpp
-        ftl/FTLIntrinsicRepository.cpp
         ftl/FTLJITCode.cpp
         ftl/FTLJITFinalizer.cpp
-        ftl/FTLJSCall.cpp
-        ftl/FTLJSCallBase.cpp
-        ftl/FTLJSCallVarargs.cpp
-        ftl/FTLJSTailCall.cpp
         ftl/FTLLazySlowPath.cpp
         ftl/FTLLink.cpp
         ftl/FTLLocation.cpp
@@ -1038,54 +1023,17 @@ if (ENABLE_FTL_JIT)
         ftl/FTLOSRExitCompiler.cpp
         ftl/FTLOSRExitHandle.cpp
         ftl/FTLOperations.cpp
-        ftl/FTLOutput.cpp
         ftl/FTLPatchpointExceptionHandle.cpp
         ftl/FTLRecoveryOpcode.cpp
         ftl/FTLSaveRestore.cpp
         ftl/FTLSlowPathCall.cpp
         ftl/FTLSlowPathCallKey.cpp
-        ftl/FTLStackMaps.cpp
         ftl/FTLState.cpp
         ftl/FTLThunks.cpp
-        ftl/FTLUnwindInfo.cpp
         ftl/FTLValueRange.cpp
     )
 endif ()
 
-if (USE_LLVM_DISASSEMBLER)
-    # Configure llvmForJSC.so
-    set(llvmForJSC_SOURCES
-        llvm/library/LLVMAnchor.cpp
-        llvm/library/LLVMExports.cpp
-        llvm/library/LLVMOverrides.cpp
-    )
-    set(llvmForJSC_INCLUDE_DIRECTORIES
-        ${LLVM_INCLUDE_DIRS}
-        "${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}"
-    )
-
-    add_custom_command(
-        OUTPUT ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h
-        COMMAND ${CMAKE_COMMAND} -E touch ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h
-        VERBATIM)
-
-    # Added extra items for JavaScriptCore
-    list(APPEND JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES
-        ${LLVM_INCLUDE_DIRS}
-    )
-
-    list(APPEND JavaScriptCore_SOURCES
-        llvm/InitializeLLVM.cpp
-        llvm/LLVMAPI.cpp
-    )
-    if (NOT WIN32)
-        list(APPEND JavaScriptCore_SOURCES
-            llvm/InitializeLLVMLinux.cpp
-            llvm/InitializeLLVMPOSIX.cpp
-        )
-    endif ()
-endif ()
-
 set(HASH_LUT_GENERATOR ${CMAKE_CURRENT_SOURCE_DIR}/create_hash_table)
 macro(GENERATE_HASH_LUT _input _output)
     add_custom_command(
@@ -1369,25 +1317,6 @@ endif ()
 
 WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
 
-if (USE_LLVM_DISASSEMBLER AND NOT WIN32)
-    if (NOT llvmForJSC_LIBRARIES)
-        set(llvmForJSC_LIBRARIES ${LLVM_STATIC_LIBRARIES})
-    endif ()
-    if (NOT llvmForJSC_LIBRARIES)
-        message(FATAL_ERROR "No LLVM libs found, but LLVM disassembler is enabled. Stopping build.")
-    endif ()
-
-    WEBKIT_WRAP_SOURCELIST(${llvmForJSC_SOURCES})
-    add_library(llvmForJSC SHARED ${llvmForJSC_SOURCES} ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}/WebKitLLVMLibraryToken.h)
-    target_link_libraries(llvmForJSC ${llvmForJSC_LIBRARIES} ${LLVM_SYSTEM_LIBRARIES})
-    if (NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
-        ADD_TARGET_PROPERTIES(llvmForJSC LINK_FLAGS "-Wl,--version-script=${JAVASCRIPTCORE_DIR}/llvm/library/libllvmForJSC.version")
-    endif ()
-    if (llvmForJSC_INSTALL_DIR)
-        install(TARGETS llvmForJSC DESTINATION "${llvmForJSC_INSTALL_DIR}")
-    endif ()
-endif ()
-
 WEBKIT_CREATE_FORWARDING_HEADERS(JavaScriptCore DIRECTORIES ${JavaScriptCore_FORWARDING_HEADERS_DIRECTORIES} FILES ${JavaScriptCore_FORWARDING_HEADERS_FILES})
 
 
@@ -1419,10 +1348,6 @@ if (${JavaScriptCore_LIBRARY_TYPE} STREQUAL "SHARED")
     install(TARGETS JavaScriptCore DESTINATION "${LIB_INSTALL_DIR}")
 endif ()
 
-if (USE_LLVM_DISASSEMBLER)
-    add_dependencies(JavaScriptCore llvmForJSC)
-endif ()
-
 # Force staging of shared scripts, even if they aren't directly used to build JavaScriptCore.
 
 add_custom_target(stageSharedScripts DEPENDS ${JavaScriptCore_SCRIPTS})
index d55a7ff..5584617 100644 (file)
@@ -1,3 +1,259 @@
+2016-02-17  Filip Pizlo  <fpizlo@apple.com>
+
+        Remove LLVM dependencies from WebKit
+        https://bugs.webkit.org/show_bug.cgi?id=154323
+
+        Reviewed by Antti Koivisto and Benjamin Poulain.
+
+        We have switched all ports that use the FTL JIT to using B3 as the backend. This renders all
+        LLVM-related code dead, including the disassembler, which was only reachable when you were on
+        a platform that already had an in-tree disassembler.
+
+        * CMakeLists.txt:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * dfg/DFGCommon.h:
+        * dfg/DFGPlan.cpp:
+        (JSC::DFG::Plan::compileInThread):
+        (JSC::DFG::Plan::compileInThreadImpl):
+        (JSC::DFG::Plan::compileTimeStats):
+        * disassembler/ARM64Disassembler.cpp:
+        (JSC::tryToDisassemble):
+        * disassembler/ARMv7Disassembler.cpp:
+        (JSC::tryToDisassemble):
+        * disassembler/Disassembler.cpp:
+        (JSC::disassemble):
+        (JSC::disassembleAsynchronously):
+        * disassembler/Disassembler.h:
+        (JSC::tryToDisassemble):
+        * disassembler/LLVMDisassembler.cpp: Removed.
+        * disassembler/LLVMDisassembler.h: Removed.
+        * disassembler/UDis86Disassembler.cpp:
+        (JSC::tryToDisassembleWithUDis86):
+        * disassembler/UDis86Disassembler.h:
+        (JSC::tryToDisassembleWithUDis86):
+        * disassembler/X86Disassembler.cpp:
+        (JSC::tryToDisassemble):
+        * ftl/FTLAbbreviatedTypes.h:
+        * ftl/FTLAbbreviations.h: Removed.
+        * ftl/FTLAbstractHeap.cpp:
+        (JSC::FTL::AbstractHeap::decorateInstruction):
+        (JSC::FTL::AbstractHeap::dump):
+        (JSC::FTL::AbstractField::dump):
+        (JSC::FTL::IndexedAbstractHeap::IndexedAbstractHeap):
+        (JSC::FTL::IndexedAbstractHeap::~IndexedAbstractHeap):
+        (JSC::FTL::IndexedAbstractHeap::baseIndex):
+        (JSC::FTL::IndexedAbstractHeap::dump):
+        (JSC::FTL::NumberedAbstractHeap::NumberedAbstractHeap):
+        (JSC::FTL::NumberedAbstractHeap::dump):
+        (JSC::FTL::AbsoluteAbstractHeap::AbsoluteAbstractHeap):
+        (JSC::FTL::AbstractHeap::tbaaMetadataSlow): Deleted.
+        * ftl/FTLAbstractHeap.h:
+        (JSC::FTL::AbstractHeap::AbstractHeap):
+        (JSC::FTL::AbstractHeap::heapName):
+        (JSC::FTL::IndexedAbstractHeap::atAnyIndex):
+        (JSC::FTL::NumberedAbstractHeap::atAnyNumber):
+        (JSC::FTL::AbsoluteAbstractHeap::atAnyAddress):
+        (JSC::FTL::AbstractHeap::tbaaMetadata): Deleted.
+        * ftl/FTLAbstractHeapRepository.cpp:
+        (JSC::FTL::AbstractHeapRepository::AbstractHeapRepository):
+        * ftl/FTLAbstractHeapRepository.h:
+        * ftl/FTLB3Compile.cpp:
+        * ftl/FTLB3Output.cpp:
+        (JSC::FTL::Output::Output):
+        (JSC::FTL::Output::check):
+        (JSC::FTL::Output::load):
+        (JSC::FTL::Output::store):
+        * ftl/FTLB3Output.h:
+        * ftl/FTLCommonValues.cpp:
+        (JSC::FTL::CommonValues::CommonValues):
+        (JSC::FTL::CommonValues::initializeConstants):
+        * ftl/FTLCommonValues.h:
+        (JSC::FTL::CommonValues::initialize): Deleted.
+        * ftl/FTLCompile.cpp: Removed.
+        * ftl/FTLCompileBinaryOp.cpp: Removed.
+        * ftl/FTLCompileBinaryOp.h: Removed.
+        * ftl/FTLDWARFDebugLineInfo.cpp: Removed.
+        * ftl/FTLDWARFDebugLineInfo.h: Removed.
+        * ftl/FTLDWARFRegister.cpp: Removed.
+        * ftl/FTLDWARFRegister.h: Removed.
+        * ftl/FTLDataSection.cpp: Removed.
+        * ftl/FTLDataSection.h: Removed.
+        * ftl/FTLExceptionHandlerManager.cpp: Removed.
+        * ftl/FTLExceptionHandlerManager.h: Removed.
+        * ftl/FTLExceptionTarget.cpp:
+        * ftl/FTLExceptionTarget.h:
+        * ftl/FTLExitThunkGenerator.cpp: Removed.
+        * ftl/FTLExitThunkGenerator.h: Removed.
+        * ftl/FTLFail.cpp:
+        (JSC::FTL::fail):
+        * ftl/FTLInlineCacheDescriptor.h: Removed.
+        * ftl/FTLInlineCacheSize.cpp: Removed.
+        * ftl/FTLInlineCacheSize.h: Removed.
+        * ftl/FTLIntrinsicRepository.cpp: Removed.
+        * ftl/FTLIntrinsicRepository.h: Removed.
+        * ftl/FTLJITCode.cpp:
+        (JSC::FTL::JITCode::~JITCode):
+        (JSC::FTL::JITCode::initializeB3Code):
+        (JSC::FTL::JITCode::initializeB3Byproducts):
+        (JSC::FTL::JITCode::initializeAddressForCall):
+        (JSC::FTL::JITCode::contains):
+        (JSC::FTL::JITCode::ftl):
+        (JSC::FTL::JITCode::liveRegistersToPreserveAtExceptionHandlingCallSite):
+        (JSC::FTL::JITCode::initializeExitThunks): Deleted.
+        (JSC::FTL::JITCode::addHandle): Deleted.
+        (JSC::FTL::JITCode::addDataSection): Deleted.
+        (JSC::FTL::JITCode::exitThunks): Deleted.
+        * ftl/FTLJITCode.h:
+        (JSC::FTL::JITCode::b3Code):
+        (JSC::FTL::JITCode::handles): Deleted.
+        (JSC::FTL::JITCode::dataSections): Deleted.
+        * ftl/FTLJITFinalizer.cpp:
+        (JSC::FTL::JITFinalizer::codeSize):
+        (JSC::FTL::JITFinalizer::finalizeFunction):
+        * ftl/FTLJITFinalizer.h:
+        * ftl/FTLJSCall.cpp: Removed.
+        * ftl/FTLJSCall.h: Removed.
+        * ftl/FTLJSCallBase.cpp: Removed.
+        * ftl/FTLJSCallBase.h: Removed.
+        * ftl/FTLJSCallVarargs.cpp: Removed.
+        * ftl/FTLJSCallVarargs.h: Removed.
+        * ftl/FTLJSTailCall.cpp: Removed.
+        * ftl/FTLJSTailCall.h: Removed.
+        * ftl/FTLLazySlowPath.cpp:
+        (JSC::FTL::LazySlowPath::LazySlowPath):
+        (JSC::FTL::LazySlowPath::generate):
+        * ftl/FTLLazySlowPath.h:
+        (JSC::FTL::LazySlowPath::createGenerator):
+        (JSC::FTL::LazySlowPath::patchableJump):
+        (JSC::FTL::LazySlowPath::done):
+        (JSC::FTL::LazySlowPath::usedRegisters):
+        (JSC::FTL::LazySlowPath::callSiteIndex):
+        (JSC::FTL::LazySlowPath::stub):
+        (JSC::FTL::LazySlowPath::patchpoint): Deleted.
+        * ftl/FTLLink.cpp:
+        (JSC::FTL::link):
+        * ftl/FTLLocation.cpp:
+        (JSC::FTL::Location::forValueRep):
+        (JSC::FTL::Location::dump):
+        (JSC::FTL::Location::forStackmaps): Deleted.
+        * ftl/FTLLocation.h:
+        (JSC::FTL::Location::forRegister):
+        (JSC::FTL::Location::forIndirect):
+        (JSC::FTL::Location::forConstant):
+        (JSC::FTL::Location::kind):
+        (JSC::FTL::Location::hasReg):
+        * ftl/FTLLowerDFGToLLVM.cpp:
+        (JSC::FTL::DFG::LowerDFGToLLVM::LowerDFGToLLVM):
+        (JSC::FTL::DFG::LowerDFGToLLVM::lower):
+        (JSC::FTL::DFG::LowerDFGToLLVM::createPhiVariables):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileNode):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileUpsilon):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compilePhi):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileDoubleConstant):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileValueAdd):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileStrCat):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileArithAddOrSub):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileArithMul):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileArithDiv):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileArithNegate):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileBitAnd):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileBitOr):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileBitXor):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileBitRShift):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileBitLShift):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileBitURShift):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compilePutById):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileGetButterfly):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileMakeRope):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstruct):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileTailCall):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileCallOrConstructVarargs):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileLoadVarargs):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileInvalidationPoint):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileIsUndefined):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileIn):
+        (JSC::FTL::DFG::LowerDFGToLLVM::getById):
+        (JSC::FTL::DFG::LowerDFGToLLVM::loadButterflyWithBarrier):
+        (JSC::FTL::DFG::LowerDFGToLLVM::stringsEqual):
+        (JSC::FTL::DFG::LowerDFGToLLVM::emitRightShiftSnippet):
+        (JSC::FTL::DFG::LowerDFGToLLVM::allocateCell):
+        (JSC::FTL::DFG::LowerDFGToLLVM::lazySlowPath):
+        (JSC::FTL::DFG::LowerDFGToLLVM::speculate):
+        (JSC::FTL::DFG::LowerDFGToLLVM::callCheck):
+        (JSC::FTL::DFG::LowerDFGToLLVM::preparePatchpointForExceptions):
+        (JSC::FTL::DFG::LowerDFGToLLVM::lowBlock):
+        (JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExitDescriptor):
+        (JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExit):
+        (JSC::FTL::DFG::LowerDFGToLLVM::blessSpeculation):
+        (JSC::FTL::DFG::LowerDFGToLLVM::buildExitArguments):
+        (JSC::FTL::DFG::LowerDFGToLLVM::exitValueForAvailability):
+        (JSC::FTL::DFG::LowerDFGToLLVM::exitValueForNode):
+        (JSC::FTL::DFG::LowerDFGToLLVM::probe):
+        (JSC::FTL::DFG::LowerDFGToLLVM::crash):
+        (JSC::FTL::DFG::LowerDFGToLLVM::compileUntypedBinaryOp): Deleted.
+        (JSC::FTL::DFG::LowerDFGToLLVM::appendOSRExitArgumentsForPatchpointIfWillCatchException): Deleted.
+        (JSC::FTL::DFG::LowerDFGToLLVM::emitOSRExitCall): Deleted.
+        (JSC::FTL::DFG::LowerDFGToLLVM::callStackmap): Deleted.
+        * ftl/FTLOSRExit.cpp:
+        (JSC::FTL::OSRExitDescriptor::OSRExitDescriptor):
+        (JSC::FTL::OSRExitDescriptor::validateReferences):
+        (JSC::FTL::OSRExitDescriptor::emitOSRExit):
+        (JSC::FTL::OSRExitDescriptor::prepareOSRExitHandle):
+        (JSC::FTL::OSRExit::OSRExit):
+        (JSC::FTL::OSRExit::codeLocationForRepatch):
+        (JSC::FTL::OSRExit::gatherRegistersToSpillForCallIfException): Deleted.
+        (JSC::FTL::OSRExit::spillRegistersToSpillSlot): Deleted.
+        (JSC::FTL::OSRExit::recoverRegistersFromSpillSlot): Deleted.
+        (JSC::FTL::OSRExit::willArriveAtExitFromIndirectExceptionCheck): Deleted.
+        (JSC::FTL::OSRExit::willArriveAtOSRExitFromCallOperation): Deleted.
+        (JSC::FTL::OSRExit::needsRegisterRecoveryOnGenericUnwindOSRExitPath): Deleted.
+        * ftl/FTLOSRExit.h:
+        (JSC::FTL::OSRExit::considerAddingAsFrequentExitSite):
+        (JSC::FTL::OSRExitDescriptorImpl::OSRExitDescriptorImpl): Deleted.
+        * ftl/FTLOSRExitCompilationInfo.h: Removed.
+        * ftl/FTLOSRExitCompiler.cpp:
+        (JSC::FTL::compileRecovery):
+        (JSC::FTL::compileStub):
+        (JSC::FTL::compileFTLOSRExit):
+        * ftl/FTLOSRExitHandle.cpp:
+        * ftl/FTLOSRExitHandle.h:
+        * ftl/FTLOutput.cpp: Removed.
+        * ftl/FTLOutput.h: Removed.
+        * ftl/FTLPatchpointExceptionHandle.cpp:
+        * ftl/FTLPatchpointExceptionHandle.h:
+        * ftl/FTLStackMaps.cpp: Removed.
+        * ftl/FTLStackMaps.h: Removed.
+        * ftl/FTLState.cpp:
+        (JSC::FTL::State::State):
+        (JSC::FTL::State::~State):
+        (JSC::FTL::State::dumpState): Deleted.
+        * ftl/FTLState.h:
+        * ftl/FTLUnwindInfo.cpp: Removed.
+        * ftl/FTLUnwindInfo.h: Removed.
+        * ftl/FTLValueRange.cpp:
+        (JSC::FTL::ValueRange::decorateInstruction):
+        * ftl/FTLValueRange.h:
+        (JSC::FTL::ValueRange::ValueRange):
+        (JSC::FTL::ValueRange::begin):
+        (JSC::FTL::ValueRange::end):
+        * ftl/FTLWeight.h:
+        (JSC::FTL::Weight::value):
+        (JSC::FTL::Weight::frequencyClass):
+        (JSC::FTL::Weight::scaleToTotal):
+        * llvm/InitializeLLVM.cpp: Removed.
+        * llvm/InitializeLLVM.h: Removed.
+        * llvm/InitializeLLVMMac.cpp: Removed.
+        * llvm/InitializeLLVMPOSIX.cpp: Removed.
+        * llvm/InitializeLLVMPOSIX.h: Removed.
+        * llvm/LLVMAPI.cpp: Removed.
+        * llvm/LLVMAPI.h: Removed.
+        * llvm/LLVMAPIFunctions.h: Removed.
+        * llvm/LLVMHeaders.h: Removed.
+        * llvm/library/LLVMAnchor.cpp: Removed.
+        * llvm/library/LLVMExports.cpp: Removed.
+        * llvm/library/LLVMOverrides.cpp: Removed.
+        * llvm/library/config_llvm.h: Removed.
+
 2016-02-17  Benjamin Poulain  <bpoulain@apple.com>
 
         [JSC] Remove the overflow check on ArithAbs when possible
index 233023f..9e9a5bd 100644 (file)
                0F235BD517178E1C00690C7F /* FTLExitArgumentForOperand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F235BBF17178E1C00690C7F /* FTLExitArgumentForOperand.cpp */; };
                0F235BD617178E1C00690C7F /* FTLExitArgumentForOperand.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BC017178E1C00690C7F /* FTLExitArgumentForOperand.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F235BD717178E1C00690C7F /* FTLStackmapArgumentList.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BC117178E1C00690C7F /* FTLStackmapArgumentList.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0F235BD817178E1C00690C7F /* FTLExitThunkGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F235BC217178E1C00690C7F /* FTLExitThunkGenerator.cpp */; };
-               0F235BD917178E1C00690C7F /* FTLExitThunkGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BC317178E1C00690C7F /* FTLExitThunkGenerator.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F235BDA17178E1C00690C7F /* FTLExitValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F235BC417178E1C00690C7F /* FTLExitValue.cpp */; };
                0F235BDB17178E1C00690C7F /* FTLExitValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BC517178E1C00690C7F /* FTLExitValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F235BDC17178E1C00690C7F /* FTLOSRExit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F235BC617178E1C00690C7F /* FTLOSRExit.cpp */; };
                0F235BDD17178E1C00690C7F /* FTLOSRExit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BC717178E1C00690C7F /* FTLOSRExit.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0F235BDE17178E1C00690C7F /* FTLOSRExitCompilationInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BC817178E1C00690C7F /* FTLOSRExitCompilationInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F235BDF17178E1C00690C7F /* FTLOSRExitCompiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F235BC917178E1C00690C7F /* FTLOSRExitCompiler.cpp */; };
                0F235BE017178E1C00690C7F /* FTLOSRExitCompiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F235BCA17178E1C00690C7F /* FTLOSRExitCompiler.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F235BE117178E1C00690C7F /* FTLThunks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F235BCB17178E1C00690C7F /* FTLThunks.cpp */; };
                0F24E55617F0B71C00ABB217 /* InlineCallFrameSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F24E55417F0B71C00ABB217 /* InlineCallFrameSet.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F24E55817F74EDB00ABB217 /* ValueRecovery.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F24E55717F74EDB00ABB217 /* ValueRecovery.cpp */; };
                0F256C361627B0AD007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F256C341627B0AA007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h */; };
-               0F25F1AE181635F300522F39 /* FTLInlineCacheDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F25F1A7181635F300522F39 /* FTLInlineCacheDescriptor.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0F25F1AF181635F300522F39 /* FTLInlineCacheSize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F25F1A8181635F300522F39 /* FTLInlineCacheSize.cpp */; };
-               0F25F1B0181635F300522F39 /* FTLInlineCacheSize.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F25F1A9181635F300522F39 /* FTLInlineCacheSize.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F25F1B1181635F300522F39 /* FTLSlowPathCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F25F1AA181635F300522F39 /* FTLSlowPathCall.cpp */; };
                0F25F1B2181635F300522F39 /* FTLSlowPathCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F25F1AB181635F300522F39 /* FTLSlowPathCall.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F25F1B3181635F300522F39 /* FTLSlowPathCallKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F25F1AC181635F300522F39 /* FTLSlowPathCallKey.cpp */; };
                0F682FB319BCB36400FA3BAD /* DFGSSACalculator.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F682FB119BCB36400FA3BAD /* DFGSSACalculator.h */; };
                0F69CC88193AC60A0045759E /* DFGFrozenValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F69CC86193AC60A0045759E /* DFGFrozenValue.cpp */; };
                0F69CC89193AC60A0045759E /* DFGFrozenValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F69CC87193AC60A0045759E /* DFGFrozenValue.h */; };
-               0F6B1CB5185FC9E900845D97 /* FTLJSCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6B1CB3185FC9E900845D97 /* FTLJSCall.cpp */; };
-               0F6B1CB6185FC9E900845D97 /* FTLJSCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CB4185FC9E900845D97 /* FTLJSCall.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F6B1CB91861244C00845D97 /* ArityCheckMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CB71861244C00845D97 /* ArityCheckMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0F6B1CC51862C47800845D97 /* FTLUnwindInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6B1CC11862C47800845D97 /* FTLUnwindInfo.cpp */; };
-               0F6B1CC61862C47800845D97 /* FTLUnwindInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B1CC21862C47800845D97 /* FTLUnwindInfo.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F6B8AD81C4EDDA200969052 /* B3DuplicateTails.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6B8AD61C4EDDA200969052 /* B3DuplicateTails.cpp */; };
                0F6B8AD91C4EDDA200969052 /* B3DuplicateTails.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F6B8AD71C4EDDA200969052 /* B3DuplicateTails.h */; };
                0F6B8ADC1C4EFAC300969052 /* B3SSACalculator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F6B8ADA1C4EFAC300969052 /* B3SSACalculator.cpp */; };
                0F9B1DB41C0E42A500E5BFD2 /* FTLB3Output.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9B1DB31C0E42A500E5BFD2 /* FTLB3Output.cpp */; };
                0F9B1DB71C0E42BD00E5BFD2 /* FTLOSRExitHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9B1DB51C0E42BD00E5BFD2 /* FTLOSRExitHandle.cpp */; };
                0F9B1DB81C0E42BD00E5BFD2 /* FTLOSRExitHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9B1DB61C0E42BD00E5BFD2 /* FTLOSRExitHandle.h */; };
-               0F9C5E5E18E35F5E00D431C3 /* FTLDWARFRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9C5E5C18E35F5E00D431C3 /* FTLDWARFRegister.cpp */; };
-               0F9C5E5F18E35F5E00D431C3 /* FTLDWARFRegister.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9C5E5D18E35F5E00D431C3 /* FTLDWARFRegister.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F9D3370165DBB90005AD387 /* Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9D336E165DBB8D005AD387 /* Disassembler.cpp */; };
                0F9D339617FFC4E60073C2BC /* DFGFlushedAt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9D339417FFC4E60073C2BC /* DFGFlushedAt.cpp */; };
                0F9D339717FFC4E60073C2BC /* DFGFlushedAt.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9D339517FFC4E60073C2BC /* DFGFlushedAt.h */; };
-               0F9D339A1803ADB70073C2BC /* FTLStackMaps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9D33981803ADB70073C2BC /* FTLStackMaps.cpp */; };
-               0F9D339B1803ADB70073C2BC /* FTLStackMaps.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9D33991803ADB70073C2BC /* FTLStackMaps.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0F9D36941AE9CC33000D4DFB /* DFGCleanUpPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9D36921AE9CC33000D4DFB /* DFGCleanUpPhase.cpp */; };
                0F9D36951AE9CC33000D4DFB /* DFGCleanUpPhase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9D36931AE9CC33000D4DFB /* DFGCleanUpPhase.h */; };
                0F9D4C0C1C3E1C11006CD984 /* FTLExceptionTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F9D4C0A1C3E1C11006CD984 /* FTLExceptionTarget.cpp */; };
                0FCCAE4516D0CF7400D0C65B /* ParserError.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCCAE4316D0CF6E00D0C65B /* ParserError.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FCEFAAB1804C13E00472CE4 /* FTLSaveRestore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */; };
                0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FCEFAC11805D94E00472CE4 /* LLVMOverrides.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */; };
-               0FCEFAC31805E74000472CE4 /* LLVMExports.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */; };
-               0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */; };
-               0FCEFACC1805E75500472CE4 /* InitializeLLVMPOSIX.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */; };
-               0FCEFACE1805E75500472CE4 /* LLVMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC81805E75500472CE4 /* LLVMAPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FCEFACF1805E75500472CE4 /* LLVMAPIFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FCEFAD11805E77900472CE4 /* LLVMAPIFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */; };
-               0FCEFAD31805EDCC00472CE4 /* LLVMHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FCEFAD41805EDCC00472CE4 /* LLVMHeaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */; };
-               0FCEFAD71806174600472CE4 /* LLVMAnchor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */; };
-               0FCEFADA180620DA00472CE4 /* LLVMAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFAC81805E75500472CE4 /* LLVMAPI.h */; };
-               0FCEFADC18064A1400472CE4 /* config_llvm.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFADB18064A1400472CE4 /* config_llvm.h */; };
                0FCEFADF180738C000472CE4 /* FTLLocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFADD180738C000472CE4 /* FTLLocation.cpp */; };
                0FCEFAE0180738C000472CE4 /* FTLLocation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FCEFADE180738C000472CE4 /* FTLLocation.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FD1202F1A8AED12000F5280 /* FTLJSCallBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD1202D1A8AED12000F5280 /* FTLJSCallBase.cpp */; };
-               0FD120301A8AED12000F5280 /* FTLJSCallBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD1202E1A8AED12000F5280 /* FTLJSCallBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FD120331A8C85BD000F5280 /* FTLJSCallVarargs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD120311A8C85BD000F5280 /* FTLJSCallVarargs.cpp */; };
-               0FD120341A8C85BD000F5280 /* FTLJSCallVarargs.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD120321A8C85BD000F5280 /* FTLJSCallVarargs.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FD2C92416D01EE900C7803F /* StructureInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD2C92316D01EE900C7803F /* StructureInlines.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FD3C82614115D4000FD81CB /* DFGDriver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FD3C82014115CF800FD81CB /* DFGDriver.cpp */; };
                0FD3C82814115D4F00FD81CB /* DFGDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FD3C82214115D0E00FD81CB /* DFGDriver.h */; };
                0FE834181A6EF97B00D04847 /* PolymorphicCallStubRoutine.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE834161A6EF97B00D04847 /* PolymorphicCallStubRoutine.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FE8534B1723CDA500B618F5 /* DFGDesiredWatchpoints.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FE853491723CDA500B618F5 /* DFGDesiredWatchpoints.cpp */; };
                0FE8534C1723CDA500B618F5 /* DFGDesiredWatchpoints.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE8534A1723CDA500B618F5 /* DFGDesiredWatchpoints.h */; };
-               0FE95F7918B5694700B531FB /* FTLDataSection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FE95F7718B5694700B531FB /* FTLDataSection.cpp */; };
-               0FE95F7A18B5694700B531FB /* FTLDataSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FE95F7818B5694700B531FB /* FTLDataSection.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FEA0A08170513DB00BB722C /* FTLAbbreviations.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA09FD170513DB00BB722C /* FTLAbbreviations.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FEA0A09170513DB00BB722C /* FTLCapabilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA09FE170513DB00BB722C /* FTLCapabilities.cpp */; };
                0FEA0A0A170513DB00BB722C /* FTLCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA09FF170513DB00BB722C /* FTLCapabilities.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FEA0A0B170513DB00BB722C /* FTLCompile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA0A00170513DB00BB722C /* FTLCompile.cpp */; };
                0FEA0A0C170513DB00BB722C /* FTLCompile.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A01170513DB00BB722C /* FTLCompile.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FEA0A0D170513DB00BB722C /* FTLJITCode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA0A02170513DB00BB722C /* FTLJITCode.cpp */; };
                0FEA0A0E170513DB00BB722C /* FTLJITCode.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A03170513DB00BB722C /* FTLJITCode.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FEA0A0F170513DB00BB722C /* FTLLowerDFGToLLVM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA0A04170513DB00BB722C /* FTLLowerDFGToLLVM.cpp */; };
                0FEA0A10170513DB00BB722C /* FTLLowerDFGToLLVM.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A05170513DB00BB722C /* FTLLowerDFGToLLVM.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FEA0A11170513DB00BB722C /* FTLOutput.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A06170513DB00BB722C /* FTLOutput.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FEA0A12170513DB00BB722C /* FTLState.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A07170513DB00BB722C /* FTLState.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FEA0A161706BB9000BB722C /* FTLState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA0A151706BB9000BB722C /* FTLState.cpp */; };
                0FEA0A1C1708B00700BB722C /* FTLAbstractHeap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA0A171708B00700BB722C /* FTLAbstractHeap.cpp */; };
                0FEA0A1F1708B00700BB722C /* FTLAbstractHeapRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A1A1708B00700BB722C /* FTLAbstractHeapRepository.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FEA0A201708B00700BB722C /* FTLTypedPointer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A1B1708B00700BB722C /* FTLTypedPointer.h */; };
                0FEA0A231709606900BB722C /* FTLCommonValues.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A211709606900BB722C /* FTLCommonValues.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               0FEA0A241709606900BB722C /* FTLIntrinsicRepository.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A221709606900BB722C /* FTLIntrinsicRepository.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FEA0A271709623B00BB722C /* FTLCommonValues.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA0A251709623B00BB722C /* FTLCommonValues.cpp */; };
-               0FEA0A281709623B00BB722C /* FTLIntrinsicRepository.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA0A261709623B00BB722C /* FTLIntrinsicRepository.cpp */; };
-               0FEA0A2A1709629600BB722C /* FTLOutput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA0A291709629600BB722C /* FTLOutput.cpp */; };
                0FEA0A2C170B661900BB722C /* FTLFormattedValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A2B170B661900BB722C /* FTLFormattedValue.h */; settings = {ATTRIBUTES = (Private, ); }; };
                0FEA0A31170D40BF00BB722C /* DFGCommonData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEA0A2D170D40BF00BB722C /* DFGCommonData.cpp */; };
                0FEA0A32170D40BF00BB722C /* DFGCommonData.h in Headers */ = {isa = PBXBuildFile; fileRef = 0FEA0A2E170D40BF00BB722C /* DFGCommonData.h */; };
                2AABCDE718EF294200002096 /* GCLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AABCDE618EF294200002096 /* GCLogging.h */; settings = {ATTRIBUTES = (Private, ); }; };
                2AACE63C18CA5A0300ED0191 /* GCActivityCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AACE63A18CA5A0300ED0191 /* GCActivityCallback.cpp */; };
                2AACE63D18CA5A0300ED0191 /* GCActivityCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AACE63B18CA5A0300ED0191 /* GCActivityCallback.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               2AC922BB18A16182003CE0FB /* FTLDWARFDebugLineInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AC922B918A16182003CE0FB /* FTLDWARFDebugLineInfo.cpp */; };
-               2AC922BC18A16182003CE0FB /* FTLDWARFDebugLineInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AC922BA18A16182003CE0FB /* FTLDWARFDebugLineInfo.h */; };
                2AD2EDFB19799E38004D6478 /* EnumerationMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD2EDFA19799E38004D6478 /* EnumerationMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
                2AD8932B17E3868F00668276 /* HeapIterationScope.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD8932917E3868F00668276 /* HeapIterationScope.h */; };
                2ADFA26318EF3540004F9FCC /* GCLogging.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2ADFA26218EF3540004F9FCC /* GCLogging.cpp */; };
                623A37EC1B87A7C000754209 /* RegisterMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 623A37EB1B87A7BD00754209 /* RegisterMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
                627673231B680C1E00FD9F2E /* CallMode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 627673211B680C1E00FD9F2E /* CallMode.cpp */; };
                627673241B680C1E00FD9F2E /* CallMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 627673221B680C1E00FD9F2E /* CallMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               62774DAA1B8D4B190006F05A /* FTLJSTailCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62774DA81B8D4B190006F05A /* FTLJSTailCall.cpp */; };
-               62774DAB1B8D4B190006F05A /* FTLJSTailCall.h in Headers */ = {isa = PBXBuildFile; fileRef = 62774DA91B8D4B190006F05A /* FTLJSTailCall.h */; };
                62D2D38F1ADF103F000206C1 /* FunctionRareData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62D2D38D1ADF103F000206C1 /* FunctionRareData.cpp */; };
                62D2D3901ADF103F000206C1 /* FunctionRareData.h in Headers */ = {isa = PBXBuildFile; fileRef = 62D2D38E1ADF103F000206C1 /* FunctionRareData.h */; settings = {ATTRIBUTES = (Private, ); }; };
                62D755D41B84FB3D001801FA /* CallFrameShuffler64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 62D755D31B84FB39001801FA /* CallFrameShuffler64.cpp */; };
                79CFC6F01C33B10000C768EA /* LLIntPCRanges.h in Headers */ = {isa = PBXBuildFile; fileRef = 79CFC6EF1C33B10000C768EA /* LLIntPCRanges.h */; settings = {ATTRIBUTES = (Private, ); }; };
                79D5CD5A1C1106A900CECA07 /* SamplingProfiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79D5CD581C1106A900CECA07 /* SamplingProfiler.cpp */; };
                79D5CD5B1C1106A900CECA07 /* SamplingProfiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 79D5CD591C1106A900CECA07 /* SamplingProfiler.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               79DF66B01BF26A570001CF11 /* FTLExceptionHandlerManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79DF66AE1BF26A570001CF11 /* FTLExceptionHandlerManager.cpp */; };
-               79DF66B11BF26A570001CF11 /* FTLExceptionHandlerManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 79DF66AF1BF26A570001CF11 /* FTLExceptionHandlerManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
                79EE0BFF1B4AFB85000385C9 /* VariableEnvironment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79EE0BFD1B4AFB85000385C9 /* VariableEnvironment.cpp */; };
                79EE0C001B4AFB85000385C9 /* VariableEnvironment.h in Headers */ = {isa = PBXBuildFile; fileRef = 79EE0BFE1B4AFB85000385C9 /* VariableEnvironment.h */; settings = {ATTRIBUTES = (Private, ); }; };
                79F8FC1E1B9FED0F00CA66AB /* DFGMaximalFlushInsertionPhase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 79F8FC1C1B9FED0F00CA66AB /* DFGMaximalFlushInsertionPhase.cpp */; };
                99F1A6FE1B8E6D9400463B26 /* InspectorFrontendRouter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 99F1A6FC1B8E6D9400463B26 /* InspectorFrontendRouter.cpp */; };
                99F1A7011B98FBEC00463B26 /* InspectorFrontendRouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 99F1A7001B98FBEC00463B26 /* InspectorFrontendRouter.h */; settings = {ATTRIBUTES = (Private, ); }; };
                9E729407190F01A5001A91B5 /* InitializeThreading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E178636C0D9BEEC300D74E75 /* InitializeThreading.cpp */; };
-               9E729408190F021E001A91B5 /* InitializeLLVMPOSIX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */; };
                9E72940B190F0514001A91B5 /* BundlePath.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E72940A190F0514001A91B5 /* BundlePath.h */; };
                9EA5C7A1190F084200508EBE /* BundlePath.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9E729409190F0306001A91B5 /* BundlePath.mm */; };
-               9EA5C7A2190F088700508EBE /* InitializeLLVMMac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */; };
                A125846E1B45A36000CC7F6C /* IntlNumberFormatConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = A125846C1B45A36000CC7F6C /* IntlNumberFormatConstructor.lut.h */; };
                A125846F1B45A36000CC7F6C /* IntlNumberFormatPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = A125846D1B45A36000CC7F6C /* IntlNumberFormatPrototype.lut.h */; };
                A12BBFF21B044A8B00664B69 /* IntlObject.h in Headers */ = {isa = PBXBuildFile; fileRef = A12BBFF11B044A8B00664B69 /* IntlObject.h */; };
                A7E2EA6C0FB460CF00601F06 /* LiteralParser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7E2EA6A0FB460CF00601F06 /* LiteralParser.cpp */; };
                A7E5A3A71797432D00E893C0 /* CompilationResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7E5A3A51797432D00E893C0 /* CompilationResult.cpp */; };
                A7E5A3A81797432D00E893C0 /* CompilationResult.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E5A3A61797432D00E893C0 /* CompilationResult.h */; settings = {ATTRIBUTES = (Private, ); }; };
-               A7E5AB371799E4B200D2833D /* LLVMDisassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7E5AB331799E4B200D2833D /* LLVMDisassembler.cpp */; };
-               A7E5AB381799E4B200D2833D /* LLVMDisassembler.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E5AB341799E4B200D2833D /* LLVMDisassembler.h */; settings = {ATTRIBUTES = (Private, ); }; };
                A7E5AB391799E4B200D2833D /* UDis86Disassembler.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E5AB351799E4B200D2833D /* UDis86Disassembler.h */; settings = {ATTRIBUTES = (Private, ); }; };
                A7E5AB3A1799E4B200D2833D /* X86Disassembler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7E5AB361799E4B200D2833D /* X86Disassembler.cpp */; };
                A7F2996B17A0BB670010417A /* FTLFail.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7F2996917A0BB670010417A /* FTLFail.cpp */; };
                FE187A0D1C030D5C0038BBCA /* JITDivGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = FE187A0B1C0229230038BBCA /* JITDivGenerator.h */; };
                FE187A0E1C030D640038BBCA /* JITDivGenerator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE187A0A1C0229230038BBCA /* JITDivGenerator.cpp */; };
                FE187A0F1C030D6C0038BBCA /* SnippetOperand.h in Headers */ = {isa = PBXBuildFile; fileRef = FE187A0C1C02EBA70038BBCA /* SnippetOperand.h */; };
-               FE187A191C0E13E30038BBCA /* FTLCompileBinaryOp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE187A151C0E13C60038BBCA /* FTLCompileBinaryOp.cpp */; };
-               FE187A1A1C0E13E60038BBCA /* FTLCompileBinaryOp.h in Headers */ = {isa = PBXBuildFile; fileRef = FE187A161C0E13C60038BBCA /* FTLCompileBinaryOp.h */; };
                FE1C0FFD1B193E9800B53FCA /* Exception.h in Headers */ = {isa = PBXBuildFile; fileRef = FE1C0FFC1B193E9800B53FCA /* Exception.h */; settings = {ATTRIBUTES = (Private, ); }; };
                FE1C0FFF1B194FD100B53FCA /* Exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE1C0FFE1B194FD100B53FCA /* Exception.cpp */; };
                FE20CE9D15F04A9500DF3430 /* LLIntCLoop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE20CE9B15F04A9500DF3430 /* LLIntCLoop.cpp */; };
                        remoteGlobalIDString = 0F93274E1C20BCBA00CF6564;
                        remoteInfo = dynbench;
                };
-               0FCEFABC1805D66300472CE4 /* PBXContainerItemProxy */ = {
-                       isa = PBXContainerItemProxy;
-                       containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
-                       proxyType = 1;
-                       remoteGlobalIDString = 0FCEFAB51805D61600472CE4;
-                       remoteInfo = llvmForJSC;
-               };
                0FEC85B01BDB5D8F0080FF74 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 0867D690FE84028FC02AAC07 /* Project object */;
                0F235BBF17178E1C00690C7F /* FTLExitArgumentForOperand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLExitArgumentForOperand.cpp; path = ftl/FTLExitArgumentForOperand.cpp; sourceTree = "<group>"; };
                0F235BC017178E1C00690C7F /* FTLExitArgumentForOperand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLExitArgumentForOperand.h; path = ftl/FTLExitArgumentForOperand.h; sourceTree = "<group>"; };
                0F235BC117178E1C00690C7F /* FTLStackmapArgumentList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLStackmapArgumentList.h; path = ftl/FTLStackmapArgumentList.h; sourceTree = "<group>"; };
-               0F235BC217178E1C00690C7F /* FTLExitThunkGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLExitThunkGenerator.cpp; path = ftl/FTLExitThunkGenerator.cpp; sourceTree = "<group>"; };
-               0F235BC317178E1C00690C7F /* FTLExitThunkGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLExitThunkGenerator.h; path = ftl/FTLExitThunkGenerator.h; sourceTree = "<group>"; };
                0F235BC417178E1C00690C7F /* FTLExitValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLExitValue.cpp; path = ftl/FTLExitValue.cpp; sourceTree = "<group>"; };
                0F235BC517178E1C00690C7F /* FTLExitValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLExitValue.h; path = ftl/FTLExitValue.h; sourceTree = "<group>"; };
                0F235BC617178E1C00690C7F /* FTLOSRExit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLOSRExit.cpp; path = ftl/FTLOSRExit.cpp; sourceTree = "<group>"; };
                0F235BC717178E1C00690C7F /* FTLOSRExit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLOSRExit.h; path = ftl/FTLOSRExit.h; sourceTree = "<group>"; };
-               0F235BC817178E1C00690C7F /* FTLOSRExitCompilationInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLOSRExitCompilationInfo.h; path = ftl/FTLOSRExitCompilationInfo.h; sourceTree = "<group>"; };
                0F235BC917178E1C00690C7F /* FTLOSRExitCompiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLOSRExitCompiler.cpp; path = ftl/FTLOSRExitCompiler.cpp; sourceTree = "<group>"; };
                0F235BCA17178E1C00690C7F /* FTLOSRExitCompiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLOSRExitCompiler.h; path = ftl/FTLOSRExitCompiler.h; sourceTree = "<group>"; };
                0F235BCB17178E1C00690C7F /* FTLThunks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLThunks.cpp; path = ftl/FTLThunks.cpp; sourceTree = "<group>"; };
                0F24E55417F0B71C00ABB217 /* InlineCallFrameSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InlineCallFrameSet.h; sourceTree = "<group>"; };
                0F24E55717F74EDB00ABB217 /* ValueRecovery.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValueRecovery.cpp; sourceTree = "<group>"; };
                0F256C341627B0AA007F2783 /* DFGCallArrayAllocatorSlowPathGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCallArrayAllocatorSlowPathGenerator.h; path = dfg/DFGCallArrayAllocatorSlowPathGenerator.h; sourceTree = "<group>"; };
-               0F25F1A7181635F300522F39 /* FTLInlineCacheDescriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLInlineCacheDescriptor.h; path = ftl/FTLInlineCacheDescriptor.h; sourceTree = "<group>"; };
-               0F25F1A8181635F300522F39 /* FTLInlineCacheSize.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLInlineCacheSize.cpp; path = ftl/FTLInlineCacheSize.cpp; sourceTree = "<group>"; };
-               0F25F1A9181635F300522F39 /* FTLInlineCacheSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLInlineCacheSize.h; path = ftl/FTLInlineCacheSize.h; sourceTree = "<group>"; };
                0F25F1AA181635F300522F39 /* FTLSlowPathCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLSlowPathCall.cpp; path = ftl/FTLSlowPathCall.cpp; sourceTree = "<group>"; };
                0F25F1AB181635F300522F39 /* FTLSlowPathCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLSlowPathCall.h; path = ftl/FTLSlowPathCall.h; sourceTree = "<group>"; };
                0F25F1AC181635F300522F39 /* FTLSlowPathCallKey.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLSlowPathCallKey.cpp; path = ftl/FTLSlowPathCallKey.cpp; sourceTree = "<group>"; };
                0F682FB119BCB36400FA3BAD /* DFGSSACalculator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGSSACalculator.h; path = dfg/DFGSSACalculator.h; sourceTree = "<group>"; };
                0F69CC86193AC60A0045759E /* DFGFrozenValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGFrozenValue.cpp; path = dfg/DFGFrozenValue.cpp; sourceTree = "<group>"; };
                0F69CC87193AC60A0045759E /* DFGFrozenValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGFrozenValue.h; path = dfg/DFGFrozenValue.h; sourceTree = "<group>"; };
-               0F6B1CB3185FC9E900845D97 /* FTLJSCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLJSCall.cpp; path = ftl/FTLJSCall.cpp; sourceTree = "<group>"; };
-               0F6B1CB4185FC9E900845D97 /* FTLJSCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLJSCall.h; path = ftl/FTLJSCall.h; sourceTree = "<group>"; };
                0F6B1CB71861244C00845D97 /* ArityCheckMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ArityCheckMode.h; sourceTree = "<group>"; };
-               0F6B1CC11862C47800845D97 /* FTLUnwindInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLUnwindInfo.cpp; path = ftl/FTLUnwindInfo.cpp; sourceTree = "<group>"; };
-               0F6B1CC21862C47800845D97 /* FTLUnwindInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLUnwindInfo.h; path = ftl/FTLUnwindInfo.h; sourceTree = "<group>"; };
                0F6B8AD61C4EDDA200969052 /* B3DuplicateTails.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3DuplicateTails.cpp; path = b3/B3DuplicateTails.cpp; sourceTree = "<group>"; };
                0F6B8AD71C4EDDA200969052 /* B3DuplicateTails.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = B3DuplicateTails.h; path = b3/B3DuplicateTails.h; sourceTree = "<group>"; };
                0F6B8ADA1C4EFAC300969052 /* B3SSACalculator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = B3SSACalculator.cpp; path = b3/B3SSACalculator.cpp; sourceTree = "<group>"; };
                0F9B1DB31C0E42A500E5BFD2 /* FTLB3Output.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLB3Output.cpp; path = ftl/FTLB3Output.cpp; sourceTree = "<group>"; };
                0F9B1DB51C0E42BD00E5BFD2 /* FTLOSRExitHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLOSRExitHandle.cpp; path = ftl/FTLOSRExitHandle.cpp; sourceTree = "<group>"; };
                0F9B1DB61C0E42BD00E5BFD2 /* FTLOSRExitHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLOSRExitHandle.h; path = ftl/FTLOSRExitHandle.h; sourceTree = "<group>"; };
-               0F9C5E5C18E35F5E00D431C3 /* FTLDWARFRegister.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLDWARFRegister.cpp; path = ftl/FTLDWARFRegister.cpp; sourceTree = "<group>"; };
-               0F9C5E5D18E35F5E00D431C3 /* FTLDWARFRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLDWARFRegister.h; path = ftl/FTLDWARFRegister.h; sourceTree = "<group>"; };
                0F9D336E165DBB8D005AD387 /* Disassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Disassembler.cpp; path = disassembler/Disassembler.cpp; sourceTree = "<group>"; };
                0F9D339417FFC4E60073C2BC /* DFGFlushedAt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGFlushedAt.cpp; path = dfg/DFGFlushedAt.cpp; sourceTree = "<group>"; };
                0F9D339517FFC4E60073C2BC /* DFGFlushedAt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGFlushedAt.h; path = dfg/DFGFlushedAt.h; sourceTree = "<group>"; };
-               0F9D33981803ADB70073C2BC /* FTLStackMaps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLStackMaps.cpp; path = ftl/FTLStackMaps.cpp; sourceTree = "<group>"; };
-               0F9D33991803ADB70073C2BC /* FTLStackMaps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLStackMaps.h; path = ftl/FTLStackMaps.h; sourceTree = "<group>"; };
                0F9D36921AE9CC33000D4DFB /* DFGCleanUpPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGCleanUpPhase.cpp; path = dfg/DFGCleanUpPhase.cpp; sourceTree = "<group>"; };
                0F9D36931AE9CC33000D4DFB /* DFGCleanUpPhase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCleanUpPhase.h; path = dfg/DFGCleanUpPhase.h; sourceTree = "<group>"; };
                0F9D4C0A1C3E1C11006CD984 /* FTLExceptionTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLExceptionTarget.cpp; path = ftl/FTLExceptionTarget.cpp; sourceTree = "<group>"; };
                0FCCAE4316D0CF6E00D0C65B /* ParserError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParserError.h; sourceTree = "<group>"; };
                0FCEFAA91804C13E00472CE4 /* FTLSaveRestore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLSaveRestore.cpp; path = ftl/FTLSaveRestore.cpp; sourceTree = "<group>"; };
                0FCEFAAA1804C13E00472CE4 /* FTLSaveRestore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLSaveRestore.h; path = ftl/FTLSaveRestore.h; sourceTree = "<group>"; };
-               0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVM.h; path = llvm/InitializeLLVM.h; sourceTree = "<group>"; };
-               0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libllvmForJSC.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
                0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = LLVMForJSC.xcconfig; sourceTree = "<group>"; };
-               0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMOverrides.cpp; sourceTree = "<group>"; };
-               0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMExports.cpp; sourceTree = "<group>"; };
-               0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVM.cpp; path = llvm/InitializeLLVM.cpp; sourceTree = "<group>"; };
-               0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVMPOSIX.cpp; path = llvm/InitializeLLVMPOSIX.cpp; sourceTree = "<group>"; };
-               0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = InitializeLLVMPOSIX.h; path = llvm/InitializeLLVMPOSIX.h; sourceTree = "<group>"; };
-               0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLVMAPI.cpp; path = llvm/LLVMAPI.cpp; sourceTree = "<group>"; };
-               0FCEFAC81805E75500472CE4 /* LLVMAPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMAPI.h; path = llvm/LLVMAPI.h; sourceTree = "<group>"; };
-               0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMAPIFunctions.h; path = llvm/LLVMAPIFunctions.h; sourceTree = "<group>"; };
-               0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMHeaders.h; path = llvm/LLVMHeaders.h; sourceTree = "<group>"; };
-               0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LLVMAnchor.cpp; sourceTree = "<group>"; };
-               0FCEFADB18064A1400472CE4 /* config_llvm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config_llvm.h; sourceTree = "<group>"; };
                0FCEFADD180738C000472CE4 /* FTLLocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLLocation.cpp; path = ftl/FTLLocation.cpp; sourceTree = "<group>"; };
                0FCEFADE180738C000472CE4 /* FTLLocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLLocation.h; path = ftl/FTLLocation.h; sourceTree = "<group>"; };
-               0FD1202D1A8AED12000F5280 /* FTLJSCallBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLJSCallBase.cpp; path = ftl/FTLJSCallBase.cpp; sourceTree = "<group>"; };
-               0FD1202E1A8AED12000F5280 /* FTLJSCallBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLJSCallBase.h; path = ftl/FTLJSCallBase.h; sourceTree = "<group>"; };
-               0FD120311A8C85BD000F5280 /* FTLJSCallVarargs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLJSCallVarargs.cpp; path = ftl/FTLJSCallVarargs.cpp; sourceTree = "<group>"; };
-               0FD120321A8C85BD000F5280 /* FTLJSCallVarargs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLJSCallVarargs.h; path = ftl/FTLJSCallVarargs.h; sourceTree = "<group>"; };
                0FD2C92316D01EE900C7803F /* StructureInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StructureInlines.h; sourceTree = "<group>"; };
                0FD3C82014115CF800FD81CB /* DFGDriver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDriver.cpp; path = dfg/DFGDriver.cpp; sourceTree = "<group>"; };
                0FD3C82214115D0E00FD81CB /* DFGDriver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDriver.h; path = dfg/DFGDriver.h; sourceTree = "<group>"; };
                0FE834161A6EF97B00D04847 /* PolymorphicCallStubRoutine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PolymorphicCallStubRoutine.h; sourceTree = "<group>"; };
                0FE853491723CDA500B618F5 /* DFGDesiredWatchpoints.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGDesiredWatchpoints.cpp; path = dfg/DFGDesiredWatchpoints.cpp; sourceTree = "<group>"; };
                0FE8534A1723CDA500B618F5 /* DFGDesiredWatchpoints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGDesiredWatchpoints.h; path = dfg/DFGDesiredWatchpoints.h; sourceTree = "<group>"; };
-               0FE95F7718B5694700B531FB /* FTLDataSection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLDataSection.cpp; path = ftl/FTLDataSection.cpp; sourceTree = "<group>"; };
-               0FE95F7818B5694700B531FB /* FTLDataSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLDataSection.h; path = ftl/FTLDataSection.h; sourceTree = "<group>"; };
-               0FEA09FD170513DB00BB722C /* FTLAbbreviations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLAbbreviations.h; path = ftl/FTLAbbreviations.h; sourceTree = "<group>"; };
                0FEA09FE170513DB00BB722C /* FTLCapabilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLCapabilities.cpp; path = ftl/FTLCapabilities.cpp; sourceTree = "<group>"; };
                0FEA09FF170513DB00BB722C /* FTLCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLCapabilities.h; path = ftl/FTLCapabilities.h; sourceTree = "<group>"; };
-               0FEA0A00170513DB00BB722C /* FTLCompile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLCompile.cpp; path = ftl/FTLCompile.cpp; sourceTree = "<group>"; };
                0FEA0A01170513DB00BB722C /* FTLCompile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLCompile.h; path = ftl/FTLCompile.h; sourceTree = "<group>"; };
                0FEA0A02170513DB00BB722C /* FTLJITCode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLJITCode.cpp; path = ftl/FTLJITCode.cpp; sourceTree = "<group>"; };
                0FEA0A03170513DB00BB722C /* FTLJITCode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLJITCode.h; path = ftl/FTLJITCode.h; sourceTree = "<group>"; };
                0FEA0A04170513DB00BB722C /* FTLLowerDFGToLLVM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLLowerDFGToLLVM.cpp; path = ftl/FTLLowerDFGToLLVM.cpp; sourceTree = "<group>"; };
                0FEA0A05170513DB00BB722C /* FTLLowerDFGToLLVM.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLLowerDFGToLLVM.h; path = ftl/FTLLowerDFGToLLVM.h; sourceTree = "<group>"; };
-               0FEA0A06170513DB00BB722C /* FTLOutput.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLOutput.h; path = ftl/FTLOutput.h; sourceTree = "<group>"; };
                0FEA0A07170513DB00BB722C /* FTLState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLState.h; path = ftl/FTLState.h; sourceTree = "<group>"; };
                0FEA0A151706BB9000BB722C /* FTLState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLState.cpp; path = ftl/FTLState.cpp; sourceTree = "<group>"; };
                0FEA0A171708B00700BB722C /* FTLAbstractHeap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLAbstractHeap.cpp; path = ftl/FTLAbstractHeap.cpp; sourceTree = "<group>"; };
                0FEA0A1A1708B00700BB722C /* FTLAbstractHeapRepository.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLAbstractHeapRepository.h; path = ftl/FTLAbstractHeapRepository.h; sourceTree = "<group>"; };
                0FEA0A1B1708B00700BB722C /* FTLTypedPointer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLTypedPointer.h; path = ftl/FTLTypedPointer.h; sourceTree = "<group>"; };
                0FEA0A211709606900BB722C /* FTLCommonValues.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLCommonValues.h; path = ftl/FTLCommonValues.h; sourceTree = "<group>"; };
-               0FEA0A221709606900BB722C /* FTLIntrinsicRepository.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLIntrinsicRepository.h; path = ftl/FTLIntrinsicRepository.h; sourceTree = "<group>"; };
                0FEA0A251709623B00BB722C /* FTLCommonValues.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLCommonValues.cpp; path = ftl/FTLCommonValues.cpp; sourceTree = "<group>"; };
-               0FEA0A261709623B00BB722C /* FTLIntrinsicRepository.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLIntrinsicRepository.cpp; path = ftl/FTLIntrinsicRepository.cpp; sourceTree = "<group>"; };
-               0FEA0A291709629600BB722C /* FTLOutput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLOutput.cpp; path = ftl/FTLOutput.cpp; sourceTree = "<group>"; };
                0FEA0A2B170B661900BB722C /* FTLFormattedValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLFormattedValue.h; path = ftl/FTLFormattedValue.h; sourceTree = "<group>"; };
                0FEA0A2D170D40BF00BB722C /* DFGCommonData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGCommonData.cpp; path = dfg/DFGCommonData.cpp; sourceTree = "<group>"; };
                0FEA0A2E170D40BF00BB722C /* DFGCommonData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGCommonData.h; path = dfg/DFGCommonData.h; sourceTree = "<group>"; };
                2AABCDE618EF294200002096 /* GCLogging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCLogging.h; sourceTree = "<group>"; };
                2AACE63A18CA5A0300ED0191 /* GCActivityCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GCActivityCallback.cpp; sourceTree = "<group>"; };
                2AACE63B18CA5A0300ED0191 /* GCActivityCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCActivityCallback.h; sourceTree = "<group>"; };
-               2AC922B918A16182003CE0FB /* FTLDWARFDebugLineInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLDWARFDebugLineInfo.cpp; path = ftl/FTLDWARFDebugLineInfo.cpp; sourceTree = "<group>"; };
-               2AC922BA18A16182003CE0FB /* FTLDWARFDebugLineInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLDWARFDebugLineInfo.h; path = ftl/FTLDWARFDebugLineInfo.h; sourceTree = "<group>"; };
                2AD2EDFA19799E38004D6478 /* EnumerationMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EnumerationMode.h; sourceTree = "<group>"; };
                2AD8932917E3868F00668276 /* HeapIterationScope.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HeapIterationScope.h; sourceTree = "<group>"; };
                2ADFA26218EF3540004F9FCC /* GCLogging.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GCLogging.cpp; sourceTree = "<group>"; };
                623A37EB1B87A7BD00754209 /* RegisterMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegisterMap.h; sourceTree = "<group>"; };
                627673211B680C1E00FD9F2E /* CallMode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CallMode.cpp; sourceTree = "<group>"; };
                627673221B680C1E00FD9F2E /* CallMode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallMode.h; sourceTree = "<group>"; };
-               62774DA81B8D4B190006F05A /* FTLJSTailCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLJSTailCall.cpp; path = ftl/FTLJSTailCall.cpp; sourceTree = "<group>"; };
-               62774DA91B8D4B190006F05A /* FTLJSTailCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLJSTailCall.h; path = ftl/FTLJSTailCall.h; sourceTree = "<group>"; };
                62A9A29E1B0BED4800BD54CA /* DFGLazyNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGLazyNode.cpp; path = dfg/DFGLazyNode.cpp; sourceTree = "<group>"; };
                62A9A29F1B0BED4800BD54CA /* DFGLazyNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DFGLazyNode.h; path = dfg/DFGLazyNode.h; sourceTree = "<group>"; };
                62D2D38D1ADF103F000206C1 /* FunctionRareData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionRareData.cpp; sourceTree = "<group>"; };
                79CFC6EF1C33B10000C768EA /* LLIntPCRanges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLIntPCRanges.h; path = llint/LLIntPCRanges.h; sourceTree = "<group>"; };
                79D5CD581C1106A900CECA07 /* SamplingProfiler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SamplingProfiler.cpp; sourceTree = "<group>"; };
                79D5CD591C1106A900CECA07 /* SamplingProfiler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SamplingProfiler.h; sourceTree = "<group>"; };
-               79DF66AE1BF26A570001CF11 /* FTLExceptionHandlerManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLExceptionHandlerManager.cpp; path = ftl/FTLExceptionHandlerManager.cpp; sourceTree = "<group>"; };
-               79DF66AF1BF26A570001CF11 /* FTLExceptionHandlerManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLExceptionHandlerManager.h; path = ftl/FTLExceptionHandlerManager.h; sourceTree = "<group>"; };
                79EE0BFD1B4AFB85000385C9 /* VariableEnvironment.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VariableEnvironment.cpp; sourceTree = "<group>"; };
                79EE0BFE1B4AFB85000385C9 /* VariableEnvironment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VariableEnvironment.h; sourceTree = "<group>"; };
                79F8FC1C1B9FED0F00CA66AB /* DFGMaximalFlushInsertionPhase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DFGMaximalFlushInsertionPhase.cpp; path = dfg/DFGMaximalFlushInsertionPhase.cpp; sourceTree = "<group>"; };
                9B4954E81A6640DB002815A6 /* ParserFunctionInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ParserFunctionInfo.h; sourceTree = "<group>"; };
                9E729409190F0306001A91B5 /* BundlePath.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BundlePath.mm; sourceTree = "<group>"; };
                9E72940A190F0514001A91B5 /* BundlePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BundlePath.h; sourceTree = "<group>"; };
-               9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = InitializeLLVMMac.cpp; path = llvm/InitializeLLVMMac.cpp; sourceTree = "<group>"; };
                A125846C1B45A36000CC7F6C /* IntlNumberFormatConstructor.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntlNumberFormatConstructor.lut.h; sourceTree = "<group>"; };
                A125846D1B45A36000CC7F6C /* IntlNumberFormatPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntlNumberFormatPrototype.lut.h; sourceTree = "<group>"; };
                A12BBFF11B044A8B00664B69 /* IntlObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntlObject.h; sourceTree = "<group>"; };
                A7E2EA6A0FB460CF00601F06 /* LiteralParser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LiteralParser.cpp; sourceTree = "<group>"; };
                A7E5A3A51797432D00E893C0 /* CompilationResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CompilationResult.cpp; sourceTree = "<group>"; };
                A7E5A3A61797432D00E893C0 /* CompilationResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CompilationResult.h; sourceTree = "<group>"; };
-               A7E5AB331799E4B200D2833D /* LLVMDisassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLVMDisassembler.cpp; path = disassembler/LLVMDisassembler.cpp; sourceTree = "<group>"; };
-               A7E5AB341799E4B200D2833D /* LLVMDisassembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LLVMDisassembler.h; path = disassembler/LLVMDisassembler.h; sourceTree = "<group>"; };
                A7E5AB351799E4B200D2833D /* UDis86Disassembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UDis86Disassembler.h; path = disassembler/UDis86Disassembler.h; sourceTree = "<group>"; };
                A7E5AB361799E4B200D2833D /* X86Disassembler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = X86Disassembler.cpp; path = disassembler/X86Disassembler.cpp; sourceTree = "<group>"; };
                A7F2996917A0BB670010417A /* FTLFail.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLFail.cpp; path = ftl/FTLFail.cpp; sourceTree = "<group>"; };
                FE187A0A1C0229230038BBCA /* JITDivGenerator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITDivGenerator.cpp; sourceTree = "<group>"; };
                FE187A0B1C0229230038BBCA /* JITDivGenerator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITDivGenerator.h; sourceTree = "<group>"; };
                FE187A0C1C02EBA70038BBCA /* SnippetOperand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SnippetOperand.h; sourceTree = "<group>"; };
-               FE187A151C0E13C60038BBCA /* FTLCompileBinaryOp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FTLCompileBinaryOp.cpp; path = ftl/FTLCompileBinaryOp.cpp; sourceTree = "<group>"; };
-               FE187A161C0E13C60038BBCA /* FTLCompileBinaryOp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FTLCompileBinaryOp.h; path = ftl/FTLCompileBinaryOp.h; sourceTree = "<group>"; };
                FE1C0FFC1B193E9800B53FCA /* Exception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Exception.h; sourceTree = "<group>"; };
                FE1C0FFE1B194FD100B53FCA /* Exception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Exception.cpp; sourceTree = "<group>"; };
                FE20CE9B15F04A9500DF3430 /* LLIntCLoop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLIntCLoop.cpp; path = llint/LLIntCLoop.cpp; sourceTree = "<group>"; };
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
-               0FCEFAB31805D61600472CE4 /* Frameworks */ = {
-                       isa = PBXFrameworksBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
                0FEC85A21BDB5CF10080FF74 /* Frameworks */ = {
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                                932F5BD90822A1C700736975 /* JavaScriptCore.framework */,
                                932F5BE10822A1C700736975 /* jsc */,
                                0FF922CF14F46B130041A24E /* JSCLLIntOffsetsExtractor */,
-                               0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */,
                                141211200A48793C00480255 /* minidom */,
                                14BD59BF0A3E8F9000BAF59C /* testapi */,
                                0FEC85AD1BDB5CF10080FF74 /* testb3 */,
                                1429D77A0ED20D7300B89619 /* interpreter */,
                                1429D92C0ED22D7000B89619 /* jit */,
                                0F46809C14BA7F4D00BFE272 /* llint */,
-                               0FCEFAAD1805CA4400472CE4 /* llvm */,
                                7E39D8370EC3A388003AF11A /* parser */,
                                034768DFFF38A50411DB9C8B /* Products */,
                                95AB831A0DA42C6900BC83F3 /* profiler */,
                        name = llint;
                        sourceTree = "<group>";
                };
-               0FCEFAAD1805CA4400472CE4 /* llvm */ = {
-                       isa = PBXGroup;
-                       children = (
-                               0FCEFABF1805D94100472CE4 /* library */,
-                               0FCEFAC41805E75500472CE4 /* InitializeLLVM.cpp */,
-                               0FCEFAAE1805CA6D00472CE4 /* InitializeLLVM.h */,
-                               9EA5C7A0190F05D200508EBE /* InitializeLLVMMac.cpp */,
-                               0FCEFAC51805E75500472CE4 /* InitializeLLVMPOSIX.cpp */,
-                               0FCEFAC61805E75500472CE4 /* InitializeLLVMPOSIX.h */,
-                               0FCEFAC71805E75500472CE4 /* LLVMAPI.cpp */,
-                               0FCEFAC81805E75500472CE4 /* LLVMAPI.h */,
-                               0FCEFAC91805E75500472CE4 /* LLVMAPIFunctions.h */,
-                               0FCEFAD21805EDCC00472CE4 /* LLVMHeaders.h */,
-                       );
-                       name = llvm;
-                       sourceTree = "<group>";
-               };
-               0FCEFABF1805D94100472CE4 /* library */ = {
-                       isa = PBXGroup;
-                       children = (
-                               0FCEFADB18064A1400472CE4 /* config_llvm.h */,
-                               0FCEFAD61806174600472CE4 /* LLVMAnchor.cpp */,
-                               0FCEFAC21805E74000472CE4 /* LLVMExports.cpp */,
-                               0FCEFAC01805D94100472CE4 /* LLVMOverrides.cpp */,
-                       );
-                       name = library;
-                       path = llvm/library;
-                       sourceTree = "<group>";
-               };
                0FEA09FC1705137F00BB722C /* ftl */ = {
                        isa = PBXGroup;
                        children = (
                                0FDB2CC7173DA51E007B3C1B /* FTLAbbreviatedTypes.h */,
-                               0FEA09FD170513DB00BB722C /* FTLAbbreviations.h */,
                                0FEA0A171708B00700BB722C /* FTLAbstractHeap.cpp */,
                                0FEA0A181708B00700BB722C /* FTLAbstractHeap.h */,
                                0FEA0A191708B00700BB722C /* FTLAbstractHeapRepository.cpp */,
                                0FEA09FF170513DB00BB722C /* FTLCapabilities.h */,
                                0FEA0A251709623B00BB722C /* FTLCommonValues.cpp */,
                                0FEA0A211709606900BB722C /* FTLCommonValues.h */,
-                               0FEA0A00170513DB00BB722C /* FTLCompile.cpp */,
                                0FEA0A01170513DB00BB722C /* FTLCompile.h */,
-                               FE187A151C0E13C60038BBCA /* FTLCompileBinaryOp.cpp */,
-                               FE187A161C0E13C60038BBCA /* FTLCompileBinaryOp.h */,
-                               0FE95F7718B5694700B531FB /* FTLDataSection.cpp */,
-                               0FE95F7818B5694700B531FB /* FTLDataSection.h */,
-                               2AC922B918A16182003CE0FB /* FTLDWARFDebugLineInfo.cpp */,
-                               2AC922BA18A16182003CE0FB /* FTLDWARFDebugLineInfo.h */,
-                               0F9C5E5C18E35F5E00D431C3 /* FTLDWARFRegister.cpp */,
-                               0F9C5E5D18E35F5E00D431C3 /* FTLDWARFRegister.h */,
-                               79DF66AE1BF26A570001CF11 /* FTLExceptionHandlerManager.cpp */,
-                               79DF66AF1BF26A570001CF11 /* FTLExceptionHandlerManager.h */,
                                0F9D4C0A1C3E1C11006CD984 /* FTLExceptionTarget.cpp */,
                                0F9D4C0B1C3E1C11006CD984 /* FTLExceptionTarget.h */,
                                0F235BBD17178E1C00690C7F /* FTLExitArgument.cpp */,
                                0F235BC017178E1C00690C7F /* FTLExitArgumentForOperand.h */,
                                0F2B9CEE19D0BAC100B1D1B5 /* FTLExitPropertyValue.cpp */,
                                0F2B9CEF19D0BAC100B1D1B5 /* FTLExitPropertyValue.h */,
-                               0F235BC217178E1C00690C7F /* FTLExitThunkGenerator.cpp */,
-                               0F235BC317178E1C00690C7F /* FTLExitThunkGenerator.h */,
                                0F2B9CF019D0BAC100B1D1B5 /* FTLExitTimeObjectMaterialization.cpp */,
                                0F2B9CF119D0BAC100B1D1B5 /* FTLExitTimeObjectMaterialization.h */,
                                0F235BC417178E1C00690C7F /* FTLExitValue.cpp */,
                                0FD8A31517D51F2200CA2C40 /* FTLForOSREntryJITCode.cpp */,
                                0FD8A31617D51F2200CA2C40 /* FTLForOSREntryJITCode.h */,
                                A78A977C179738D5009DF744 /* FTLGeneratedFunction.h */,
-                               0F25F1A7181635F300522F39 /* FTLInlineCacheDescriptor.h */,
-                               0F25F1A8181635F300522F39 /* FTLInlineCacheSize.cpp */,
-                               0F25F1A9181635F300522F39 /* FTLInlineCacheSize.h */,
-                               0FEA0A261709623B00BB722C /* FTLIntrinsicRepository.cpp */,
-                               0FEA0A221709606900BB722C /* FTLIntrinsicRepository.h */,
                                0FEA0A02170513DB00BB722C /* FTLJITCode.cpp */,
                                0FEA0A03170513DB00BB722C /* FTLJITCode.h */,
                                A78A977D179738D5009DF744 /* FTLJITFinalizer.cpp */,
                                A78A977E179738D5009DF744 /* FTLJITFinalizer.h */,
-                               0F6B1CB3185FC9E900845D97 /* FTLJSCall.cpp */,
-                               0F6B1CB4185FC9E900845D97 /* FTLJSCall.h */,
-                               0FD1202D1A8AED12000F5280 /* FTLJSCallBase.cpp */,
-                               0FD1202E1A8AED12000F5280 /* FTLJSCallBase.h */,
-                               0FD120311A8C85BD000F5280 /* FTLJSCallVarargs.cpp */,
-                               0FD120321A8C85BD000F5280 /* FTLJSCallVarargs.h */,
-                               62774DA81B8D4B190006F05A /* FTLJSTailCall.cpp */,
-                               62774DA91B8D4B190006F05A /* FTLJSTailCall.h */,
                                0FB4FB701BC843140025CA5A /* FTLLazySlowPath.cpp */,
                                0FB4FB711BC843140025CA5A /* FTLLazySlowPath.h */,
                                0FB4FB721BC843140025CA5A /* FTLLazySlowPathCall.h */,
                                0FD8A31817D51F2200CA2C40 /* FTLOSREntry.h */,
                                0F235BC617178E1C00690C7F /* FTLOSRExit.cpp */,
                                0F235BC717178E1C00690C7F /* FTLOSRExit.h */,
-                               0F235BC817178E1C00690C7F /* FTLOSRExitCompilationInfo.h */,
                                0F235BC917178E1C00690C7F /* FTLOSRExitCompiler.cpp */,
                                0F235BCA17178E1C00690C7F /* FTLOSRExitCompiler.h */,
                                0F9B1DB51C0E42BD00E5BFD2 /* FTLOSRExitHandle.cpp */,
                                0F9B1DB61C0E42BD00E5BFD2 /* FTLOSRExitHandle.h */,
-                               0FEA0A291709629600BB722C /* FTLOutput.cpp */,
-                               0FEA0A06170513DB00BB722C /* FTLOutput.h */,
                                0F9D4C0E1C3E2C74006CD984 /* FTLPatchpointExceptionHandle.cpp */,
                                0F9D4C0F1C3E2C74006CD984 /* FTLPatchpointExceptionHandle.h */,
                                0F485325187DFDEC0083B687 /* FTLRecoveryOpcode.cpp */,
                                0F25F1AC181635F300522F39 /* FTLSlowPathCallKey.cpp */,
                                0F25F1AD181635F300522F39 /* FTLSlowPathCallKey.h */,
                                0F235BC117178E1C00690C7F /* FTLStackmapArgumentList.h */,
-                               0F9D33981803ADB70073C2BC /* FTLStackMaps.cpp */,
-                               0F9D33991803ADB70073C2BC /* FTLStackMaps.h */,
                                0FEA0A151706BB9000BB722C /* FTLState.cpp */,
                                0FEA0A07170513DB00BB722C /* FTLState.h */,
                                A7FCC26C17A0B6AA00786D1A /* FTLSwitchCase.h */,
                                0F235BCB17178E1C00690C7F /* FTLThunks.cpp */,
                                0F235BCC17178E1C00690C7F /* FTLThunks.h */,
                                0FEA0A1B1708B00700BB722C /* FTLTypedPointer.h */,
-                               0F6B1CC11862C47800845D97 /* FTLUnwindInfo.cpp */,
-                               0F6B1CC21862C47800845D97 /* FTLUnwindInfo.h */,
                                0FDB2CC8173DA51E007B3C1B /* FTLValueFromBlock.h */,
                                0F5A6281188C98D40072C9DF /* FTLValueRange.cpp */,
                                0F5A6282188C98D40072C9DF /* FTLValueRange.h */,
                                65C0284F171795E200351E35 /* ARMv7Disassembler.cpp */,
                                0F9D336E165DBB8D005AD387 /* Disassembler.cpp */,
                                0FF4272F158EBD44004CB9FF /* Disassembler.h */,
-                               A7E5AB331799E4B200D2833D /* LLVMDisassembler.cpp */,
-                               A7E5AB341799E4B200D2833D /* LLVMDisassembler.h */,
                                0FF42730158EBD44004CB9FF /* UDis86Disassembler.cpp */,
                                A7E5AB351799E4B200D2833D /* UDis86Disassembler.h */,
                                A7E5AB361799E4B200D2833D /* X86Disassembler.cpp */,
 /* End PBXGroup section */
 
 /* Begin PBXHeadersBuildPhase section */
-               0FCEFAB41805D61600472CE4 /* Headers */ = {
-                       isa = PBXHeadersBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               0FCEFADC18064A1400472CE4 /* config_llvm.h in Headers */,
-                               0FCEFADA180620DA00472CE4 /* LLVMAPI.h in Headers */,
-                               0FCEFAD11805E77900472CE4 /* LLVMAPIFunctions.h in Headers */,
-                               0FCEFAD41805EDCC00472CE4 /* LLVMHeaders.h in Headers */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
                144005C70A5338C60005F061 /* Headers */ = {
                        isa = PBXHeadersBuildPhase;
                        buildActionMask = 2147483647;
                        files = (
                                0FFA549816B8835300B3A982 /* A64DOpcode.h in Headers */,
                                0F1FE51C1922A3BC006987C5 /* AbortReason.h in Headers */,
-                               FE187A1A1C0E13E60038BBCA /* FTLCompileBinaryOp.h in Headers */,
                                860161E30F3A83C100F84710 /* AbstractMacroAssembler.h in Headers */,
                                0F55F0F514D1063C00AC7649 /* AbstractPC.h in Headers */,
                                0FEC856E1BDACDC70080FF74 /* AirAllocateStack.h in Headers */,
                                0F6183311C45BF070072450B /* AirLowerMacros.h in Headers */,
                                0FEC85771BDACDC70080FF74 /* AirFrequentedBlock.h in Headers */,
                                0FEC85791BDACDC70080FF74 /* AirGenerate.h in Headers */,
-                               79DF66B11BF26A570001CF11 /* FTLExceptionHandlerManager.h in Headers */,
                                0FEC857A1BDACDC70080FF74 /* AirGenerationContext.h in Headers */,
                                0FEC857C1BDACDC70080FF74 /* AirHandleCalleeSaves.h in Headers */,
                                0FEC857E1BDACDC70080FF74 /* AirInsertionSet.h in Headers */,
                                A7A8AF3917ADB5F3005AB174 /* Float64Array.h in Headers */,
                                0F24E54317EA9F5900ABB217 /* FPRInfo.h in Headers */,
                                0FDB2CC9173DA520007B3C1B /* FTLAbbreviatedTypes.h in Headers */,
-                               0FEA0A08170513DB00BB722C /* FTLAbbreviations.h in Headers */,
                                0FEA0A1D1708B00700BB722C /* FTLAbstractHeap.h in Headers */,
                                0FEA0A1F1708B00700BB722C /* FTLAbstractHeapRepository.h in Headers */,
                                0F485328187DFDEC0083B687 /* FTLAvailableRecovery.h in Headers */,
                                0FEA0A0A170513DB00BB722C /* FTLCapabilities.h in Headers */,
                                0FEA0A231709606900BB722C /* FTLCommonValues.h in Headers */,
                                0FEA0A0C170513DB00BB722C /* FTLCompile.h in Headers */,
-                               0FE95F7A18B5694700B531FB /* FTLDataSection.h in Headers */,
-                               2AC922BC18A16182003CE0FB /* FTLDWARFDebugLineInfo.h in Headers */,
-                               0F9C5E5F18E35F5E00D431C3 /* FTLDWARFRegister.h in Headers */,
                                0F235BD417178E1C00690C7F /* FTLExitArgument.h in Headers */,
                                0F338E0C1BF0276C0013C88F /* B3Compilation.h in Headers */,
                                0F235BD617178E1C00690C7F /* FTLExitArgumentForOperand.h in Headers */,
                                0F235BD717178E1C00690C7F /* FTLStackmapArgumentList.h in Headers */,
                                0F2B9CF519D0BAC100B1D1B5 /* FTLExitPropertyValue.h in Headers */,
-                               0F235BD917178E1C00690C7F /* FTLExitThunkGenerator.h in Headers */,
                                0F2B9CF719D0BAC100B1D1B5 /* FTLExitTimeObjectMaterialization.h in Headers */,
                                0F235BDB17178E1C00690C7F /* FTLExitValue.h in Headers */,
                                0FE0E4AE1C24C94A002E17B6 /* AirTmpWidth.h in Headers */,
                                0FEA0A2C170B661900BB722C /* FTLFormattedValue.h in Headers */,
                                0FD8A31A17D51F2200CA2C40 /* FTLForOSREntryJITCode.h in Headers */,
                                A78A977F179738D5009DF744 /* FTLGeneratedFunction.h in Headers */,
-                               0F25F1AE181635F300522F39 /* FTLInlineCacheDescriptor.h in Headers */,
-                               0F25F1B0181635F300522F39 /* FTLInlineCacheSize.h in Headers */,
-                               0FEA0A241709606900BB722C /* FTLIntrinsicRepository.h in Headers */,
                                0FEA0A0E170513DB00BB722C /* FTLJITCode.h in Headers */,
                                A78A9781179738D5009DF744 /* FTLJITFinalizer.h in Headers */,
-                               0F6B1CB6185FC9E900845D97 /* FTLJSCall.h in Headers */,
-                               0FD120301A8AED12000F5280 /* FTLJSCallBase.h in Headers */,
-                               0FD120341A8C85BD000F5280 /* FTLJSCallVarargs.h in Headers */,
-                               62774DAB1B8D4B190006F05A /* FTLJSTailCall.h in Headers */,
                                0FB4FB741BC843140025CA5A /* FTLLazySlowPath.h in Headers */,
                                0FB4FB751BC843140025CA5A /* FTLLazySlowPathCall.h in Headers */,
                                0F8F2B96172E04A3007DBDA5 /* FTLLink.h in Headers */,
                                0F338E101BF0276C0013C88F /* B3MoveConstants.h in Headers */,
                                0FD8A31C17D51F2200CA2C40 /* FTLOSREntry.h in Headers */,
                                0F235BDD17178E1C00690C7F /* FTLOSRExit.h in Headers */,
-                               0F235BDE17178E1C00690C7F /* FTLOSRExitCompilationInfo.h in Headers */,
                                0F235BE017178E1C00690C7F /* FTLOSRExitCompiler.h in Headers */,
-                               0FEA0A11170513DB00BB722C /* FTLOutput.h in Headers */,
                                0F48532A187DFDEC0083B687 /* FTLRecoveryOpcode.h in Headers */,
                                0FCEFAAC1804C13E00472CE4 /* FTLSaveRestore.h in Headers */,
                                0F25F1B2181635F300522F39 /* FTLSlowPathCall.h in Headers */,
                                0F25F1B4181635F300522F39 /* FTLSlowPathCallKey.h in Headers */,
-                               0F9D339B1803ADB70073C2BC /* FTLStackMaps.h in Headers */,
                                0FEA0A12170513DB00BB722C /* FTLState.h in Headers */,
                                A7FCC26D17A0B6AA00786D1A /* FTLSwitchCase.h in Headers */,
                                0F235BE217178E1C00690C7F /* FTLThunks.h in Headers */,
                                0FEA0A201708B00700BB722C /* FTLTypedPointer.h in Headers */,
-                               0F6B1CC61862C47800845D97 /* FTLUnwindInfo.h in Headers */,
                                0FDB2CCA173DA523007B3C1B /* FTLValueFromBlock.h in Headers */,
                                0F5A6284188C98D40072C9DF /* FTLValueRange.h in Headers */,
                                0F0332C618B53FA9005F979A /* FTLWeight.h in Headers */,
                                0F0A75231B94BFA900110660 /* InferredType.h in Headers */,
                                0FFC92121B94D4DF0071DD66 /* InferredTypeTable.h in Headers */,
                                0FF8BDEB1AD4CF7100DFE884 /* InferredValue.h in Headers */,
-                               0FCEFAB01805CA6D00472CE4 /* InitializeLLVM.h in Headers */,
-                               0FCEFACC1805E75500472CE4 /* InitializeLLVMPOSIX.h in Headers */,
                                BC18C4100E16F5CD00B34460 /* InitializeThreading.h in Headers */,
                                A513E5B8185B8BD3007E95AD /* InjectedScript.h in Headers */,
                                A514B2C3185A684400F3C7CB /* InjectedScriptBase.h in Headers */,
                                FED287B215EC9A5700DA8161 /* LLIntOpcode.h in Headers */,
                                0F4680A514BA7F8D00BFE272 /* LLIntSlowPaths.h in Headers */,
                                0F0B839D14BCF46600885B4F /* LLIntThunks.h in Headers */,
-                               0FCEFACE1805E75500472CE4 /* LLVMAPI.h in Headers */,
-                               0FCEFACF1805E75500472CE4 /* LLVMAPIFunctions.h in Headers */,
-                               A7E5AB381799E4B200D2833D /* LLVMDisassembler.h in Headers */,
-                               0FCEFAD31805EDCC00472CE4 /* LLVMHeaders.h in Headers */,
                                142E3139134FF0A600AFADB5 /* Local.h in Headers */,
                                142E313A134FF0A600AFADB5 /* LocalScope.h in Headers */,
                                BC18C4370E16F5CD00B34460 /* Lookup.h in Headers */,
                        productReference = 0F9327591C20BCBA00CF6564 /* dynbench */;
                        productType = "com.apple.product-type.tool";
                };
-               0FCEFAB51805D61600472CE4 /* llvmForJSC */ = {
-                       isa = PBXNativeTarget;
-                       buildConfigurationList = 0FCEFAB71805D61600472CE4 /* Build configuration list for PBXNativeTarget "llvmForJSC" */;
-                       buildPhases = (
-                               0FCEFAB21805D61600472CE4 /* Sources */,
-                               0FCEFAB31805D61600472CE4 /* Frameworks */,
-                               0FCEFAB41805D61600472CE4 /* Headers */,
-                       );
-                       buildRules = (
-                       );
-                       dependencies = (
-                       );
-                       name = llvmForJSC;
-                       productName = llvmForJSC;
-                       productReference = 0FCEFAB61805D61600472CE4 /* libllvmForJSC.dylib */;
-                       productType = "com.apple.product-type.library.dynamic";
-               };
                0FEC85941BDB5CF10080FF74 /* testb3 */ = {
                        isa = PBXNativeTarget;
                        buildConfigurationList = 0FEC85A81BDB5CF10080FF74 /* Build configuration list for PBXNativeTarget "testb3" */;
                                3732811A17FCD235004AD519 /* Postprocess Headers */,
                                932F5B910822A1C700736975 /* Sources */,
                                932F5BD20822A1C700736975 /* Frameworks */,
-                               0FCEFAD91806191800472CE4 /* Copy LLVM Library Into Framework */,
                                5D29D8BE0E9860B400C3D2D0 /* Check For Weak VTables and Externals */,
                                3713F014142905240036387F /* Check For Inappropriate Objective-C Class Names */,
                                A55DEAA416703DF7003DB841 /* Check For Inappropriate Macros in External Headers */,
                        buildRules = (
                        );
                        dependencies = (
-                               0FCEFABD1805D66300472CE4 /* PBXTargetDependency */,
                                65788AAD18B40A7B00C189FF /* PBXTargetDependency */,
                                65FB3F7E09D11EF300F49DEB /* PBXTargetDependency */,
                        );
                        targets = (
                                932F5BE30822A1C700736975 /* All */,
                                932F5B3E0822A1C700736975 /* JavaScriptCore */,
-                               0FCEFAB51805D61600472CE4 /* llvmForJSC */,
                                0F4680A914BA7FD900BFE272 /* LLInt Offsets */,
                                65FB3F6609D11E9100F49DEB /* Derived Sources */,
                                0FF922C314F46B130041A24E /* JSCLLIntOffsetsExtractor */,
                        shellPath = /bin/sh;
                        shellScript = "set -e\n\nmkdir -p \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/\"\n\n/usr/bin/env ruby \"${SRCROOT}/offlineasm/generate_offset_extractor.rb\" \"-I${BUILT_PRODUCTS_DIR}/DerivedSources/JavaScriptCore\" \"${SRCROOT}/llint/LowLevelInterpreter.asm\" \"${BUILT_PRODUCTS_DIR}/LLIntOffsets/LLIntDesiredOffsets.h\" \"X86,X86_64,ARMv7,ARMv7s,ARM64,C_LOOP\"\n";
                };
-               0FCEFAD91806191800472CE4 /* Copy LLVM Library Into Framework */ = {
-                       isa = PBXShellScriptBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                       );
-                       inputPaths = (
-                               "$(BUILT_PRODUCTS_DIR)/libllvmForJSC.dylib",
-                       );
-                       name = "Copy LLVM Library Into Framework";
-                       outputPaths = (
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-                       shellPath = /bin/sh;
-                       shellScript = "set -e\n\nif [[ $ENABLE_FTL_JIT != \"ENABLE_FTL_JIT\" ]]\nthen\n    exit 0\nfi\n\nif [[ ${CONFIGURATION:=Debug} != \"Production\" ]]\nthen\n    # Copy the llvmForJSC library into the framework.\n    ditto \"${BUILT_PRODUCTS_DIR}/libllvmForJSC.dylib\" \"${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Libraries/libllvmForJSC.dylib\"\nfi\n\nif [[ $PLATFORM_NAME != \"macosx\" ]]\nthen\n    exit 0\nfi\n\nif [ ! -e \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Libraries\" ]\nthen\n    ln -fs \"Versions/Current/Libraries\" \"${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Libraries\"\nfi";
-               };
                1A02D9A81B34A882000D1522 /* Add Symlink in /System/Library/PrivateFrameworks */ = {
                        isa = PBXShellScriptBuildPhase;
                        buildActionMask = 8;
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
-               0FCEFAB21805D61600472CE4 /* Sources */ = {
-                       isa = PBXSourcesBuildPhase;
-                       buildActionMask = 2147483647;
-                       files = (
-                               0FCEFAD71806174600472CE4 /* LLVMAnchor.cpp in Sources */,
-                               0FCEFAC31805E74000472CE4 /* LLVMExports.cpp in Sources */,
-                               0FCEFAC11805D94E00472CE4 /* LLVMOverrides.cpp in Sources */,
-                       );
-                       runOnlyForDeploymentPostprocessing = 0;
-               };
                0FEC85951BDB5CF10080FF74 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                                0FB17662196B8F9E0091052A /* DFGPureValue.cpp in Sources */,
                                0F3A1BF91A9ECB7D000DE01A /* DFGPutStackSinkingPhase.cpp in Sources */,
                                0F2FCCFB18A60070001A27F8 /* DFGSafepoint.cpp in Sources */,
-                               FE187A191C0E13E30038BBCA /* FTLCompileBinaryOp.cpp in Sources */,
                                86EC9DD21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp in Sources */,
                                86880F1F14328BB900B08D42 /* DFGSpeculativeJIT32_64.cpp in Sources */,
                                86880F4D14353B2100B08D42 /* DFGSpeculativeJIT64.cpp in Sources */,
                                0FEA0A09170513DB00BB722C /* FTLCapabilities.cpp in Sources */,
                                0F338E1B1BF286EA0013C88F /* B3BlockInsertionSet.cpp in Sources */,
                                0FEA0A271709623B00BB722C /* FTLCommonValues.cpp in Sources */,
-                               0FEA0A0B170513DB00BB722C /* FTLCompile.cpp in Sources */,
-                               0FE95F7918B5694700B531FB /* FTLDataSection.cpp in Sources */,
-                               2AC922BB18A16182003CE0FB /* FTLDWARFDebugLineInfo.cpp in Sources */,
-                               0F9C5E5E18E35F5E00D431C3 /* FTLDWARFRegister.cpp in Sources */,
                                0F235BD317178E1C00690C7F /* FTLExitArgument.cpp in Sources */,
                                0F235BD517178E1C00690C7F /* FTLExitArgumentForOperand.cpp in Sources */,
                                0F2B9CF419D0BAC100B1D1B5 /* FTLExitPropertyValue.cpp in Sources */,
-                               0F235BD817178E1C00690C7F /* FTLExitThunkGenerator.cpp in Sources */,
                                0F2B9CF619D0BAC100B1D1B5 /* FTLExitTimeObjectMaterialization.cpp in Sources */,
                                0F235BDA17178E1C00690C7F /* FTLExitValue.cpp in Sources */,
                                A7F2996B17A0BB670010417A /* FTLFail.cpp in Sources */,
                                0FD8A31917D51F2200CA2C40 /* FTLForOSREntryJITCode.cpp in Sources */,
-                               0F25F1AF181635F300522F39 /* FTLInlineCacheSize.cpp in Sources */,
-                               0FEA0A281709623B00BB722C /* FTLIntrinsicRepository.cpp in Sources */,
                                0FEA0A0D170513DB00BB722C /* FTLJITCode.cpp in Sources */,
                                0F6B8AE21C4EFE1700969052 /* B3BreakCriticalEdges.cpp in Sources */,
                                A78A9780179738D5009DF744 /* FTLJITFinalizer.cpp in Sources */,
-                               0F6B1CB5185FC9E900845D97 /* FTLJSCall.cpp in Sources */,
-                               0FD1202F1A8AED12000F5280 /* FTLJSCallBase.cpp in Sources */,
                                0F725CAF1C506D3B00AD943A /* B3FoldPathConstants.cpp in Sources */,
-                               0FD120331A8C85BD000F5280 /* FTLJSCallVarargs.cpp in Sources */,
-                               62774DAA1B8D4B190006F05A /* FTLJSTailCall.cpp in Sources */,
                                FE187A0E1C030D640038BBCA /* JITDivGenerator.cpp in Sources */,
                                0FB4FB731BC843140025CA5A /* FTLLazySlowPath.cpp in Sources */,
                                0F8F2B95172E04A0007DBDA5 /* FTLLink.cpp in Sources */,
                                0FD8A31B17D51F2200CA2C40 /* FTLOSREntry.cpp in Sources */,
                                0F235BDC17178E1C00690C7F /* FTLOSRExit.cpp in Sources */,
                                0F235BDF17178E1C00690C7F /* FTLOSRExitCompiler.cpp in Sources */,
-                               0FEA0A2A1709629600BB722C /* FTLOutput.cpp in Sources */,
                                A55165D21BDF0B98003B75C1 /* InspectorScriptProfilerAgent.cpp in Sources */,
                                0F485329187DFDEC0083B687 /* FTLRecoveryOpcode.cpp in Sources */,
                                0FCEFAAB1804C13E00472CE4 /* FTLSaveRestore.cpp in Sources */,
                                0F25F1B1181635F300522F39 /* FTLSlowPathCall.cpp in Sources */,
                                0F338DF11BE93AD10013C88F /* B3StackmapValue.cpp in Sources */,
                                0F25F1B3181635F300522F39 /* FTLSlowPathCallKey.cpp in Sources */,
-                               0F9D339A1803ADB70073C2BC /* FTLStackMaps.cpp in Sources */,
                                4319DA031C1BE40A001D260B /* B3LowerMacrosAfterOptimizations.cpp in Sources */,
                                0FEA0A161706BB9000BB722C /* FTLState.cpp in Sources */,
                                0F235BE117178E1C00690C7F /* FTLThunks.cpp in Sources */,
-                               0F6B1CC51862C47800845D97 /* FTLUnwindInfo.cpp in Sources */,
                                0F5A6283188C98D40072C9DF /* FTLValueRange.cpp in Sources */,
                                2A83638918D7D0FE0000EBCC /* FullGCActivityCallback.cpp in Sources */,
                                147F39CB107EC37600427A48 /* FunctionConstructor.cpp in Sources */,
                                0F0A75221B94BFA900110660 /* InferredType.cpp in Sources */,
                                0FFC92111B94D4DF0071DD66 /* InferredTypeTable.cpp in Sources */,
                                0FF8BDEA1AD4CF7100DFE884 /* InferredValue.cpp in Sources */,
-                               0FCEFACA1805E75500472CE4 /* InitializeLLVM.cpp in Sources */,
-                               9EA5C7A2190F088700508EBE /* InitializeLLVMMac.cpp in Sources */,
-                               9E729408190F021E001A91B5 /* InitializeLLVMPOSIX.cpp in Sources */,
                                9E729407190F01A5001A91B5 /* InitializeThreading.cpp in Sources */,
                                A513E5B7185B8BD3007E95AD /* InjectedScript.cpp in Sources */,
                                A514B2C2185A684400F3C7CB /* InjectedScriptBase.cpp in Sources */,
                                0F2B66FE17B6B5AB00A7AE3F /* JSTypedArrays.cpp in Sources */,
                                534C457E1BC72549007476A7 /* JSTypedArrayViewConstructor.cpp in Sources */,
                                DEA7E2441BBC677200D78440 /* JSTypedArrayViewPrototype.cpp in Sources */,
-                               79DF66B01BF26A570001CF11 /* FTLExceptionHandlerManager.cpp in Sources */,
                                86E3C61A167BABEE006D760A /* JSValue.mm in Sources */,
                                14BD5A320A3E91F600BAF59C /* JSValueRef.cpp in Sources */,
                                86E3C61C167BABEE006D760A /* JSVirtualMachine.mm in Sources */,
                                0F4680A814BA7FAB00BFE272 /* LLIntExceptions.cpp in Sources */,
                                0F4680A414BA7F8D00BFE272 /* LLIntSlowPaths.cpp in Sources */,
                                0F0B839C14BCF46300885B4F /* LLIntThunks.cpp in Sources */,
-                               0FCEFACD1805E75500472CE4 /* LLVMAPI.cpp in Sources */,
-                               A7E5AB371799E4B200D2833D /* LLVMDisassembler.cpp in Sources */,
                                14469DDE107EC7E700650446 /* Lookup.cpp in Sources */,
                                0F4680CC14BBB17A00BFE272 /* LowLevelInterpreter.cpp in Sources */,
                                A5AB49DC1BEC8082007020FB /* PerGlobalObjectWrapperWorld.cpp in Sources */,
                        target = 0F93274E1C20BCBA00CF6564 /* dynbench */;
                        targetProxy = 0F93275C1C20BF3A00CF6564 /* PBXContainerItemProxy */;
                };
-               0FCEFABD1805D66300472CE4 /* PBXTargetDependency */ = {
-                       isa = PBXTargetDependency;
-                       target = 0FCEFAB51805D61600472CE4 /* llvmForJSC */;
-                       targetProxy = 0FCEFABC1805D66300472CE4 /* PBXContainerItemProxy */;
-               };
                0FEC85B11BDB5D8F0080FF74 /* PBXTargetDependency */ = {
                        isa = PBXTargetDependency;
                        target = 0FEC85941BDB5CF10080FF74 /* testb3 */;
                        };
                        name = Production;
                };
-               0FCEFAB81805D61600472CE4 /* Debug */ = {
-                       isa = XCBuildConfiguration;
-                       baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
-                       buildSettings = {
-                       };
-                       name = Debug;
-               };
-               0FCEFAB91805D61600472CE4 /* Release */ = {
-                       isa = XCBuildConfiguration;
-                       baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
-                       buildSettings = {
-                       };
-                       name = Release;
-               };
-               0FCEFABA1805D61600472CE4 /* Profiling */ = {
-                       isa = XCBuildConfiguration;
-                       baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
-                       buildSettings = {
-                       };
-                       name = Profiling;
-               };
-               0FCEFABB1805D61600472CE4 /* Production */ = {
-                       isa = XCBuildConfiguration;
-                       baseConfigurationReference = 0FCEFABE1805D86900472CE4 /* LLVMForJSC.xcconfig */;
-                       buildSettings = {
-                       };
-                       name = Production;
-               };
                0FEC85A91BDB5CF10080FF74 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        baseConfigurationReference = BC021BF2136900C300FC5467 /* ToolExecutable.xcconfig */;
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Production;
                };
-               0FCEFAB71805D61600472CE4 /* Build configuration list for PBXNativeTarget "llvmForJSC" */ = {
-                       isa = XCConfigurationList;
-                       buildConfigurations = (
-                               0FCEFAB81805D61600472CE4 /* Debug */,
-                               0FCEFAB91805D61600472CE4 /* Release */,
-                               0FCEFABA1805D61600472CE4 /* Profiling */,
-                               0FCEFABB1805D61600472CE4 /* Production */,
-                       );
-                       defaultConfigurationIsVisible = 0;
-                       defaultConfigurationName = Production;
-               };
                0FEC85A81BDB5CF10080FF74 /* Build configuration list for PBXNativeTarget "testb3" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (
index 5d89fd8..01a0b35 100644 (file)
 
 namespace JSC { namespace DFG {
 
-// We are in the middle of a transition from LLVM to B3 as the backend for the FTL. This flag will go
-// away once that transition is finished. For now, we enable B3 by default but we still have some old
-// LLVM code that hasn't been removed yet.
-#define FTL_USES_B3 1
-
 struct Node;
 
 typedef uint32_t BlockIndex;
index c7d892b..0a55c49 100644 (file)
@@ -89,7 +89,6 @@
 #include "FTLLink.h"
 #include "FTLLowerDFGToLLVM.h"
 #include "FTLState.h"
-#include "InitializeLLVM.h"
 #endif
 
 namespace JSC { namespace DFG {
@@ -225,7 +224,7 @@ void Plan::compileInThread(LongLivedState& longLivedState, ThreadData* threadDat
         }
         dataLog("Optimized ", codeBlockName, " using ", mode, " with ", pathName, " into ", finalizer ? finalizer->codeSize() : 0, " bytes in ", after - before, " ms");
         if (path == FTLPath)
-            dataLog(" (DFG: ", m_timeBeforeFTL - before, ", LLVM: ", after - m_timeBeforeFTL, ")");
+            dataLog(" (DFG: ", m_timeBeforeFTL - before, ", B3: ", after - m_timeBeforeFTL, ")");
         dataLog(".\n");
     }
 }
@@ -440,7 +439,7 @@ Plan::CompilationPath Plan::compileInThreadImpl(LongLivedState& longLivedState)
         if (Options::useMovHintRemoval())
             performMovHintRemoval(dfg);
         performCleanUp(dfg);
-        performDCE(dfg); // We rely on this to kill dead code that won't be recognized as dead by LLVM.
+        performDCE(dfg); // We rely on this to kill dead code that won't be recognized as dead by B3.
         if (Options::useCopyBarrierOptimization())
             performCopyBarrierOptimization(dfg);
         performStackLayout(dfg);
@@ -454,31 +453,15 @@ Plan::CompilationPath Plan::compileInThreadImpl(LongLivedState& longLivedState)
         }
 
         dumpAndVerifyGraph(dfg, "Graph just before FTL lowering:", shouldDumpDisassembly(mode));
-        
-#if HAVE(LLVM) && !FTL_USES_B3
-        bool haveLLVM;
-#endif
+
+        // Flash a safepoint in case the GC wants some action.
         Safepoint::Result safepointResult;
         {
             GraphSafepoint safepoint(dfg, safepointResult);
-#if HAVE(LLVM) && !FTL_USES_B3
-            haveLLVM = initializeLLVM();
-#endif
         }
         if (safepointResult.didGetCancelled())
             return CancelPath;
 
-#if HAVE(LLVM) && !FTL_USES_B3
-        if (!haveLLVM) {
-            if (Options::ftlCrashesIfCantInitializeLLVM()) {
-                dataLog("LLVM can't be initialized.\n");
-                CRASH();
-            }
-            finalizer = std::make_unique<FailedFinalizer>(*this);
-            return FailPath;
-        }
-#endif
-
         FTL::State state(dfg);
         FTL::lowerDFGToLLVM(state);
         
@@ -504,13 +487,6 @@ Plan::CompilationPath Plan::compileInThreadImpl(LongLivedState& longLivedState)
             return FTLPath;
         }
 
-#if !FTL_USES_B3
-        if (state.jitCode->stackmaps.stackSize() > Options::llvmMaxStackSize()) {
-            FTL::fail(state);
-            return FTLPath;
-        }
-#endif
-
         FTL::link(state);
         
         if (state.allocationFailed) {
@@ -690,7 +666,7 @@ HashMap<CString, double> Plan::compileTimeStats()
         result.add("DFG Compile Time", totalDFGCompileTime);
         result.add("FTL Compile Time", totalFTLCompileTime);
         result.add("FTL (DFG) Compile Time", totalFTLDFGCompileTime);
-        result.add("FTL (LLVM) Compile Time", totalFTLLLVMCompileTime);
+        result.add("FTL (B3) Compile Time", totalFTLLLVMCompileTime);
     }
     return result;
 }
index 900b87e..34a10aa 100644 (file)
@@ -34,7 +34,7 @@
 
 namespace JSC {
 
-bool tryToDisassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out, InstructionSubsetHint)
+bool tryToDisassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out)
 {
     A64DOpcode arm64Opcode;
 
index 66acf4c..bfb4895 100644 (file)
@@ -33,7 +33,7 @@
 
 namespace JSC {
 
-bool tryToDisassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out, InstructionSubsetHint)
+bool tryToDisassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out)
 {
     ARMv7DOpcode armOpcode;
 
index 72f87b6..788a6c3 100644 (file)
@@ -37,9 +37,9 @@
 
 namespace JSC {
 
-void disassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out, InstructionSubsetHint subsetHint)
+void disassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out)
 {
-    if (tryToDisassemble(codePtr, size, prefix, out, subsetHint))
+    if (tryToDisassemble(codePtr, size, prefix, out))
         return;
     
     out.printf("%sdisassembly not available for range %p...%p\n", prefix, codePtr.executableAddress(), static_cast<char*>(codePtr.executableAddress()) + size);
@@ -67,7 +67,6 @@ public:
     MacroAssemblerCodeRef codeRef;
     size_t size { 0 };
     const char* prefix { nullptr };
-    InstructionSubsetHint subsetHint { MacroAssemblerSubset };
 };
 
 class AsynchronousDisassembler {
@@ -107,9 +106,7 @@ private:
             }
 
             dataLog(task->header);
-            disassemble(
-                task->codeRef.code(), task->size, task->prefix, WTF::dataFile(),
-                task->subsetHint);
+            disassemble(task->codeRef.code(), task->size, task->prefix, WTF::dataFile());
         }
     }
     
@@ -131,15 +128,13 @@ AsynchronousDisassembler& asynchronousDisassembler()
 } // anonymous namespace
 
 void disassembleAsynchronously(
-    const CString& header, const MacroAssemblerCodeRef& codeRef, size_t size, const char* prefix,
-    InstructionSubsetHint subsetHint)
+    const CString& header, const MacroAssemblerCodeRef& codeRef, size_t size, const char* prefix)
 {
     std::unique_ptr<DisassemblyTask> task = std::make_unique<DisassemblyTask>();
     task->header = strdup(header.data()); // Yuck! We need this because CString does racy refcounting.
     task->codeRef = codeRef;
     task->size = size;
     task->prefix = prefix;
-    task->subsetHint = subsetHint;
     
     asynchronousDisassembler().enqueue(WTFMove(task));
 }
index 9276f6a..ed47db8 100644 (file)
@@ -36,12 +36,10 @@ namespace JSC {
 class MacroAssemblerCodePtr;
 class MacroAssemblerCodeRef;
 
-enum InstructionSubsetHint { MacroAssemblerSubset, LLVMSubset };
-
 #if ENABLE(DISASSEMBLER)
-bool tryToDisassemble(const MacroAssemblerCodePtr&, size_t, const char* prefix, PrintStream&, InstructionSubsetHint = MacroAssemblerSubset);
+bool tryToDisassemble(const MacroAssemblerCodePtr&, size_t, const char* prefix, PrintStream&);
 #else
-inline bool tryToDisassemble(const MacroAssemblerCodePtr&, size_t, const char*, PrintStream&, InstructionSubsetHint = MacroAssemblerSubset)
+inline bool tryToDisassemble(const MacroAssemblerCodePtr&, size_t, const char*, PrintStream&)
 {
     return false;
 }
@@ -49,13 +47,12 @@ inline bool tryToDisassemble(const MacroAssemblerCodePtr&, size_t, const char*,
 
 // Prints either the disassembly, or a line of text indicating that disassembly failed and
 // the range of machine code addresses.
-void disassemble(const MacroAssemblerCodePtr&, size_t, const char* prefix, PrintStream& out, InstructionSubsetHint = MacroAssemblerSubset);
+void disassemble(const MacroAssemblerCodePtr&, size_t, const char* prefix, PrintStream& out);
 
 // Asynchronous disassembly. This happens on another thread, and calls the provided
 // callback when the disassembly is done.
 void disassembleAsynchronously(
-    const CString& header, const MacroAssemblerCodeRef&, size_t, const char* prefix,
-    InstructionSubsetHint = MacroAssemblerSubset);
+    const CString& header, const MacroAssemblerCodeRef&, size_t, const char* prefix);
 
 JS_EXPORT_PRIVATE void waitForAsynchronousDisassembly();
 
diff --git a/Source/JavaScriptCore/disassembler/LLVMDisassembler.cpp b/Source/JavaScriptCore/disassembler/LLVMDisassembler.cpp
deleted file mode 100644 (file)
index ede0216..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "LLVMDisassembler.h"
-
-#if USE(LLVM_DISASSEMBLER)
-
-#include "InitializeLLVM.h"
-#include "LLVMAPI.h"
-#include "MacroAssemblerCodeRef.h"
-
-namespace JSC {
-
-static const unsigned symbolStringSize = 40;
-
-static const char *symbolLookupCallback(
-    void* opaque, uint64_t referenceValue, uint64_t* referenceType, uint64_t referencePC,
-    const char** referenceName)
-{
-    // Set this if you want to debug an unexpected reference type. Currently we only encounter these
-    // if we try to disassemble garbage, since our code generator never uses them. These include things
-    // like PC-relative references.
-    static const bool crashOnUnexpected = false;
-    
-    char* symbolString = static_cast<char*>(opaque);
-    
-    switch (*referenceType) {
-    case LLVMDisassembler_ReferenceType_InOut_None:
-        return 0;
-    case LLVMDisassembler_ReferenceType_In_Branch:
-        *referenceName = 0;
-        *referenceType = LLVMDisassembler_ReferenceType_InOut_None;
-        snprintf(
-            symbolString, symbolStringSize, "0x%lx",
-            static_cast<unsigned long>(referenceValue));
-        return symbolString;
-    default:
-        if (crashOnUnexpected) {
-            dataLog("referenceValue = ", referenceValue, "\n");
-            dataLog("referenceType = ", RawPointer(referenceType), ", *referenceType = ", *referenceType, "\n");
-            dataLog("referencePC = ", referencePC, "\n");
-            dataLog("referenceName = ", RawPointer(referenceName), "\n");
-            
-            RELEASE_ASSERT_NOT_REACHED();
-        }
-        
-        *referenceName = "unimplemented reference type!";
-        *referenceType = LLVMDisassembler_ReferenceType_InOut_None;
-        snprintf(
-            symbolString, symbolStringSize, "unimplemented:0x%lx",
-            static_cast<unsigned long>(referenceValue));
-        return symbolString;
-    }
-}
-
-bool tryToDisassembleWithLLVM(
-    const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out,
-    InstructionSubsetHint)
-{
-    initializeLLVM();
-    
-    const char* triple;
-#if CPU(X86_64)
-    triple = "x86_64-apple-darwin";
-#elif CPU(X86)
-    triple = "x86-apple-darwin";
-#elif CPU(ARM64)
-    triple = "arm64-apple-darwin";
-#else
-#error "LLVM disassembler currently not supported on this CPU."
-#endif
-
-    char symbolString[symbolStringSize];
-    
-    LLVMDisasmContextRef disassemblyContext =
-        llvm->CreateDisasm(triple, symbolString, 0, 0, symbolLookupCallback);
-    RELEASE_ASSERT(disassemblyContext);
-    
-    char pcString[20];
-    char instructionString[1000];
-    
-    uint8_t* pc = static_cast<uint8_t*>(codePtr.executableAddress());
-    uint8_t* end = pc + size;
-    
-    while (pc < end) {
-        snprintf(
-            pcString, sizeof(pcString), "0x%lx",
-            static_cast<unsigned long>(bitwise_cast<uintptr_t>(pc)));
-
-        size_t instructionSize = llvm->DisasmInstruction(
-            disassemblyContext, pc, end - pc, bitwise_cast<uintptr_t>(pc),
-            instructionString, sizeof(instructionString));
-        
-        if (!instructionSize)
-            snprintf(instructionString, sizeof(instructionString), ".byte 0x%02x", *pc++);
-        else
-            pc += instructionSize;
-        
-        out.printf("%s%16s: %s\n", prefix, pcString, instructionString);
-    }
-    
-    llvm->DisasmDispose(disassemblyContext);
-    
-    return true;
-}
-
-} // namespace JSC
-
-#endif // USE(LLVM_DISASSEMBLER)
-
diff --git a/Source/JavaScriptCore/disassembler/LLVMDisassembler.h b/Source/JavaScriptCore/disassembler/LLVMDisassembler.h
deleted file mode 100644 (file)
index 745912f..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef LLVMDisassembler_h
-#define LLVMDisassembler_h
-
-#include "Disassembler.h"
-
-namespace JSC {
-
-#if USE(LLVM_DISASSEMBLER)
-
-bool tryToDisassembleWithLLVM(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out, InstructionSubsetHint);
-
-#else // USE(LLVM_DISASSEMBLER)
-
-inline bool tryToDisassembleWithLLVM(const MacroAssemblerCodePtr&, size_t, const char*, PrintStream&, InstructionSubsetHint) { return false; }
-
-#endif // USE(LLVM_DISASSEMBLER)
-
-} // namespace JSC
-
-#endif // LLVMDisassembler_h
-
index 8272c42..4093f13 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012, 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2012, 2013, 2016 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -33,7 +33,7 @@
 
 namespace JSC {
 
-bool tryToDisassembleWithUDis86(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out, InstructionSubsetHint)
+bool tryToDisassembleWithUDis86(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out)
 {
     ud_t disassembler;
     ud_init(&disassembler);
index 36e7cc4..2d5b3c4 100644 (file)
@@ -32,11 +32,11 @@ namespace JSC {
 
 #if USE(UDIS86)
 
-bool tryToDisassembleWithUDis86(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out, InstructionSubsetHint);
+bool tryToDisassembleWithUDis86(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out);
 
 #else // USE(UDIS86)
 
-inline bool tryToDisassembleWithUDis86(const MacroAssemblerCodePtr&, size_t, const char*, PrintStream&, InstructionSubsetHint) { return false; }
+inline bool tryToDisassembleWithUDis86(const MacroAssemblerCodePtr&, size_t, const char*, PrintStream&) { return false; }
 
 #endif // USE(UDIS86)
 
index 953f993..90af873 100644 (file)
@@ -32,7 +32,6 @@
 #include "MacroAssemblerCodeRef.h"
 #include "Options.h"
 #include "UDis86Disassembler.h"
-#include "LLVMDisassembler.h"
 
 namespace JSC {
 
@@ -43,29 +42,9 @@ namespace JSC {
 // whether he's using the subset of the architecture that our MacroAssembler
 // supports (in which case we go with UDis86) or if he's using the LLVM subset.
 
-bool tryToDisassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out, InstructionSubsetHint subsetHint)
+bool tryToDisassemble(const MacroAssemblerCodePtr& codePtr, size_t size, const char* prefix, PrintStream& out)
 {
-    if (Options::forceUDis86Disassembler())
-        return tryToDisassembleWithUDis86(codePtr, size, prefix, out, subsetHint);
-
-    if (Options::forceLLVMDisassembler())
-        return tryToDisassembleWithLLVM(codePtr, size, prefix, out, subsetHint);
-    
-    if (subsetHint == MacroAssemblerSubset
-        && tryToDisassembleWithUDis86(codePtr, size, prefix, out, MacroAssemblerSubset))
-        return true;
-
-    if (subsetHint == LLVMSubset
-        && tryToDisassembleWithLLVM(codePtr, size, prefix, out, LLVMSubset))
-        return true;
-    
-    if (tryToDisassembleWithUDis86(codePtr, size, prefix, out, subsetHint))
-        return true;
-    if (tryToDisassembleWithLLVM(codePtr, size, prefix, out, subsetHint))
-        return true;
-    
-    RELEASE_ASSERT_NOT_REACHED();
-    return false;
+    return tryToDisassembleWithUDis86(codePtr, size, prefix, out);
 }
 
 } // namespace JSC
index a517a9e..ee3a150 100644 (file)
@@ -29,7 +29,6 @@
 #if ENABLE(FTL_JIT)
 
 #include "DFGCommon.h"
-#include "LLVMHeaders.h"
 
 namespace JSC { namespace B3 {
 class BasicBlock;
@@ -39,38 +38,10 @@ enum Type : int8_t;
 
 namespace JSC { namespace FTL {
 
-#if FTL_USES_B3
 typedef B3::BasicBlock* LBasicBlock;
 typedef B3::Type LType;
 typedef B3::Value* LValue;
 
-typedef void* LAtomicOrdering;
-typedef void* LBuilder;
-typedef void* LCallConv;
-typedef void* LContext;
-typedef void* LIntPredicate;
-typedef void* LLinkage;
-typedef void* LModule;
-typedef void* LRealPredicate;
-typedef void* LMemoryBuffer;
-#else
-typedef LLVMBasicBlockRef LBasicBlock;
-typedef LLVMTypeRef LType;
-typedef LLVMValueRef LValue;
-
-typedef LLVMAtomicOrdering LAtomicOrdering;
-typedef LLVMBuilderRef LBuilder;
-typedef LLVMCallConv LCallConv;
-typedef LLVMContextRef LContext;
-typedef LLVMIntPredicate LIntPredicate;
-typedef LLVMLinkage LLinkage;
-typedef LLVMModuleRef LModule;
-typedef LLVMRealPredicate LRealPredicate;
-typedef LLVMMemoryBufferRef LMemoryBuffer;
-#endif
-
-enum SynchronizationScope { SingleThread, CrossThread };
-
 } } // namespace JSC::FTL
 
 #endif // ENABLE(FTL_JIT)
diff --git a/Source/JavaScriptCore/ftl/FTLAbbreviations.h b/Source/JavaScriptCore/ftl/FTLAbbreviations.h
deleted file mode 100644 (file)
index 85aeec5..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef FTLAbbreviations_h
-#define FTLAbbreviations_h
-
-#if ENABLE(FTL_JIT)
-
-#include "FTLAbbreviatedTypes.h"
-#include "FTLValueFromBlock.h"
-#include "LLVMAPI.h"
-#include <cstring>
-
-namespace JSC { namespace FTL {
-
-#if !FTL_USES_B3
-
-// This file contains short-form calls into the LLVM C API. It is meant to
-// save typing and make the lowering code clearer. If we ever call an LLVM C API
-// function more than once in the FTL lowering code, we should add a shortcut for
-// it here.
-
-#if USE(JSVALUE32_64)
-#error "The FTL backend assumes that pointers are 64-bit."
-#endif
-
-static inline LType voidType(LContext context) { return llvm->VoidTypeInContext(context); }
-static inline LType int1Type(LContext context) { return llvm->Int1TypeInContext(context); }
-static inline LType int8Type(LContext context) { return llvm->Int8TypeInContext(context); }
-static inline LType int16Type(LContext context) { return llvm->Int16TypeInContext(context); }
-static inline LType int32Type(LContext context) { return llvm->Int32TypeInContext(context); }
-static inline LType int64Type(LContext context) { return llvm->Int64TypeInContext(context); }
-static inline LType intPtrType(LContext context) { return llvm->Int64TypeInContext(context); }
-static inline LType floatType(LContext context) { return llvm->FloatTypeInContext(context); }
-static inline LType doubleType(LContext context) { return llvm->DoubleTypeInContext(context); }
-
-static inline LType pointerType(LType type) { return llvm->PointerType(type, 0); }
-static inline LType arrayType(LType type, unsigned count) { return llvm->ArrayType(type, count); }
-static inline LType vectorType(LType type, unsigned count) { return llvm->VectorType(type, count); }
-
-enum PackingMode { NotPacked, Packed };
-static inline LType structType(LContext context, LType* elementTypes, unsigned elementCount, PackingMode packing = NotPacked)
-{
-    return llvm->StructTypeInContext(context, elementTypes, elementCount, packing == Packed);
-}
-static inline LType structType(LContext context, PackingMode packing = NotPacked)
-{
-    return structType(context, 0, 0, packing);
-}
-static inline LType structType(LContext context, LType element1, PackingMode packing = NotPacked)
-{
-    return structType(context, &element1, 1, packing);
-}
-static inline LType structType(LContext context, LType element1, LType element2, PackingMode packing = NotPacked)
-{
-    LType elements[] = { element1, element2 };
-    return structType(context, elements, 2, packing);
-}
-
-// FIXME: Make the Variadicity argument not be the last argument to functionType() so that this function
-// can use C++11 variadic templates
-// https://bugs.webkit.org/show_bug.cgi?id=141575
-enum Variadicity { NotVariadic, Variadic };
-static inline LType functionType(LType returnType, const LType* paramTypes, unsigned paramCount, Variadicity variadicity)
-{
-    return llvm->FunctionType(returnType, const_cast<LType*>(paramTypes), paramCount, variadicity == Variadic);
-}
-template<typename VectorType>
-inline LType functionType(LType returnType, const VectorType& vector, Variadicity variadicity = NotVariadic)
-{
-    return functionType(returnType, vector.begin(), vector.size(), variadicity);
-}
-static inline LType functionType(LType returnType, Variadicity variadicity = NotVariadic)
-{
-    return functionType(returnType, 0, 0, variadicity);
-}
-static inline LType functionType(LType returnType, LType param1, Variadicity variadicity = NotVariadic)
-{
-    return functionType(returnType, &param1, 1, variadicity);
-}
-static inline LType functionType(LType returnType, LType param1, LType param2, Variadicity variadicity = NotVariadic)
-{
-    LType paramTypes[] = { param1, param2 };
-    return functionType(returnType, paramTypes, 2, variadicity);
-}
-static inline LType functionType(LType returnType, LType param1, LType param2, LType param3, Variadicity variadicity = NotVariadic)
-{
-    LType paramTypes[] = { param1, param2, param3 };
-    return functionType(returnType, paramTypes, 3, variadicity);
-}
-static inline LType functionType(LType returnType, LType param1, LType param2, LType param3, LType param4, Variadicity variadicity = NotVariadic)
-{
-    LType paramTypes[] = { param1, param2, param3, param4 };
-    return functionType(returnType, paramTypes, 4, variadicity);
-}
-static inline LType functionType(LType returnType, LType param1, LType param2, LType param3, LType param4, LType param5, Variadicity variadicity = NotVariadic)
-{
-    LType paramTypes[] = { param1, param2, param3, param4, param5 };
-    return functionType(returnType, paramTypes, 5, variadicity);
-}
-static inline LType functionType(LType returnType, LType param1, LType param2, LType param3, LType param4, LType param5, LType param6, Variadicity variadicity = NotVariadic)
-{
-    LType paramTypes[] = { param1, param2, param3, param4, param5, param6 };
-    return functionType(returnType, paramTypes, 6, variadicity);
-}
-
-static inline unsigned mdKindID(LContext context, const char* string) { return llvm->GetMDKindIDInContext(context, string, std::strlen(string)); }
-static inline LValue mdString(LContext context, const char* string, unsigned length) { return llvm->MDStringInContext(context, string, length); }
-static inline LValue mdString(LContext context, const char* string) { return mdString(context, string, std::strlen(string)); }
-static inline LValue mdNode(LContext context, LValue* args, unsigned numArgs) { return llvm->MDNodeInContext(context, args, numArgs); }
-template<typename VectorType>
-static inline LValue mdNode(LContext context, const VectorType& vector) { return mdNode(context, const_cast<LValue*>(vector.begin()), vector.size()); }
-static inline LValue mdNode(LContext context) { return mdNode(context, 0, 0); }
-static inline LValue mdNode(LContext context, LValue arg1) { return mdNode(context, &arg1, 1); }
-static inline LValue mdNode(LContext context, LValue arg1, LValue arg2)
-{
-    LValue args[] = { arg1, arg2 };
-    return mdNode(context, args, 2);
-}
-static inline LValue mdNode(LContext context, LValue arg1, LValue arg2, LValue arg3)
-{
-    LValue args[] = { arg1, arg2, arg3 };
-    return mdNode(context, args, 3);
-}
-
-static inline void setMetadata(LValue instruction, unsigned kind, LValue metadata) { llvm->SetMetadata(instruction, kind, metadata); }
-
-static inline LValue addFunction(LModule module, const char* name, LType type) { return llvm->AddFunction(module, name, type); }
-static inline LValue getFirstFunction(LModule module) { return llvm->GetFirstFunction(module); }
-static inline LValue getNextFunction(LValue function) { return llvm->GetNextFunction(function); }
-
-static inline void setFunctionCallingConv(LValue function, LCallConv convention) { llvm->SetFunctionCallConv(function, convention); }
-static inline void addTargetDependentFunctionAttr(LValue function, const char* key, const char* value) { llvm->AddTargetDependentFunctionAttr(function, key, value); }
-
-static inline void setLinkage(LValue global, LLVMLinkage linkage) { llvm->SetLinkage(global, linkage); }
-
-static inline LValue addExternFunction(LModule module, const char* name, LType type)
-{
-    LValue result = addFunction(module, name, type);
-    setLinkage(result, LLVMExternalLinkage);
-    return result;
-}
-
-static inline LModule moduleCreateWithNameInContext(const char* moduleID, LContext context){ return llvm->ModuleCreateWithNameInContext(moduleID, context); }
-static inline void disposeModule(LModule m){ llvm->DisposeModule(m); }
-
-static inline void disposeMessage(char* outMsg) { llvm->DisposeMessage(outMsg); }
-
-static inline LValue getParam(LValue function, unsigned index) { return llvm->GetParam(function, index); }
-
-static inline LValue getUndef(LType type) { return llvm->GetUndef(type); }
-
-enum BitExtension { ZeroExtend, SignExtend };
-static inline LValue constInt(LType type, unsigned long long value, BitExtension extension = ZeroExtend) { return llvm->ConstInt(type, value, extension == SignExtend); }
-static inline LValue constReal(LType type, double value) { return llvm->ConstReal(type, value); }
-static inline LValue constNull(LType type) { return llvm->ConstNull(type); }
-
-static inline LBasicBlock appendBasicBlock(LContext context, LValue function, const char* name = "") { return llvm->AppendBasicBlockInContext(context, function, name); }
-static inline LBasicBlock insertBasicBlock(LContext context, LBasicBlock beforeBasicBlock, const char* name = "") { return llvm->InsertBasicBlockInContext(context, beforeBasicBlock, name); }
-
-static inline LValue buildPhi(LBuilder builder, LType type) { return llvm->BuildPhi(builder, type, ""); }
-static inline void addIncoming(LValue phi, const LValue* values, const LBasicBlock* blocks, unsigned numPredecessors)
-{
-    llvm->AddIncoming(phi, const_cast<LValue*>(values), const_cast<LBasicBlock*>(blocks), numPredecessors);
-}
-static inline void addIncoming(LValue phi, ValueFromBlock value1)
-{
-    LValue value = value1.value();
-    LBasicBlock block = value1.block();
-    addIncoming(phi, &value, &block, 1);
-}
-static inline void addIncoming(LValue phi, ValueFromBlock value1, ValueFromBlock value2)
-{
-    LValue values[] = { value1.value(), value2.value() };
-    LBasicBlock blocks[] = { value1.block(), value2.block() };
-    addIncoming(phi, values, blocks, 2);
-}
-static inline LValue buildPhi(LBuilder builder, LType type, ValueFromBlock value1)
-{
-    LValue result = buildPhi(builder, type);
-    addIncoming(result, value1);
-    return result;
-}
-static inline LValue buildPhi(
-    LBuilder builder, LType type, ValueFromBlock value1, ValueFromBlock value2)
-{
-    LValue result = buildPhi(builder, type);
-    addIncoming(result, value1, value2);
-    return result;
-}
-
-static inline LValue buildAlloca(LBuilder builder, LType type) { return llvm->BuildAlloca(builder, type, ""); }
-static inline LValue buildAdd(LBuilder builder, LValue left, LValue right) { return llvm->BuildAdd(builder, left, right, ""); }
-static inline LValue buildSub(LBuilder builder, LValue left, LValue right) { return llvm->BuildSub(builder, left, right, ""); }
-static inline LValue buildMul(LBuilder builder, LValue left, LValue right) { return llvm->BuildMul(builder, left, right, ""); }
-static inline LValue buildDiv(LBuilder builder, LValue left, LValue right) { return llvm->BuildSDiv(builder, left, right, ""); }
-static inline LValue buildRem(LBuilder builder, LValue left, LValue right) { return llvm->BuildSRem(builder, left, right, ""); }
-static inline LValue buildNeg(LBuilder builder, LValue value) { return llvm->BuildNeg(builder, value, ""); }
-static inline LValue buildFAdd(LBuilder builder, LValue left, LValue right) { return llvm->BuildFAdd(builder, left, right, ""); }
-static inline LValue buildFSub(LBuilder builder, LValue left, LValue right) { return llvm->BuildFSub(builder, left, right, ""); }
-static inline LValue buildFMul(LBuilder builder, LValue left, LValue right) { return llvm->BuildFMul(builder, left, right, ""); }
-static inline LValue buildFDiv(LBuilder builder, LValue left, LValue right) { return llvm->BuildFDiv(builder, left, right, ""); }
-static inline LValue buildFRem(LBuilder builder, LValue left, LValue right) { return llvm->BuildFRem(builder, left, right, ""); }
-static inline LValue buildFNeg(LBuilder builder, LValue value) { return llvm->BuildFNeg(builder, value, ""); }
-static inline LValue buildAnd(LBuilder builder, LValue left, LValue right) { return llvm->BuildAnd(builder, left, right, ""); }
-static inline LValue buildOr(LBuilder builder, LValue left, LValue right) { return llvm->BuildOr(builder, left, right, ""); }
-static inline LValue buildXor(LBuilder builder, LValue left, LValue right) { return llvm->BuildXor(builder, left, right, ""); }
-static inline LValue buildShl(LBuilder builder, LValue left, LValue right) { return llvm->BuildShl(builder, left, right, ""); }
-static inline LValue buildAShr(LBuilder builder, LValue left, LValue right) { return llvm->BuildAShr(builder, left, right, ""); }
-static inline LValue buildLShr(LBuilder builder, LValue left, LValue right) { return llvm->BuildLShr(builder, left, right, ""); }
-static inline LValue buildNot(LBuilder builder, LValue value) { return llvm->BuildNot(builder, value, ""); }
-static inline LValue buildLoad(LBuilder builder, LValue pointer) { return llvm->BuildLoad(builder, pointer, ""); }
-static inline LValue buildStore(LBuilder builder, LValue value, LValue pointer) { return llvm->BuildStore(builder, value, pointer); }
-static inline LValue buildSExt(LBuilder builder, LValue value, LType type) { return llvm->BuildSExt(builder, value, type, ""); }
-static inline LValue buildZExt(LBuilder builder, LValue value, LType type) { return llvm->BuildZExt(builder, value, type, ""); }
-static inline LValue buildFPToSI(LBuilder builder, LValue value, LType type) { return llvm->BuildFPToSI(builder, value, type, ""); }
-static inline LValue buildFPToUI(LBuilder builder, LValue value, LType type) { return llvm->BuildFPToUI(builder, value, type, ""); }
-static inline LValue buildSIToFP(LBuilder builder, LValue value, LType type) { return llvm->BuildSIToFP(builder, value, type, ""); }
-static inline LValue buildUIToFP(LBuilder builder, LValue value, LType type) { return llvm->BuildUIToFP(builder, value, type, ""); }
-static inline LValue buildIntCast(LBuilder builder, LValue value, LType type) { return llvm->BuildIntCast(builder, value, type, ""); }
-static inline LValue buildFPCast(LBuilder builder, LValue value, LType type) { return llvm->BuildFPCast(builder, value, type, ""); }
-static inline LValue buildIntToPtr(LBuilder builder, LValue value, LType type) { return llvm->BuildIntToPtr(builder, value, type, ""); }
-static inline LValue buildPtrToInt(LBuilder builder, LValue value, LType type) { return llvm->BuildPtrToInt(builder, value, type, ""); }
-static inline LValue buildBitCast(LBuilder builder, LValue value, LType type) { return llvm->BuildBitCast(builder, value, type, ""); }
-static inline LValue buildICmp(LBuilder builder, LIntPredicate cond, LValue left, LValue right) { return llvm->BuildICmp(builder, cond, left, right, ""); }
-static inline LValue buildFCmp(LBuilder builder, LRealPredicate cond, LValue left, LValue right) { return llvm->BuildFCmp(builder, cond, left, right, ""); }
-static inline LValue buildInsertElement(LBuilder builder, LValue vector, LValue element, LValue index) { return llvm->BuildInsertElement(builder, vector, element, index, ""); }
-
-static inline LValue buildFence(LBuilder builder, LAtomicOrdering ordering, SynchronizationScope scope = CrossThread)
-{
-    return llvm->BuildFence(builder, ordering, scope == SingleThread, "");
-}
-
-static inline LValue buildCall(LBuilder builder, LValue function, const LValue* args, unsigned numArgs)
-{
-    return llvm->BuildCall(builder, function, const_cast<LValue*>(args), numArgs, "");
-}
-template<typename VectorType>
-inline LValue buildCall(LBuilder builder, LValue function, const VectorType& vector)
-{
-    return buildCall(builder, function, vector.begin(), vector.size());
-}
-static inline LValue buildCall(LBuilder builder, LValue function)
-{
-    return buildCall(builder, function, 0, 0);
-}
-static inline LValue buildCall(LBuilder builder, LValue function, LValue arg1)
-{
-    return buildCall(builder, function, &arg1, 1);
-}
-template<typename... Args>
-LValue buildCall(LBuilder builder, LValue function, LValue arg1, Args... args)
-{
-    LValue argsArray[] = { arg1, args... };
-    return buildCall(builder, function, argsArray, sizeof(argsArray) / sizeof(LValue));
-}
-
-static inline void setInstructionCallingConvention(LValue instruction, LCallConv callingConvention) { llvm->SetInstructionCallConv(instruction, callingConvention); }
-static inline LValue buildExtractValue(LBuilder builder, LValue aggVal, unsigned index) { return llvm->BuildExtractValue(builder, aggVal, index, ""); }
-static inline LValue buildSelect(LBuilder builder, LValue condition, LValue taken, LValue notTaken) { return llvm->BuildSelect(builder, condition, taken, notTaken, ""); }
-static inline LValue buildBr(LBuilder builder, LBasicBlock destination) { return llvm->BuildBr(builder, destination); }
-static inline LValue buildCondBr(LBuilder builder, LValue condition, LBasicBlock taken, LBasicBlock notTaken) { return llvm->BuildCondBr(builder, condition, taken, notTaken); }
-static inline LValue buildSwitch(LBuilder builder, LValue value, LBasicBlock fallThrough, unsigned numCases) { return llvm->BuildSwitch(builder, value, fallThrough, numCases); }
-static inline void addCase(LValue switchInst, LValue value, LBasicBlock target) { llvm->AddCase(switchInst, value, target); }
-template<typename VectorType>
-static inline LValue buildSwitch(LBuilder builder, LValue value, const VectorType& cases, LBasicBlock fallThrough)
-{
-    LValue result = buildSwitch(builder, value, fallThrough, cases.size());
-    for (unsigned i = 0; i < cases.size(); ++i)
-        addCase(result, cases[i].value(), cases[i].target());
-    return result;
-}
-static inline LValue buildRet(LBuilder builder, LValue value) { return llvm->BuildRet(builder, value); }
-static inline LValue buildUnreachable(LBuilder builder) { return llvm->BuildUnreachable(builder); }
-
-static inline void dumpModule(LModule module) { llvm->DumpModule(module); }
-static inline void verifyModule(LModule module)
-{
-    char* error = 0;
-    llvm->VerifyModule(module, LLVMAbortProcessAction, &error);
-    llvm->DisposeMessage(error);
-}
-
-#endif // !FTL_USES_B3
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
-
-#endif // FTLAbbreviations_h
-
index 3c66315..fb46c52 100644 (file)
 
 #include "DFGCommon.h"
 #include "FTLAbbreviatedTypes.h"
-#include "FTLAbbreviations.h"
 #include "FTLAbstractHeapRepository.h"
 #include "FTLB3Output.h"
-#include "FTLOutput.h"
 #include "FTLTypedPointer.h"
 #include "JSCInlines.h"
 #include "Options.h"
 
 namespace JSC { namespace FTL {
 
-#if !FTL_USES_B3
-LValue AbstractHeap::tbaaMetadataSlow(const AbstractHeapRepository& repository) const
-{
-    m_tbaaMetadata = mdNode(
-        repository.m_context,
-        mdString(repository.m_context, m_heapName),
-        m_parent->tbaaMetadata(repository));
-    return m_tbaaMetadata;
-}
-#endif
-
 void AbstractHeap::decorateInstruction(LValue instruction, const AbstractHeapRepository& repository) const
 {
-#if !FTL_USES_B3
-    if (!Options::useFTLTBAA())
-        return;
-    setMetadata(instruction, repository.m_tbaaKind, tbaaMetadata(repository));
-#else
     UNUSED_PARAM(instruction);
     UNUSED_PARAM(repository);
-#endif
 }
 
 void AbstractHeap::dump(PrintStream& out) const
@@ -77,33 +58,12 @@ void AbstractField::dump(PrintStream& out) const
         out.print("->", *parent());
 }
 
-IndexedAbstractHeap::IndexedAbstractHeap(LContext context, AbstractHeap* parent, const char* heapName, ptrdiff_t offset, size_t elementSize)
+IndexedAbstractHeap::IndexedAbstractHeap(AbstractHeap* parent, const char* heapName, ptrdiff_t offset, size_t elementSize)
     : m_heapForAnyIndex(parent, heapName)
     , m_heapNameLength(strlen(heapName))
     , m_offset(offset)
     , m_elementSize(elementSize)
-#if !FTL_USES_B3
-    , m_scaleTerm(0)
-    , m_canShift(false)
-#endif
 {
-#if FTL_USES_B3
-    UNUSED_PARAM(context);
-#else
-    // See if there is a common shift amount we could use instead of multiplying. Don't
-    // try too hard. This is just a speculative optimization to reduce load on LLVM.
-    for (unsigned i = 0; i < 4; ++i) {
-        if (1U << i == m_elementSize) {
-            if (i)
-                m_scaleTerm = constInt(intPtrType(context), i, ZeroExtend);
-            m_canShift = true;
-            break;
-        }
-    }
-    
-    if (!m_canShift)
-        m_scaleTerm = constInt(intPtrType(context), m_elementSize, ZeroExtend);
-#endif
 }
 
 IndexedAbstractHeap::~IndexedAbstractHeap()
@@ -115,18 +75,7 @@ TypedPointer IndexedAbstractHeap::baseIndex(Output& out, LValue base, LValue ind
     if (indexAsConstant.isInt32())
         return out.address(base, at(indexAsConstant.asInt32()), offset);
 
-#if FTL_USES_B3
     LValue result = out.add(base, out.mul(index, out.constIntPtr(m_elementSize)));
-#else
-    LValue result;
-    if (m_canShift) {
-        if (!m_scaleTerm)
-            result = out.add(base, index);
-        else
-            result = out.add(base, out.shl(index, m_scaleTerm));
-    } else
-        result = out.add(base, out.mul(index, m_scaleTerm));
-#endif
     
     return TypedPointer(atAnyIndex(), out.addPtr(result, m_offset + offset));
 }
@@ -215,8 +164,8 @@ void IndexedAbstractHeap::dump(PrintStream& out) const
     out.print("Indexed:", atAnyIndex());
 }
 
-NumberedAbstractHeap::NumberedAbstractHeap(LContext context, AbstractHeap* heap, const char* heapName)
-    : m_indexedHeap(context, heap, heapName, 0, 1)
+NumberedAbstractHeap::NumberedAbstractHeap(AbstractHeap* heap, const char* heapName)
+    : m_indexedHeap(heap, heapName, 0, 1)
 {
 }
 
@@ -229,8 +178,8 @@ void NumberedAbstractHeap::dump(PrintStream& out) const
     out.print("Numbered: ", atAnyNumber());
 }
 
-AbsoluteAbstractHeap::AbsoluteAbstractHeap(LContext context, AbstractHeap* heap, const char* heapName)
-    : m_indexedHeap(context, heap, heapName, 0, 1)
+AbsoluteAbstractHeap::AbsoluteAbstractHeap(AbstractHeap* heap, const char* heapName)
+    : m_indexedHeap(heap, heapName, 0, 1)
 {
 }
 
index 0a2efa3..e03cffe 100644 (file)
@@ -53,18 +53,12 @@ public:
     AbstractHeap()
         : m_parent(0)
         , m_heapName(0)
-#if !FTL_USES_B3
-        , m_tbaaMetadata(0)
-#endif
     {
     }
     
     AbstractHeap(AbstractHeap* parent, const char* heapName)
         : m_parent(parent)
         , m_heapName(heapName)
-#if !FTL_USES_B3
-        , m_tbaaMetadata(0)
-#endif
     {
     }
     
@@ -93,16 +87,6 @@ public:
         return m_heapName;
     }
 
-#if !FTL_USES_B3
-    LValue tbaaMetadata(const AbstractHeapRepository& repository) const
-    {
-        ASSERT(isInitialized());
-        if (LIKELY(!!m_tbaaMetadata))
-            return m_tbaaMetadata;
-        return tbaaMetadataSlow(repository);
-    }
-#endif
-    
     void decorateInstruction(LValue instruction, const AbstractHeapRepository&) const;
 
     void dump(PrintStream&) const;
@@ -110,15 +94,8 @@ public:
 private:
     friend class AbstractHeapRepository;
 
-#if !FTL_USES_B3
-    LValue tbaaMetadataSlow(const AbstractHeapRepository&) const;
-#endif
-    
     AbstractHeap* m_parent;
     const char* m_heapName;
-#if !FTL_USES_B3
-    mutable LValue m_tbaaMetadata;
-#endif
 };
 
 // Think of "AbstractField" as being an "AbstractHeapWithOffset". I would have named
@@ -155,7 +132,7 @@ private:
 
 class IndexedAbstractHeap {
 public:
-    IndexedAbstractHeap(LContext, AbstractHeap* parent, const char* heapName, ptrdiff_t offset, size_t elementSize);
+    IndexedAbstractHeap(AbstractHeap* parent, const char* heapName, ptrdiff_t offset, size_t elementSize);
     ~IndexedAbstractHeap();
     
     const AbstractHeap& atAnyIndex() const { return m_heapForAnyIndex; }
@@ -188,10 +165,6 @@ private:
     size_t m_heapNameLength;
     ptrdiff_t m_offset;
     size_t m_elementSize;
-#if !FTL_USES_B3
-    LValue m_scaleTerm;
-    bool m_canShift;
-#endif
     std::array<AbstractField, 16> m_smallIndices;
     
     struct WithoutZeroOrOneHashTraits : WTF::GenericHashTraits<ptrdiff_t> {
@@ -211,7 +184,7 @@ private:
 
 class NumberedAbstractHeap {
 public:
-    NumberedAbstractHeap(LContext, AbstractHeap* parent, const char* heapName);
+    NumberedAbstractHeap(AbstractHeap* parent, const char* heapName);
     ~NumberedAbstractHeap();
     
     const AbstractHeap& atAnyNumber() const { return m_indexedHeap.atAnyIndex(); }
@@ -230,7 +203,7 @@ private:
 
 class AbsoluteAbstractHeap {
 public:
-    AbsoluteAbstractHeap(LContext, AbstractHeap* parent, const char* heapName);
+    AbsoluteAbstractHeap(AbstractHeap* parent, const char* heapName);
     ~AbsoluteAbstractHeap();
     
     const AbstractHeap& atAnyAddress() const { return m_indexedHeap.atAnyIndex(); }
index 97c0784..6026a04 100644 (file)
@@ -29,7 +29,6 @@
 #if ENABLE(FTL_JIT)
 
 #include "DirectArguments.h"
-#include "FTLAbbreviations.h"
 #include "GetterSetter.h"
 #include "JSEnvironmentRecord.h"
 #include "JSPropertyNameEnumerator.h"
@@ -40,7 +39,7 @@
 
 namespace JSC { namespace FTL {
 
-AbstractHeapRepository::AbstractHeapRepository(LContext context)
+AbstractHeapRepository::AbstractHeapRepository()
     : root(0, "jscRoot")
 
 #define ABSTRACT_HEAP_INITIALIZATION(name) , name(&root, #name)
@@ -53,19 +52,15 @@ AbstractHeapRepository::AbstractHeapRepository(LContext context)
     
     , JSCell_freeListNext(JSCell_structureID)
     
-#define INDEXED_ABSTRACT_HEAP_INITIALIZATION(name, offset, size) , name(context, &root, #name, offset, size)
+#define INDEXED_ABSTRACT_HEAP_INITIALIZATION(name, offset, size) , name(&root, #name, offset, size)
     FOR_EACH_INDEXED_ABSTRACT_HEAP(INDEXED_ABSTRACT_HEAP_INITIALIZATION)
 #undef INDEXED_ABSTRACT_HEAP_INITIALIZATION
     
-#define NUMBERED_ABSTRACT_HEAP_INITIALIZATION(name) , name(context, &root, #name)
+#define NUMBERED_ABSTRACT_HEAP_INITIALIZATION(name) , name(&root, #name)
     FOR_EACH_NUMBERED_ABSTRACT_HEAP(NUMBERED_ABSTRACT_HEAP_INITIALIZATION)
 #undef NUMBERED_ABSTRACT_HEAP_INITIALIZATION
 
-    , absolute(context, &root, "absolute")
-    , m_context(context)
-#if !FTL_USES_B3
-    , m_tbaaKind(mdKindID(m_context, "tbaa"))
-#endif
+    , absolute(&root, "absolute")
 {
     // Make sure that our explicit assumptions about the StructureIDBlob match reality.
     RELEASE_ASSERT(!(JSCell_indexingType.offset() & (sizeof(int32_t) - 1)));
@@ -78,13 +73,6 @@ AbstractHeapRepository::AbstractHeapRepository(LContext context)
     JSCell_typeInfoFlags.changeParent(&JSCell_usefulBytes);
     JSCell_cellState.changeParent(&JSCell_usefulBytes);
 
-#if !FTL_USES_B3
-    root.m_tbaaMetadata = mdNode(m_context, mdString(m_context, root.m_heapName));
-    
-    RELEASE_ASSERT(m_tbaaKind);
-    RELEASE_ASSERT(root.m_tbaaMetadata);
-#endif
-    
     RELEASE_ASSERT(!JSCell_freeListNext.offset());
 }
 
index 77e5798..8c9f22a 100644 (file)
@@ -118,7 +118,7 @@ namespace JSC { namespace FTL {
 class AbstractHeapRepository {
     WTF_MAKE_NONCOPYABLE(AbstractHeapRepository);
 public:
-    AbstractHeapRepository(LContext);
+    AbstractHeapRepository();
     ~AbstractHeapRepository();
     
     AbstractHeap root;
@@ -188,11 +188,6 @@ public:
 
 private:
     friend class AbstractHeap;
-    
-    LContext m_context;
-#if !FTL_USES_B3
-    unsigned m_tbaaKind;
-#endif
 };
 
 } } // namespace JSC::FTL
index f198b17..2efbf8d 100644 (file)
@@ -26,7 +26,7 @@
 #include "config.h"
 #include "FTLCompile.h"
 
-#if ENABLE(FTL_JIT) && FTL_USES_B3
+#if ENABLE(FTL_JIT)
 
 #include "AirCode.h"
 #include "B3Generate.h"
 #include "DFGOperations.h"
 #include "DataView.h"
 #include "Disassembler.h"
-#include "FTLExceptionHandlerManager.h"
-#include "FTLExitThunkGenerator.h"
-#include "FTLInlineCacheSize.h"
 #include "FTLJITCode.h"
 #include "FTLThunks.h"
-#include "FTLUnwindInfo.h"
 #include "JITSubGenerator.h"
 #include "LinkBuffer.h"
 #include "PCToCodeOriginMap.h"
@@ -153,5 +149,5 @@ void compile(State& state, Safepoint::Result& safepointResult)
 
 } } // namespace JSC::FTL
 
-#endif // ENABLE(FTL_JIT) && FTL_USES_B3
+#endif // ENABLE(FTL_JIT)
 
index 8ae4d1e..21d0d39 100644 (file)
@@ -27,7 +27,6 @@
 #include "FTLB3Output.h"
 
 #if ENABLE(FTL_JIT)
-#if FTL_USES_B3
 
 #include "B3MathExtras.h"
 #include "B3StackmapGenerationParams.h"
@@ -37,8 +36,7 @@ namespace JSC { namespace FTL {
 using namespace B3;
 
 Output::Output(State& state)
-    : CommonValues(state.context)
-    , m_proc(*state.proc)
+    : m_proc(*state.proc)
 {
 }
 
@@ -244,8 +242,61 @@ void Output::check(LValue condition, WeightedTarget taken)
     check(condition, taken, taken.weight().inverse());
 }
 
+LValue Output::load(TypedPointer pointer, LoadType type)
+{
+    switch (type) {
+    case Load8SignExt32:
+        return load8SignExt32(pointer);
+    case Load8ZeroExt32:
+        return load8ZeroExt32(pointer);
+    case Load16SignExt32:
+        return load8SignExt32(pointer);
+    case Load16ZeroExt32:
+        return load8ZeroExt32(pointer);
+    case Load32:
+        return load32(pointer);
+    case Load64:
+        return load64(pointer);
+    case LoadPtr:
+        return loadPtr(pointer);
+    case LoadFloat:
+        return loadFloat(pointer);
+    case LoadDouble:
+        return loadDouble(pointer);
+    }
+    RELEASE_ASSERT_NOT_REACHED();
+    return nullptr;
+}
+
+void Output::store(LValue value, TypedPointer pointer, StoreType type)
+{
+    switch (type) {
+    case Store32As8:
+        store32As8(value, pointer);
+        return;
+    case Store32As16:
+        store32As16(value, pointer);
+        return;
+    case Store32:
+        store32(value, pointer);
+        return;
+    case Store64:
+        store64(value, pointer);
+        return;
+    case StorePtr:
+        storePtr(value, pointer);
+        return;
+    case StoreFloat:
+        storeFloat(value, pointer);
+        return;
+    case StoreDouble:
+        storeDouble(value, pointer);
+        return;
+    }
+    RELEASE_ASSERT_NOT_REACHED();
+}
+
 } } // namespace JSC::FTL
 
-#endif // FTL_USES_B3
 #endif // ENABLE(FTL_JIT)
 
index 20977c1..277c569 100644 (file)
@@ -29,7 +29,6 @@
 #include "DFGCommon.h"
 
 #if ENABLE(FTL_JIT)
-#if FTL_USES_B3
 
 #include "B3ArgumentRegValue.h"
 #include "B3BasicBlockInlines.h"
@@ -531,7 +530,6 @@ inline LValue Output::fround(LValue doubleValue)
 
 } } // namespace JSC::FTL
 
-#endif // FTL_USES_B3
 #endif // ENABLE(FTL_JIT)
 
 #endif // FTLB3Output_h
index bf6754f..a2801e1 100644 (file)
@@ -34,7 +34,6 @@
 #include "B3ProcedureInlines.h"
 #include "B3Type.h"
 #include "B3ValueInlines.h"
-#include "FTLAbbreviations.h"
 
 #if ENABLE(FTL_JIT)
 
@@ -42,8 +41,7 @@ namespace JSC { namespace FTL {
 
 using namespace B3;
 
-CommonValues::CommonValues(LContext context)
-#if FTL_USES_B3
+CommonValues::CommonValues()
     : voidType(B3::Void)
     , boolean(B3::Int32)
     , int32(B3::Int32)
@@ -51,46 +49,9 @@ CommonValues::CommonValues(LContext context)
     , intPtr(B3::pointerType())
     , floatType(B3::Float)
     , doubleType(B3::Double)
-#else
-    : voidType(FTL::voidType(context))
-    , boolean(int1Type(context))
-    , int32(int32Type(context))
-    , int64(int64Type(context))
-    , intPtr(intPtrType(context))
-    , floatType(FTL::floatType(context))
-    , doubleType(FTL::doubleType(context))
-    , int8(int8Type(context))
-    , int16(int16Type(context))
-    , ref8(pointerType(int8))
-    , ref16(pointerType(int16))
-    , ref32(pointerType(int32))
-    , ref64(pointerType(int64))
-    , refPtr(pointerType(intPtr))
-    , refFloat(pointerType(floatType))
-    , refDouble(pointerType(doubleType))
-    , booleanTrue(constInt(boolean, true, ZeroExtend))
-    , booleanFalse(constInt(boolean, false, ZeroExtend))
-    , int8Zero(constInt(int8, 0, SignExtend))
-    , int32Zero(constInt(int32, 0, SignExtend))
-    , int32One(constInt(int32, 1, SignExtend))
-    , int64Zero(constInt(int64, 0, SignExtend))
-    , intPtrZero(constInt(intPtr, 0, SignExtend))
-    , intPtrOne(constInt(intPtr, 1, SignExtend))
-    , intPtrTwo(constInt(intPtr, 2, SignExtend))
-    , intPtrThree(constInt(intPtr, 3, SignExtend))
-    , intPtrEight(constInt(intPtr, 8, SignExtend))
-    , doubleZero(constReal(doubleType, 0))
-    , rangeKind(mdKindID(context, "range"))
-    , profKind(mdKindID(context, "prof"))
-    , branchWeights(mdString(context, "branch_weights"))
-    , nonNegativeInt32(constInt(int32, 0, SignExtend), constInt(int32, 1ll << 31, SignExtend))
-#endif // !FTL_USES_B3
-    , m_context(context)
-    , m_module(0)
 {
 }
 
-#if FTL_USES_B3
 void CommonValues::initializeConstants(B3::Procedure& proc, B3::BasicBlock* block)
 {
     int32Zero = block->appendNew<Const32Value>(proc, Origin(), 0);
@@ -105,7 +66,6 @@ void CommonValues::initializeConstants(B3::Procedure& proc, B3::BasicBlock* bloc
     intPtrEight = block->appendNew<ConstPtrValue>(proc, Origin(), 8);
     doubleZero = block->appendNew<ConstDoubleValue>(proc, Origin(), 0.);
 }
-#endif
 
 } } // namespace JSC::FTL
 
index 6d6a35b..49bf04b 100644 (file)
@@ -42,16 +42,9 @@ namespace FTL {
 
 class CommonValues {
 public:
-    CommonValues(LContext context);
+    CommonValues();
 
-#if FTL_USES_B3
     void initializeConstants(B3::Procedure&, B3::BasicBlock*);
-#else // FTL_USES_B3
-    void initialize(LModule module)
-    {
-        m_module = module;
-    }
-#endif // FTL_USES_B3
     
     const LType voidType;
     const LType boolean;
@@ -60,22 +53,8 @@ public:
     const LType intPtr;
     const LType floatType;
     const LType doubleType;
-#if !FTL_USES_B3
-    const LType int8;
-    const LType int16;
-    const LType ref8;
-    const LType ref16;
-    const LType ref32;
-    const LType ref64;
-    const LType refPtr;
-    const LType refFloat;
-    const LType refDouble;
-#endif
     LValue booleanTrue { nullptr };
     LValue booleanFalse { nullptr };
-#if !FTL_USES_B3
-    LValue int8Zero { nullptr };
-#endif
     LValue int32Zero { nullptr };
     LValue int32One { nullptr };
     LValue int64Zero { nullptr };
@@ -91,9 +70,6 @@ public:
     const LValue branchWeights { nullptr };
     
     const ValueRange nonNegativeInt32;
-
-    LContext const m_context;
-    LModule m_module;
 };
 
 } } // namespace JSC::FTL
diff --git a/Source/JavaScriptCore/ftl/FTLCompile.cpp b/Source/JavaScriptCore/ftl/FTLCompile.cpp
deleted file mode 100644 (file)
index 490e609..0000000
+++ /dev/null
@@ -1,1219 +0,0 @@
-/*
- * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
- * Copyright (C) 2014 Samsung Electronics
- * Copyright (C) 2014 University of Szeged
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "FTLCompile.h"
-
-#if ENABLE(FTL_JIT) && !FTL_USES_B3
-
-#include "CodeBlockWithJITType.h"
-#include "CCallHelpers.h"
-#include "DFGCommon.h"
-#include "DFGGraphSafepoint.h"
-#include "DFGOperations.h"
-#include "DataView.h"
-#include "Disassembler.h"
-#include "FTLCompileBinaryOp.h"
-#include "FTLExceptionHandlerManager.h"
-#include "FTLExitThunkGenerator.h"
-#include "FTLInlineCacheDescriptor.h"
-#include "FTLInlineCacheSize.h"
-#include "FTLJITCode.h"
-#include "FTLThunks.h"
-#include "FTLUnwindInfo.h"
-#include "LLVMAPI.h"
-#include "LinkBuffer.h"
-#include "ScratchRegisterAllocator.h"
-
-namespace JSC { namespace FTL {
-
-using namespace DFG;
-
-static RegisterSet usedRegistersFor(const StackMaps::Record&);
-
-static uint8_t* mmAllocateCodeSection(
-    void* opaqueState, uintptr_t size, unsigned alignment, unsigned, const char* sectionName)
-{
-    State& state = *static_cast<State*>(opaqueState);
-    
-    RELEASE_ASSERT(alignment <= jitAllocationGranule);
-    
-    RefPtr<ExecutableMemoryHandle> result =
-        state.graph.m_vm.executableAllocator.allocate(
-            state.graph.m_vm, size, state.graph.m_codeBlock, JITCompilationCanFail);
-    
-    if (!result) {
-        // Signal failure. This compilation will get tossed.
-        state.allocationFailed = true;
-        
-        // Fake an allocation, since LLVM cannot handle failures in the memory manager.
-        RefPtr<DataSection> fakeSection = adoptRef(new DataSection(size, jitAllocationGranule));
-        state.jitCode->addDataSection(fakeSection);
-        return bitwise_cast<uint8_t*>(fakeSection->base());
-    }
-    
-    // LLVM used to put __compact_unwind in a code section. We keep this here defensively,
-    // for clients that use older LLVMs.
-    if (!strcmp(sectionName, SECTION_NAME("compact_unwind"))) {
-        state.unwindDataSection = result->start();
-        state.unwindDataSectionSize = result->sizeInBytes();
-    }
-    
-    state.jitCode->addHandle(result);
-    state.codeSectionNames.append(sectionName);
-    
-    return static_cast<uint8_t*>(result->start());
-}
-
-static uint8_t* mmAllocateDataSection(
-    void* opaqueState, uintptr_t size, unsigned alignment, unsigned sectionID,
-    const char* sectionName, LLVMBool isReadOnly)
-{
-    UNUSED_PARAM(sectionID);
-    UNUSED_PARAM(isReadOnly);
-
-    // Allocate the GOT in the code section to make it reachable for all code.
-    if (!strcmp(sectionName, SECTION_NAME("got")))
-        return mmAllocateCodeSection(opaqueState, size, alignment, sectionID, sectionName);
-
-    State& state = *static_cast<State*>(opaqueState);
-
-    RefPtr<DataSection> section = adoptRef(new DataSection(size, alignment));
-
-    if (!strcmp(sectionName, SECTION_NAME("llvm_stackmaps")))
-        state.stackmapsSection = section;
-    else {
-        state.jitCode->addDataSection(section);
-        state.dataSectionNames.append(sectionName);
-#if OS(DARWIN)
-        if (!strcmp(sectionName, SECTION_NAME("compact_unwind"))) {
-#elif OS(LINUX)
-        if (!strcmp(sectionName, SECTION_NAME("eh_frame"))) {
-#else
-#error "Unrecognized OS"
-#endif
-            state.unwindDataSection = section->base();
-            state.unwindDataSectionSize = size;
-        }
-    }
-
-    return bitwise_cast<uint8_t*>(section->base());
-}
-
-static LLVMBool mmApplyPermissions(void*, char**)
-{
-    return false;
-}
-
-static void mmDestroy(void*)
-{
-}
-
-static void dumpDataSection(DataSection* section, const char* prefix)
-{
-    for (unsigned j = 0; j < section->size() / sizeof(int64_t); ++j) {
-        char buf[32];
-        int64_t* wordPointer = static_cast<int64_t*>(section->base()) + j;
-        snprintf(buf, sizeof(buf), "0x%lx", static_cast<unsigned long>(bitwise_cast<uintptr_t>(wordPointer)));
-        dataLogF("%s%16s: 0x%016llx\n", prefix, buf, static_cast<long long>(*wordPointer));
-    }
-}
-
-static int offsetOfStackRegion(StackMaps::RecordMap& recordMap, uint32_t stackmapID)
-{
-    if (stackmapID == UINT_MAX)
-        return 0;
-    
-    StackMaps::RecordMap::iterator iter = recordMap.find(stackmapID);
-    RELEASE_ASSERT(iter != recordMap.end());
-    RELEASE_ASSERT(iter->value.size() == 1);
-    RELEASE_ASSERT(iter->value[0].record.locations.size() == 1);
-    Location capturedLocation =
-        Location::forStackmaps(nullptr, iter->value[0].record.locations[0]);
-    RELEASE_ASSERT(capturedLocation.kind() == Location::Register);
-    RELEASE_ASSERT(capturedLocation.gpr() == GPRInfo::callFrameRegister);
-    RELEASE_ASSERT(!(capturedLocation.addend() % sizeof(Register)));
-    return capturedLocation.addend() / sizeof(Register);
-}
-
-static void generateInlineIfPossibleOutOfLineIfNot(State& state, VM& vm, CodeBlock* codeBlock, CCallHelpers& code, char* startOfInlineCode, size_t sizeOfInlineCode, const char* codeDescription, const std::function<void(LinkBuffer&, CCallHelpers&, bool wasCompiledInline)>& callback)
-{
-    std::unique_ptr<LinkBuffer> codeLinkBuffer;
-    size_t actualCodeSize = code.m_assembler.buffer().codeSize();
-
-    if (actualCodeSize <= sizeOfInlineCode) {
-        LinkBuffer codeLinkBuffer(vm, code, startOfInlineCode, sizeOfInlineCode);
-
-        // Fill the remainder of the inline space with nops to avoid confusing the disassembler.
-        MacroAssembler::AssemblerType_T::fillNops(bitwise_cast<char*>(startOfInlineCode) + actualCodeSize, sizeOfInlineCode - actualCodeSize);
-
-        callback(codeLinkBuffer, code, true);
-
-        return;
-    }
-
-    if (Options::assertICSizing() || Options::dumpFailedICSizing()) {
-        static size_t maxSize = 0;
-        if (maxSize < actualCodeSize)
-            maxSize = actualCodeSize;
-        dataLogF("ALERT: Under-estimated FTL Inline Cache Size for %s: estimated %zu, actual %zu, max %zu\n", codeDescription, sizeOfInlineCode, actualCodeSize, maxSize);
-        if (Options::assertICSizing())
-            CRASH();
-    }
-
-    // If there isn't enough space in the provided inline code area, allocate out of line
-    // executable memory to link the provided code. Place a jump at the beginning of the
-    // inline area and jump to the out of line code. Similarly return by appending a jump
-    // to the provided code that goes to the instruction after the inline code.
-    // Fill the middle with nop's.
-    MacroAssembler::Jump returnToMainline = code.jump();
-
-    // Allocate out of line executable memory and link the provided code there.
-    codeLinkBuffer = std::make_unique<LinkBuffer>(vm, code, codeBlock, JITCompilationMustSucceed);
-
-    // Plant a jmp in the inline buffer to the out of line code.
-    MacroAssembler callToOutOfLineCode;
-    MacroAssembler::Jump jumpToOutOfLine = callToOutOfLineCode.jump();
-    LinkBuffer inlineBuffer(vm, callToOutOfLineCode, startOfInlineCode, sizeOfInlineCode);
-    inlineBuffer.link(jumpToOutOfLine, codeLinkBuffer->entrypoint());
-
-    // Fill the remainder of the inline space with nops to avoid confusing the disassembler.
-    MacroAssembler::AssemblerType_T::fillNops(bitwise_cast<char*>(startOfInlineCode) + inlineBuffer.size(), sizeOfInlineCode - inlineBuffer.size());
-
-    // Link the end of the out of line code to right after the inline area.
-    codeLinkBuffer->link(returnToMainline, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(startOfInlineCode)).labelAtOffset(sizeOfInlineCode));
-
-    callback(*codeLinkBuffer.get(), code, false);
-
-    state.finalizer->outOfLineCodeInfos.append(OutOfLineCodeInfo(WTFMove(codeLinkBuffer), codeDescription));
-}
-
-template<typename DescriptorType>
-void generateICFastPath(
-    State& state, CodeBlock* codeBlock, GeneratedFunction generatedFunction,
-    StackMaps::RecordMap& recordMap, DescriptorType& ic, size_t sizeOfIC, const char* icName)
-{
-    VM& vm = state.graph.m_vm;
-
-    StackMaps::RecordMap::iterator iter = recordMap.find(ic.stackmapID());
-    if (iter == recordMap.end()) {
-        // It was optimized out.
-        return;
-    }
-    
-    Vector<StackMaps::RecordAndIndex>& records = iter->value;
-    
-    RELEASE_ASSERT(records.size() == ic.m_generators.size());
-    
-    for (unsigned i = records.size(); i--;) {
-        StackMaps::Record& record = records[i].record;
-        auto generator = ic.m_generators[i];
-
-        CCallHelpers fastPathJIT(&vm, codeBlock);
-        generator.generateFastPath(fastPathJIT);
-        
-        char* startOfIC =
-            bitwise_cast<char*>(generatedFunction) + record.instructionOffset;
-
-        generateInlineIfPossibleOutOfLineIfNot(state, vm, codeBlock, fastPathJIT, startOfIC, sizeOfIC, icName, [&] (LinkBuffer& linkBuffer, CCallHelpers&, bool) {
-            state.finalizer->sideCodeLinkBuffer->link(ic.m_slowPathDone[i],
-                CodeLocationLabel(startOfIC + sizeOfIC));
-
-            linkBuffer.link(generator.slowPathJump(),
-                state.finalizer->sideCodeLinkBuffer->locationOf(generator.slowPathBegin()));
-
-            generator.finalize(linkBuffer, *state.finalizer->sideCodeLinkBuffer);
-        });
-    }
-}
-
-static void generateCheckInICFastPath(
-    State& state, CodeBlock* codeBlock, GeneratedFunction generatedFunction,
-    StackMaps::RecordMap& recordMap, CheckInDescriptor& ic, size_t sizeOfIC)
-{
-    VM& vm = state.graph.m_vm;
-
-    StackMaps::RecordMap::iterator iter = recordMap.find(ic.stackmapID());
-    if (iter == recordMap.end()) {
-        // It was optimized out.
-        return;
-    }
-    
-    Vector<StackMaps::RecordAndIndex>& records = iter->value;
-    
-    RELEASE_ASSERT(records.size() == ic.m_generators.size());
-
-    for (unsigned i = records.size(); i--;) {
-        StackMaps::Record& record = records[i].record;
-        auto generator = ic.m_generators[i];
-
-        StructureStubInfo& stubInfo = *generator.m_stub;
-        auto call = generator.m_slowCall;
-        auto slowPathBegin = generator.m_beginLabel;
-
-        CCallHelpers fastPathJIT(&vm, codeBlock);
-        
-        auto jump = fastPathJIT.patchableJump();
-        auto done = fastPathJIT.label();
-
-        char* startOfIC =
-            bitwise_cast<char*>(generatedFunction) + record.instructionOffset;
-
-        auto postLink = [&] (LinkBuffer& fastPath, CCallHelpers&, bool) {
-            LinkBuffer& slowPath = *state.finalizer->sideCodeLinkBuffer;
-
-            state.finalizer->sideCodeLinkBuffer->link(
-                ic.m_slowPathDone[i], CodeLocationLabel(startOfIC + sizeOfIC));
-
-            CodeLocationLabel slowPathBeginLoc = slowPath.locationOf(slowPathBegin);
-            fastPath.link(jump, slowPathBeginLoc);
-
-            CodeLocationCall callReturnLocation = slowPath.locationOf(call);
-
-            stubInfo.patch.deltaCallToDone = MacroAssembler::differenceBetweenCodePtr(
-                callReturnLocation, fastPath.locationOf(done));
-
-            stubInfo.patch.deltaCallToJump = MacroAssembler::differenceBetweenCodePtr(
-                callReturnLocation, fastPath.locationOf(jump));
-            stubInfo.callReturnLocation = callReturnLocation;
-            stubInfo.patch.deltaCallToSlowCase = MacroAssembler::differenceBetweenCodePtr(
-                callReturnLocation, slowPathBeginLoc);
-        };
-
-        generateInlineIfPossibleOutOfLineIfNot(state, vm, codeBlock, fastPathJIT, startOfIC, sizeOfIC, "CheckIn", postLink);
-    }
-}
-
-static void generateBinaryOpICFastPath(
-    State& state, CodeBlock* codeBlock, GeneratedFunction generatedFunction,
-    StackMaps::RecordMap& recordMap, BinaryOpDescriptor& ic)
-{
-    VM& vm = state.graph.m_vm;
-    size_t sizeOfIC = ic.size();
-
-    StackMaps::RecordMap::iterator iter = recordMap.find(ic.stackmapID());
-    if (iter == recordMap.end())
-        return; // It was optimized out.
-
-    Vector<StackMaps::RecordAndIndex>& records = iter->value;
-
-    RELEASE_ASSERT(records.size() == ic.m_slowPathStarts.size());
-
-    for (unsigned i = records.size(); i--;) {
-        StackMaps::Record& record = records[i].record;
-
-        CCallHelpers fastPathJIT(&vm, codeBlock);
-
-        GPRReg result = record.locations[0].directGPR();
-        GPRReg left = record.locations[1].directGPR();
-        GPRReg right = record.locations[2].directGPR();
-        RegisterSet usedRegisters = usedRegistersFor(record);
-
-        CCallHelpers::Jump done;
-        CCallHelpers::Jump slowPathStart;
-
-        generateBinaryOpFastPath(ic, fastPathJIT, result, left, right, usedRegisters, done, slowPathStart);
-
-        char* startOfIC = bitwise_cast<char*>(generatedFunction) + record.instructionOffset;
-        generateInlineIfPossibleOutOfLineIfNot(state, vm, codeBlock, fastPathJIT, startOfIC, sizeOfIC, ic.name(), [&] (LinkBuffer& linkBuffer, CCallHelpers&, bool) {
-            linkBuffer.link(done, CodeLocationLabel(startOfIC + sizeOfIC));
-            state.finalizer->sideCodeLinkBuffer->link(ic.m_slowPathDone[i], CodeLocationLabel(startOfIC + sizeOfIC));
-            
-            linkBuffer.link(slowPathStart, state.finalizer->sideCodeLinkBuffer->locationOf(ic.m_slowPathStarts[i]));
-        });
-    }
-}
-
-#if ENABLE(MASM_PROBE)
-
-static void generateProbe(
-    State& state, CodeBlock* codeBlock, GeneratedFunction generatedFunction,
-    StackMaps::RecordMap& recordMap, ProbeDescriptor& ic)
-{
-    VM& vm = state.graph.m_vm;
-    size_t sizeOfIC = sizeOfProbe();
-
-    StackMaps::RecordMap::iterator iter = recordMap.find(ic.stackmapID());
-    if (iter == recordMap.end())
-        return; // It was optimized out.
-
-    CCallHelpers fastPathJIT(&vm, codeBlock);
-    Vector<StackMaps::RecordAndIndex>& records = iter->value;
-    for (unsigned i = records.size(); i--;) {
-        StackMaps::Record& record = records[i].record;
-
-        fastPathJIT.probe(ic.probeFunction());
-        CCallHelpers::Jump done = fastPathJIT.jump();
-
-        char* startOfIC = bitwise_cast<char*>(generatedFunction) + record.instructionOffset;
-        generateInlineIfPossibleOutOfLineIfNot(state, vm, codeBlock, fastPathJIT, startOfIC, sizeOfIC, "Probe", [&] (LinkBuffer& linkBuffer, CCallHelpers&, bool) {
-            linkBuffer.link(done, CodeLocationLabel(startOfIC + sizeOfIC));
-        });
-    }
-}
-
-#endif // ENABLE(MASM_PROBE)
-
-static RegisterSet usedRegistersFor(const StackMaps::Record& record)
-{
-    if (Options::assumeAllRegsInFTLICAreLive())
-        return RegisterSet::allRegisters();
-    return RegisterSet(record.usedRegisterSet(), RegisterSet::calleeSaveRegisters());
-}
-
-template<typename CallType>
-void adjustCallICsForStackmaps(Vector<CallType>& calls, StackMaps::RecordMap& recordMap, ExceptionHandlerManager& exceptionHandlerManager)
-{
-    // Handling JS calls is weird: we need to ensure that we sort them by the PC in LLVM
-    // generated code. That implies first pruning the ones that LLVM didn't generate.
-
-    Vector<CallType> oldCalls;
-    oldCalls.swap(calls);
-    
-    for (unsigned i = 0; i < oldCalls.size(); ++i) {
-        CallType& call = oldCalls[i];
-        
-        StackMaps::RecordMap::iterator iter = recordMap.find(call.stackmapID());
-        if (iter == recordMap.end())
-            continue;
-        
-        for (unsigned j = 0; j < iter->value.size(); ++j) {
-            CallType copy = call;
-            copy.m_instructionOffset = iter->value[j].record.instructionOffset;
-            copy.setCallSiteIndex(exceptionHandlerManager.procureCallSiteIndex(iter->value[j].index, copy));
-            copy.setCorrespondingGenericUnwindOSRExit(exceptionHandlerManager.getCallOSRExit(iter->value[j].index, copy));
-
-            calls.append(copy);
-        }
-    }
-
-    std::sort(calls.begin(), calls.end());
-}
-
-static void fixFunctionBasedOnStackMaps(
-    State& state, CodeBlock* codeBlock, JITCode* jitCode, GeneratedFunction generatedFunction,
-    StackMaps::RecordMap& recordMap)
-{
-    Graph& graph = state.graph;
-    VM& vm = graph.m_vm;
-    StackMaps& stackmaps = jitCode->stackmaps;
-
-    ExceptionHandlerManager exceptionHandlerManager(state);
-    
-    int localsOffset = offsetOfStackRegion(recordMap, state.capturedStackmapID) + graph.m_nextMachineLocal;
-    int varargsSpillSlotsOffset = offsetOfStackRegion(recordMap, state.varargsSpillSlotsStackmapID);
-    int osrExitFromGenericUnwindStackSpillSlot  = offsetOfStackRegion(recordMap, state.exceptionHandlingSpillSlotStackmapID);
-    jitCode->osrExitFromGenericUnwindStackSpillSlot = osrExitFromGenericUnwindStackSpillSlot;
-    
-    for (unsigned i = graph.m_inlineVariableData.size(); i--;) {
-        InlineCallFrame* inlineCallFrame = graph.m_inlineVariableData[i].inlineCallFrame;
-        
-        if (inlineCallFrame->argumentCountRegister.isValid())
-            inlineCallFrame->argumentCountRegister += localsOffset;
-        
-        for (unsigned argument = inlineCallFrame->arguments.size(); argument-- > 1;) {
-            inlineCallFrame->arguments[argument] =
-                inlineCallFrame->arguments[argument].withLocalsOffset(localsOffset);
-        }
-        
-        if (inlineCallFrame->isClosureCall) {
-            inlineCallFrame->calleeRecovery =
-                inlineCallFrame->calleeRecovery.withLocalsOffset(localsOffset);
-        }
-
-        if (graph.hasDebuggerEnabled())
-            codeBlock->setScopeRegister(codeBlock->scopeRegister() + localsOffset);
-    }
-    
-    MacroAssembler::Label stackOverflowException;
-
-    {
-        CCallHelpers checkJIT(&vm, codeBlock);
-        
-        // At this point it's perfectly fair to just blow away all state and restore the
-        // JS JIT view of the universe.
-        checkJIT.copyCalleeSavesToVMCalleeSavesBuffer();
-        checkJIT.move(MacroAssembler::TrustedImmPtr(&vm), GPRInfo::argumentGPR0);
-        checkJIT.move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR1);
-        MacroAssembler::Call callLookupExceptionHandler = checkJIT.call();
-        checkJIT.jumpToExceptionHandler();
-
-        stackOverflowException = checkJIT.label();
-        checkJIT.copyCalleeSavesToVMCalleeSavesBuffer();
-        checkJIT.move(MacroAssembler::TrustedImmPtr(&vm), GPRInfo::argumentGPR0);
-        checkJIT.move(GPRInfo::callFrameRegister, GPRInfo::argumentGPR1);
-        MacroAssembler::Call callLookupExceptionHandlerFromCallerFrame = checkJIT.call();
-        checkJIT.jumpToExceptionHandler();
-
-        auto linkBuffer = std::make_unique<LinkBuffer>(
-            vm, checkJIT, codeBlock, JITCompilationCanFail);
-        if (linkBuffer->didFailToAllocate()) {
-            state.allocationFailed = true;
-            return;
-        }
-        linkBuffer->link(callLookupExceptionHandler, FunctionPtr(lookupExceptionHandler));
-        linkBuffer->link(callLookupExceptionHandlerFromCallerFrame, FunctionPtr(lookupExceptionHandlerFromCallerFrame));
-
-        state.finalizer->handleExceptionsLinkBuffer = WTFMove(linkBuffer);
-    }
-
-    RELEASE_ASSERT(state.jitCode->osrExit.size() == 0);
-    HashMap<OSRExitDescriptor*, OSRExitDescriptorImpl*> genericUnwindOSRExitDescriptors;
-    for (unsigned i = 0; i < state.jitCode->osrExitDescriptors.size(); i++) {
-        OSRExitDescriptor* exitDescriptor = &state.jitCode->osrExitDescriptors[i];
-        auto iter = recordMap.find(exitDescriptor->m_stackmapID);
-        if (iter == recordMap.end()) {
-            // It was optimized out.
-            continue;
-        }
-
-        OSRExitDescriptorImpl& exitDescriptorImpl = state.osrExitDescriptorImpls[i];
-        if (exitDescriptorImpl.m_kind == GenericUnwind)
-            genericUnwindOSRExitDescriptors.add(exitDescriptor, &exitDescriptorImpl);
-
-        for (unsigned j = exitDescriptor->m_values.size(); j--;)
-            exitDescriptor->m_values[j] = exitDescriptor->m_values[j].withLocalsOffset(localsOffset);
-        for (ExitTimeObjectMaterialization* materialization : exitDescriptor->m_materializations)
-            materialization->accountForLocalsOffset(localsOffset);
-
-        for (unsigned j = 0; j < iter->value.size(); j++) {
-            {
-                uint32_t stackmapRecordIndex = iter->value[j].index;
-                OSRExit exit(exitDescriptor, exitDescriptorImpl.m_kind, exitDescriptorImpl, stackmapRecordIndex);
-                state.jitCode->osrExit.append(exit);
-                state.finalizer->osrExit.append(OSRExitCompilationInfo());
-            }
-
-            OSRExit& exit = state.jitCode->osrExit.last();
-            if (exit.willArriveAtExitFromIndirectExceptionCheck()) {
-                StackMaps::Record& record = iter->value[j].record;
-                RELEASE_ASSERT(exitDescriptorImpl.m_semanticCodeOriginForCallFrameHeader.isSet());
-                CallSiteIndex callSiteIndex = state.jitCode->common.addUniqueCallSiteIndex(exitDescriptorImpl.m_semanticCodeOriginForCallFrameHeader);
-                exit.m_exceptionHandlerCallSiteIndex = callSiteIndex;
-
-                OSRExit* callOperationExit = nullptr;
-                if (exitDescriptorImpl.m_exceptionType == ExceptionType::BinaryOpGenerator) {
-                    exceptionHandlerManager.addNewCallOperationExit(iter->value[j].index, state.jitCode->osrExit.size() - 1);
-                    callOperationExit = &exit;
-                } else
-                    exceptionHandlerManager.addNewExit(iter->value[j].index, state.jitCode->osrExit.size() - 1);
-                
-                if (exitDescriptorImpl.m_exceptionType == ExceptionType::GetById || exitDescriptorImpl.m_exceptionType == ExceptionType::PutById) {
-                    // We create two different OSRExits for GetById and PutById.
-                    // One exit that will be arrived at from the genericUnwind exception handler path,
-                    // and the other that will be arrived at from the callOperation exception handler path.
-                    // This code here generates the second callOperation variant.
-                    uint32_t stackmapRecordIndex = iter->value[j].index;
-                    OSRExit exit(exitDescriptor, ExceptionCheck, exitDescriptorImpl, stackmapRecordIndex);
-                    if (exitDescriptorImpl.m_exceptionType == ExceptionType::GetById)
-                        exit.m_exceptionType = ExceptionType::GetByIdCallOperation;
-                    else
-                        exit.m_exceptionType = ExceptionType::PutByIdCallOperation;
-                    CallSiteIndex callSiteIndex = state.jitCode->common.addUniqueCallSiteIndex(exitDescriptorImpl.m_semanticCodeOriginForCallFrameHeader);
-                    exit.m_exceptionHandlerCallSiteIndex = callSiteIndex;
-
-                    state.jitCode->osrExit.append(exit);
-                    state.finalizer->osrExit.append(OSRExitCompilationInfo());
-
-                    exceptionHandlerManager.addNewCallOperationExit(iter->value[j].index, state.jitCode->osrExit.size() - 1);
-                    callOperationExit = &state.jitCode->osrExit.last();
-                }
-
-                // BinaryOps and GetByIds have an interesting register preservation story,
-                // see comment below at GetById to read about it.
-                //
-                // We set the registers needing spillage here because they need to be set
-                // before we generate OSR exits so the exit knows to do the proper recovery.
-                if (exitDescriptorImpl.m_exceptionType == ExceptionType::JSCall) {
-                    // Call patchpoints might have values we want to do value recovery
-                    // on inside volatile registers. We need to collect the volatile
-                    // registers we want to do value recovery on here because they must
-                    // be preserved to the stack before the call, that way the OSR exit
-                    // exception handler can recover them into the proper registers.
-                    exit.gatherRegistersToSpillForCallIfException(stackmaps, record);
-                } else if (exitDescriptorImpl.m_exceptionType == ExceptionType::GetById || exitDescriptorImpl.m_exceptionType == ExceptionType::BinaryOpGenerator) {
-                    GPRReg result = record.locations[0].directGPR();
-                    RegisterSet registersNeededForOSRExit = record.usedRegisterSet();
-                    if (registersNeededForOSRExit.get(result))
-                        callOperationExit->registersToPreserveForCallThatMightThrow.set(result);
-                }
-            }
-        }
-    }
-    ExitThunkGenerator exitThunkGenerator(state);
-    exitThunkGenerator.emitThunks();
-    if (exitThunkGenerator.didThings()) {
-        RELEASE_ASSERT(state.finalizer->osrExit.size());
-        
-        auto linkBuffer = std::make_unique<LinkBuffer>(
-            vm, exitThunkGenerator, codeBlock, JITCompilationCanFail);
-        if (linkBuffer->didFailToAllocate()) {
-            state.allocationFailed = true;
-            return;
-        }
-        
-        RELEASE_ASSERT(state.finalizer->osrExit.size() == state.jitCode->osrExit.size());
-        
-        codeBlock->clearExceptionHandlers();
-
-        for (unsigned i = 0; i < state.jitCode->osrExit.size(); ++i) {
-            OSRExitCompilationInfo& info = state.finalizer->osrExit[i];
-            OSRExit& exit = state.jitCode->osrExit[i];
-            
-            if (verboseCompilationEnabled())
-                dataLog("Handling OSR stackmap #", exit.m_descriptor->m_stackmapID, " for ", exit.m_codeOrigin, "\n");
-
-            info.m_thunkAddress = linkBuffer->locationOf(info.m_thunkLabel);
-            exit.m_patchableCodeOffset = linkBuffer->offsetOf(info.m_thunkJump);
-
-            if (exit.isGenericUnwindHandler()) {
-                HandlerInfo newHandler = genericUnwindOSRExitDescriptors.get(exit.m_descriptor)->m_baselineExceptionHandler;
-                newHandler.start = exit.m_exceptionHandlerCallSiteIndex.bits();
-                newHandler.end = exit.m_exceptionHandlerCallSiteIndex.bits() + 1;
-                newHandler.nativeCode = info.m_thunkAddress;
-                codeBlock->appendExceptionHandler(newHandler);
-            }
-
-            if (verboseCompilationEnabled()) {
-                DumpContext context;
-                dataLog("    Exit values: ", inContext(exit.m_descriptor->m_values, &context), "\n");
-                if (!exit.m_descriptor->m_materializations.isEmpty()) {
-                    dataLog("    Materializations: \n");
-                    for (ExitTimeObjectMaterialization* materialization : exit.m_descriptor->m_materializations)
-                        dataLog("        Materialize(", pointerDump(materialization), ")\n");
-                }
-            }
-        }
-        
-        state.finalizer->exitThunksLinkBuffer = WTFMove(linkBuffer);
-    }
-
-    if (!state.getByIds.isEmpty()
-        || !state.putByIds.isEmpty()
-        || !state.checkIns.isEmpty()
-        || !state.binaryOps.isEmpty()
-        || !state.lazySlowPaths.isEmpty()) {
-        CCallHelpers slowPathJIT(&vm, codeBlock);
-        
-        CCallHelpers::JumpList exceptionTarget;
-
-        Vector<std::pair<CCallHelpers::JumpList, CodeLocationLabel>> exceptionJumpsToLink;
-        auto addNewExceptionJumpIfNecessary = [&] (uint32_t recordIndex) {
-            CodeLocationLabel exceptionTarget = exceptionHandlerManager.callOperationExceptionTarget(recordIndex);
-            if (!exceptionTarget)
-                return false;
-            exceptionJumpsToLink.append(
-                std::make_pair(CCallHelpers::JumpList(), exceptionTarget));
-            return true;
-        };
-        
-        for (unsigned i = state.getByIds.size(); i--;) {
-            GetByIdDescriptor& getById = state.getByIds[i];
-            
-            if (verboseCompilationEnabled())
-                dataLog("Handling GetById stackmap #", getById.stackmapID(), "\n");
-            
-            auto iter = recordMap.find(getById.stackmapID());
-            if (iter == recordMap.end()) {
-                // It was optimized out.
-                continue;
-            }
-            
-            CodeOrigin codeOrigin = getById.codeOrigin();
-            for (unsigned i = 0; i < iter->value.size(); ++i) {
-                StackMaps::Record& record = iter->value[i].record;
-            
-                RegisterSet usedRegisters = usedRegistersFor(record);
-                
-                GPRReg result = record.locations[0].directGPR();
-                GPRReg base = record.locations[1].directGPR();
-                
-                JITGetByIdGenerator gen(
-                    codeBlock, codeOrigin, exceptionHandlerManager.procureCallSiteIndex(iter->value[i].index, codeOrigin), usedRegisters, JSValueRegs(base),
-                    JSValueRegs(result));
-                
-                bool addedUniqueExceptionJump = addNewExceptionJumpIfNecessary(iter->value[i].index);
-                MacroAssembler::Label begin = slowPathJIT.label();
-                // We take care to always spill the result whenever we need to do value recovery
-                // on it in the OSR exit. This is because the callOperation(.) machinery doesn't
-                // ever spill the result value. It actually takes care to never spill the result
-                // because it overwrites it with the result of the call. But, with exceptions and
-                // OSR exits, we may need the result value prior to the call during OSR exit.
-                // We take care to mark it for spillage now.
-                //
-                // This also handles another really interesting register preservation story: 
-                // We may have a GetById/Snippet inside a try block where LLVM assigns the result
-                // and the base to the same register. The inline cache may miss and we may end up
-                // at this slow path callOperation. Then, because the base and the result are both
-                // the same register, the return value of the C call gets stored into the original
-                // base register. If the operationGetByIdOptimize throws, it will return "undefined"
-                // and we will be stuck with "undefined" in the base register that we would like to 
-                // do value recovery on. We combat this situation from ever taking place by ensuring
-                // we spill the original base value (i.e the result register).
-                if (OSRExit* exit = exceptionHandlerManager.callOperationOSRExit(iter->value[i].index))
-                    exit->spillRegistersToSpillSlot(slowPathJIT, osrExitFromGenericUnwindStackSpillSlot);
-                MacroAssembler::Call call = callOperation(
-                    state, usedRegisters, slowPathJIT, codeOrigin, addedUniqueExceptionJump ? &exceptionJumpsToLink.last().first : &exceptionTarget,
-                    operationGetByIdOptimize, result, CCallHelpers::TrustedImmPtr(gen.stubInfo()),
-                    base, CCallHelpers::TrustedImmPtr(getById.uid())).call();
-
-                gen.reportSlowPathCall(begin, call);
-
-                getById.m_slowPathDone.append(slowPathJIT.jump());
-                getById.m_generators.append(gen);
-            }
-        }
-        
-        for (unsigned i = state.putByIds.size(); i--;) {
-            PutByIdDescriptor& putById = state.putByIds[i];
-            
-            if (verboseCompilationEnabled())
-                dataLog("Handling PutById stackmap #", putById.stackmapID(), "\n");
-            
-            auto iter = recordMap.find(putById.stackmapID());
-            if (iter == recordMap.end()) {
-                // It was optimized out.
-                continue;
-            }
-            
-            CodeOrigin codeOrigin = putById.codeOrigin();
-            for (unsigned i = 0; i < iter->value.size(); ++i) {
-                StackMaps::Record& record = iter->value[i].record;
-                
-                RegisterSet usedRegisters = usedRegistersFor(record);
-                
-                GPRReg base = record.locations[0].directGPR();
-                GPRReg value = record.locations[1].directGPR();
-                
-                JITPutByIdGenerator gen(
-                    codeBlock, codeOrigin, exceptionHandlerManager.procureCallSiteIndex(iter->value[i].index, codeOrigin), usedRegisters, JSValueRegs(base),
-                    JSValueRegs(value), GPRInfo::patchpointScratchRegister, putById.ecmaMode(), putById.putKind());
-                
-                bool addedUniqueExceptionJump = addNewExceptionJumpIfNecessary(iter->value[i].index);
-
-                MacroAssembler::Label begin = slowPathJIT.label();
-
-                if (OSRExit* exit = exceptionHandlerManager.callOperationOSRExit(iter->value[i].index))
-                    exit->spillRegistersToSpillSlot(slowPathJIT, osrExitFromGenericUnwindStackSpillSlot);
-
-                MacroAssembler::Call call = callOperation(
-                    state, usedRegisters, slowPathJIT, codeOrigin, addedUniqueExceptionJump ? &exceptionJumpsToLink.last().first : &exceptionTarget,
-                    gen.slowPathFunction(), InvalidGPRReg,
-                    CCallHelpers::TrustedImmPtr(gen.stubInfo()), value, base,
-                    CCallHelpers::TrustedImmPtr(putById.uid())).call();
-                
-                gen.reportSlowPathCall(begin, call);
-                
-                putById.m_slowPathDone.append(slowPathJIT.jump());
-                putById.m_generators.append(gen);
-            }
-        }
-
-        for (unsigned i = state.checkIns.size(); i--;) {
-            CheckInDescriptor& checkIn = state.checkIns[i];
-            
-            if (verboseCompilationEnabled())
-                dataLog("Handling checkIn stackmap #", checkIn.stackmapID(), "\n");
-            
-            auto iter = recordMap.find(checkIn.stackmapID());
-            if (iter == recordMap.end()) {
-                // It was optimized out.
-                continue;
-            }
-            
-            CodeOrigin codeOrigin = checkIn.codeOrigin();
-            for (unsigned i = 0; i < iter->value.size(); ++i) {
-                StackMaps::Record& record = iter->value[i].record;
-                RegisterSet usedRegisters = usedRegistersFor(record);
-                GPRReg result = record.locations[0].directGPR();
-                GPRReg obj = record.locations[1].directGPR();
-                StructureStubInfo* stubInfo = codeBlock->addStubInfo(AccessType::In); 
-                stubInfo->codeOrigin = codeOrigin;
-                stubInfo->callSiteIndex = state.jitCode->common.addUniqueCallSiteIndex(codeOrigin);
-                stubInfo->patch.baseGPR = static_cast<int8_t>(obj);
-                stubInfo->patch.valueGPR = static_cast<int8_t>(result);
-                stubInfo->patch.usedRegisters = usedRegisters;
-
-                MacroAssembler::Label begin = slowPathJIT.label();
-
-                MacroAssembler::Call slowCall = callOperation(
-                    state, usedRegisters, slowPathJIT, codeOrigin, &exceptionTarget,
-                    operationInOptimize, result, CCallHelpers::TrustedImmPtr(stubInfo), obj,
-                    CCallHelpers::TrustedImmPtr(checkIn.uid())).call();
-
-                checkIn.m_slowPathDone.append(slowPathJIT.jump());
-                
-                checkIn.m_generators.append(CheckInGenerator(stubInfo, slowCall, begin));
-            }
-        }
-
-        for (size_t i = state.binaryOps.size(); i--;) {
-            BinaryOpDescriptor& binaryOp = state.binaryOps[i];
-            
-            if (verboseCompilationEnabled())
-                dataLog("Handling ", binaryOp.name(), " stackmap #", binaryOp.stackmapID(), "\n");
-            
-            auto iter = recordMap.find(binaryOp.stackmapID());
-            if (iter == recordMap.end())
-                continue; // It was optimized out.
-            
-            CodeOrigin codeOrigin = binaryOp.codeOrigin();
-            for (unsigned i = 0; i < iter->value.size(); ++i) {
-                StackMaps::Record& record = iter->value[i].record;
-                RegisterSet usedRegisters = usedRegistersFor(record);
-
-                GPRReg result = record.locations[0].directGPR();
-                GPRReg left = record.locations[1].directGPR();
-                GPRReg right = record.locations[2].directGPR();
-
-                binaryOp.m_slowPathStarts.append(slowPathJIT.label());
-                bool addedUniqueExceptionJump = addNewExceptionJumpIfNecessary(iter->value[i].index);
-                // This situation has a really interesting register preservation story.
-                // See comment above for GetByIds.
-                if (OSRExit* exit = exceptionHandlerManager.callOperationOSRExit(iter->value[i].index))
-                    exit->spillRegistersToSpillSlot(slowPathJIT, osrExitFromGenericUnwindStackSpillSlot);
-
-                callOperation(state, usedRegisters, slowPathJIT, codeOrigin, addedUniqueExceptionJump ? &exceptionJumpsToLink.last().first : &exceptionTarget,
-                    binaryOp.slowPathFunction(), result, left, right).call();
-
-                binaryOp.m_slowPathDone.append(slowPathJIT.jump());
-            }
-        }
-
-        for (unsigned i = state.lazySlowPaths.size(); i--;) {
-            LazySlowPathDescriptor& descriptor = state.lazySlowPaths[i];
-
-            if (verboseCompilationEnabled())
-                dataLog("Handling lazySlowPath stackmap #", descriptor.stackmapID(), "\n");
-
-            auto iter = recordMap.find(descriptor.stackmapID());
-            if (iter == recordMap.end()) {
-                // It was optimized out.
-                continue;
-            }
-            CodeOrigin codeOrigin = descriptor.codeOrigin();
-            for (unsigned i = 0; i < iter->value.size(); ++i) {
-                StackMaps::Record& record = iter->value[i].record;
-                RegisterSet usedRegisters = usedRegistersFor(record);
-                char* startOfIC =
-                    bitwise_cast<char*>(generatedFunction) + record.instructionOffset;
-                CodeLocationLabel patchpoint((MacroAssemblerCodePtr(startOfIC)));
-                CodeLocationLabel exceptionTarget = exceptionHandlerManager.lazySlowPathExceptionTarget(iter->value[i].index);
-                if (!exceptionTarget)
-                    exceptionTarget = state.finalizer->handleExceptionsLinkBuffer->entrypoint();
-
-                ScratchRegisterAllocator scratchAllocator(usedRegisters);
-                GPRReg newZero = InvalidGPRReg;
-                Vector<Location> locations;
-                for (auto stackmapLocation : record.locations) {
-                    FTL::Location location = Location::forStackmaps(&stackmaps, stackmapLocation);
-                    if (isARM64()) {
-                        // If LLVM proves that something is zero, it may pass us the zero register (aka, the stack pointer). Our assembler
-                        // isn't prepared to handle this well. We need to move it into a different register if such a case arises.
-                        if (location.isGPR() && location.gpr() == MacroAssembler::stackPointerRegister) {
-                            if (newZero == InvalidGPRReg) {
-                                newZero = scratchAllocator.allocateScratchGPR();
-                                usedRegisters.set(newZero);
-                            }
-                            location = FTL::Location::forRegister(DWARFRegister(static_cast<uint16_t>(newZero)), 0); // DWARF GPRs for arm64 are sensibly numbered.
-                        }
-                    }
-                    locations.append(location);
-                }
-
-                std::unique_ptr<LazySlowPath> lazySlowPath = std::make_unique<LazySlowPath>(
-                    patchpoint, exceptionTarget, usedRegisters, exceptionHandlerManager.procureCallSiteIndex(iter->value[i].index, codeOrigin),
-                    descriptor.m_linker->run(locations), newZero, scratchAllocator);
-
-                CCallHelpers::Label begin = slowPathJIT.label();
-
-                slowPathJIT.pushToSaveImmediateWithoutTouchingRegisters(
-                    CCallHelpers::TrustedImm32(state.jitCode->lazySlowPaths.size()));
-                CCallHelpers::Jump generatorJump = slowPathJIT.jump();
-                
-                descriptor.m_generators.append(std::make_tuple(lazySlowPath.get(), begin));
-
-                state.jitCode->lazySlowPaths.append(WTFMove(lazySlowPath));
-                state.finalizer->lazySlowPathGeneratorJumps.append(generatorJump);
-            }
-        }
-        
-        exceptionTarget.link(&slowPathJIT);
-        MacroAssembler::Jump exceptionJump = slowPathJIT.jump();
-        
-        state.finalizer->sideCodeLinkBuffer = std::make_unique<LinkBuffer>(vm, slowPathJIT, codeBlock, JITCompilationCanFail);
-        if (state.finalizer->sideCodeLinkBuffer->didFailToAllocate()) {
-            state.allocationFailed = true;
-            return;
-        }
-        state.finalizer->sideCodeLinkBuffer->link(
-            exceptionJump, state.finalizer->handleExceptionsLinkBuffer->entrypoint());
-        
-        for (unsigned i = state.getByIds.size(); i--;) {
-            generateICFastPath(
-                state, codeBlock, generatedFunction, recordMap, state.getByIds[i],
-                sizeOfGetById(), "GetById");
-        }
-        for (unsigned i = state.putByIds.size(); i--;) {
-            generateICFastPath(
-                state, codeBlock, generatedFunction, recordMap, state.putByIds[i],
-                sizeOfPutById(), "PutById");
-        }
-        for (unsigned i = state.checkIns.size(); i--;) {
-            generateCheckInICFastPath(
-                state, codeBlock, generatedFunction, recordMap, state.checkIns[i],
-                sizeOfIn()); 
-        }
-        for (unsigned i = state.binaryOps.size(); i--;) {
-            BinaryOpDescriptor& binaryOp = state.binaryOps[i];
-            generateBinaryOpICFastPath(state, codeBlock, generatedFunction, recordMap, binaryOp);
-        }
-        for (unsigned i = state.lazySlowPaths.size(); i--;) {
-            LazySlowPathDescriptor& lazySlowPath = state.lazySlowPaths[i];
-            for (auto& tuple : lazySlowPath.m_generators) {
-                MacroAssembler::replaceWithJump(
-                    std::get<0>(tuple)->patchpoint(),
-                    state.finalizer->sideCodeLinkBuffer->locationOf(std::get<1>(tuple)));
-            }
-        }
-#if ENABLE(MASM_PROBE)
-        for (unsigned i = state.probes.size(); i--;) {
-            ProbeDescriptor& probe = state.probes[i];
-            generateProbe(state, codeBlock, generatedFunction, recordMap, probe);
-        }
-#endif
-        for (auto& pair : exceptionJumpsToLink)
-            state.finalizer->sideCodeLinkBuffer->link(pair.first, pair.second);
-    }
-    
-    adjustCallICsForStackmaps(state.jsCalls, recordMap, exceptionHandlerManager);
-    
-    for (unsigned i = state.jsCalls.size(); i--;) {
-        JSCall& call = state.jsCalls[i];
-
-        CCallHelpers fastPathJIT(&vm, codeBlock);
-        call.emit(fastPathJIT, state, osrExitFromGenericUnwindStackSpillSlot);
-
-        char* startOfIC = bitwise_cast<char*>(generatedFunction) + call.m_instructionOffset;
-
-        generateInlineIfPossibleOutOfLineIfNot(state, vm, codeBlock, fastPathJIT, startOfIC, sizeOfCall(), "JSCall", [&] (LinkBuffer& linkBuffer, CCallHelpers&, bool) {
-            call.link(vm, linkBuffer);
-        });
-    }
-    
-    adjustCallICsForStackmaps(state.jsCallVarargses, recordMap, exceptionHandlerManager);
-    
-    for (unsigned i = state.jsCallVarargses.size(); i--;) {
-        JSCallVarargs& call = state.jsCallVarargses[i];
-        
-        CCallHelpers fastPathJIT(&vm, codeBlock);
-        call.emit(fastPathJIT, state, varargsSpillSlotsOffset, osrExitFromGenericUnwindStackSpillSlot);
-
-        char* startOfIC = bitwise_cast<char*>(generatedFunction) + call.m_instructionOffset;
-        size_t sizeOfIC = sizeOfICFor(call.node());
-
-        generateInlineIfPossibleOutOfLineIfNot(state, vm, codeBlock, fastPathJIT, startOfIC, sizeOfIC, "varargs call", [&] (LinkBuffer& linkBuffer, CCallHelpers&, bool) {
-            call.link(vm, linkBuffer, state.finalizer->handleExceptionsLinkBuffer->entrypoint());
-        });
-    }
-
-    adjustCallICsForStackmaps(state.jsTailCalls, recordMap, exceptionHandlerManager);
-
-    for (unsigned i = state.jsTailCalls.size(); i--;) {
-        JSTailCall& call = state.jsTailCalls[i];
-
-        CCallHelpers fastPathJIT(&vm, codeBlock);
-        call.emit(*state.jitCode.get(), fastPathJIT);
-
-        char* startOfIC = bitwise_cast<char*>(generatedFunction) + call.m_instructionOffset;
-        size_t sizeOfIC = call.estimatedSize();
-
-        generateInlineIfPossibleOutOfLineIfNot(state, vm, codeBlock, fastPathJIT, startOfIC, sizeOfIC, "tail call", [&] (LinkBuffer& linkBuffer, CCallHelpers&, bool) {
-            call.link(vm, linkBuffer);
-        });
-    }
-    
-    auto iter = recordMap.find(state.handleStackOverflowExceptionStackmapID);
-    // It's sort of remotely possible that we won't have an in-band exception handling
-    // path, for some kinds of functions.
-    if (iter != recordMap.end()) {
-        for (unsigned i = iter->value.size(); i--;) {
-            StackMaps::Record& record = iter->value[i].record;
-            
-            CodeLocationLabel source = CodeLocationLabel(
-                bitwise_cast<char*>(generatedFunction) + record.instructionOffset);
-
-            RELEASE_ASSERT(stackOverflowException.isSet());
-
-            MacroAssembler::replaceWithJump(source, state.finalizer->handleExceptionsLinkBuffer->locationOf(stackOverflowException));
-        }
-    }
-    
-    iter = recordMap.find(state.handleExceptionStackmapID);
-    // It's sort of remotely possible that we won't have an in-band exception handling
-    // path, for some kinds of functions.
-    if (iter != recordMap.end()) {
-        for (unsigned i = iter->value.size(); i--;) {
-            StackMaps::Record& record = iter->value[i].record;
-            
-            CodeLocationLabel source = CodeLocationLabel(
-                bitwise_cast<char*>(generatedFunction) + record.instructionOffset);
-            
-            MacroAssembler::replaceWithJump(source, state.finalizer->handleExceptionsLinkBuffer->entrypoint());
-        }
-    }
-    
-    for (unsigned exitIndex = 0; exitIndex < jitCode->osrExit.size(); ++exitIndex) {
-        OSRExitCompilationInfo& info = state.finalizer->osrExit[exitIndex];
-        OSRExit& exit = jitCode->osrExit[exitIndex];
-        Vector<const void*> codeAddresses;
-
-        if (exit.willArriveAtExitFromIndirectExceptionCheck()) // This jump doesn't happen directly from a patchpoint/stackmap we compile. It happens indirectly through an exception check somewhere.
-            continue;
-        
-        StackMaps::Record& record = jitCode->stackmaps.records[exit.m_stackmapRecordIndex];
-        
-        CodeLocationLabel source = CodeLocationLabel(
-            bitwise_cast<char*>(generatedFunction) + record.instructionOffset);
-        
-        codeAddresses.append(bitwise_cast<char*>(generatedFunction) + record.instructionOffset + MacroAssembler::maxJumpReplacementSize());
-        
-        if (exit.m_descriptor->m_isInvalidationPoint)
-            jitCode->common.jumpReplacements.append(JumpReplacement(source, info.m_thunkAddress));
-        else
-            MacroAssembler::replaceWithJump(source, info.m_thunkAddress);
-        
-        if (graph.compilation())
-            graph.compilation()->addOSRExitSite(codeAddresses);
-    }
-}
-
-void compile(State& state, Safepoint::Result& safepointResult)
-{
-    char* error = 0;
-    
-    {
-        GraphSafepoint safepoint(state.graph, safepointResult);
-        
-        LLVMMCJITCompilerOptions options;
-        llvm->InitializeMCJITCompilerOptions(&options, sizeof(options));
-        options.OptLevel = Options::llvmBackendOptimizationLevel();
-        options.NoFramePointerElim = true;
-        if (Options::useLLVMSmallCodeModel())
-            options.CodeModel = LLVMCodeModelSmall;
-        options.EnableFastISel = enableLLVMFastISel;
-        options.MCJMM = llvm->CreateSimpleMCJITMemoryManager(
-            &state, mmAllocateCodeSection, mmAllocateDataSection, mmApplyPermissions, mmDestroy);
-    
-        LLVMExecutionEngineRef engine;
-        
-        if (isARM64()) {
-#if OS(DARWIN)
-            llvm->SetTarget(state.module, "arm64-apple-ios");
-#elif OS(LINUX)
-            llvm->SetTarget(state.module, "aarch64-linux-gnu");
-#else
-#error "Unrecognized OS"
-#endif
-        }
-
-        if (llvm->CreateMCJITCompilerForModule(&engine, state.module, &options, sizeof(options), &error)) {
-            dataLog("FATAL: Could not create LLVM execution engine: ", error, "\n");
-            CRASH();
-        }
-        
-        // At this point we no longer own the module.
-        LModule module = state.module;
-        state.module = nullptr;
-
-        // The data layout also has to be set in the module. Get the data layout from the MCJIT and apply
-        // it to the module.
-        LLVMTargetMachineRef targetMachine = llvm->GetExecutionEngineTargetMachine(engine);
-        LLVMTargetDataRef targetData = llvm->GetExecutionEngineTargetData(engine);
-        char* stringRepOfTargetData = llvm->CopyStringRepOfTargetData(targetData);
-        llvm->SetDataLayout(module, stringRepOfTargetData);
-        free(stringRepOfTargetData);
-
-        LLVMPassManagerRef functionPasses = 0;
-        LLVMPassManagerRef modulePasses;
-
-        if (Options::llvmSimpleOpt()) {
-            modulePasses = llvm->CreatePassManager();
-            llvm->AddTargetData(targetData, modulePasses);
-            llvm->AddAnalysisPasses(targetMachine, modulePasses);
-            llvm->AddPromoteMemoryToRegisterPass(modulePasses);
-            llvm->AddGlobalOptimizerPass(modulePasses);
-            llvm->AddFunctionInliningPass(modulePasses);
-            llvm->AddPruneEHPass(modulePasses);
-            llvm->AddGlobalDCEPass(modulePasses);
-            llvm->AddConstantPropagationPass(modulePasses);
-            llvm->AddAggressiveDCEPass(modulePasses);
-            llvm->AddInstructionCombiningPass(modulePasses);
-            // BEGIN - DO NOT CHANGE THE ORDER OF THE ALIAS ANALYSIS PASSES
-            llvm->AddTypeBasedAliasAnalysisPass(modulePasses);
-            llvm->AddBasicAliasAnalysisPass(modulePasses);
-            // END - DO NOT CHANGE THE ORDER OF THE ALIAS ANALYSIS PASSES
-            llvm->AddGVNPass(modulePasses);
-            llvm->AddCFGSimplificationPass(modulePasses);
-            llvm->AddDeadStoreEliminationPass(modulePasses);
-            
-            if (enableLLVMFastISel)
-                llvm->AddLowerSwitchPass(modulePasses);
-
-            llvm->RunPassManager(modulePasses, module);
-        } else {
-            LLVMPassManagerBuilderRef passBuilder = llvm->PassManagerBuilderCreate();
-            llvm->PassManagerBuilderSetOptLevel(passBuilder, Options::llvmOptimizationLevel());
-            llvm->PassManagerBuilderUseInlinerWithThreshold(passBuilder, 275);
-            llvm->PassManagerBuilderSetSizeLevel(passBuilder, Options::llvmSizeLevel());
-        
-            functionPasses = llvm->CreateFunctionPassManagerForModule(module);
-            modulePasses = llvm->CreatePassManager();
-        
-            llvm->AddTargetData(llvm->GetExecutionEngineTargetData(engine), modulePasses);
-        
-            llvm->PassManagerBuilderPopulateFunctionPassManager(passBuilder, functionPasses);
-            llvm->PassManagerBuilderPopulateModulePassManager(passBuilder, modulePasses);
-        
-            llvm->PassManagerBuilderDispose(passBuilder);
-        
-            llvm->InitializeFunctionPassManager(functionPasses);
-            for (LValue function = llvm->GetFirstFunction(module); function; function = llvm->GetNextFunction(function))
-                llvm->RunFunctionPassManager(functionPasses, function);
-            llvm->FinalizeFunctionPassManager(functionPasses);
-        
-            llvm->RunPassManager(modulePasses, module);
-        }
-
-        if (shouldDumpDisassembly() || verboseCompilationEnabled())
-            state.dumpState(module, "after optimization");
-        
-        // FIXME: Need to add support for the case where JIT memory allocation failed.
-        // https://bugs.webkit.org/show_bug.cgi?id=113620
-        state.generatedFunction = reinterpret_cast<GeneratedFunction>(llvm->GetPointerToGlobal(engine, state.function));
-        if (functionPasses)
-            llvm->DisposePassManager(functionPasses);
-        llvm->DisposePassManager(modulePasses);
-        llvm->DisposeExecutionEngine(engine);
-    }
-
-    if (safepointResult.didGetCancelled())
-        return;
-    RELEASE_ASSERT(!state.graph.m_vm.heap.isCollecting());
-    
-    if (state.allocationFailed)
-        return;
-    
-    if (shouldDumpDisassembly()) {
-        for (unsigned i = 0; i < state.jitCode->handles().size(); ++i) {
-            ExecutableMemoryHandle* handle = state.jitCode->handles()[i].get();
-            dataLog(
-                "Generated LLVM code for ",
-                CodeBlockWithJITType(state.graph.m_codeBlock, JITCode::FTLJIT),
-                " #", i, ", ", state.codeSectionNames[i], ":\n");
-            disassemble(
-                MacroAssemblerCodePtr(handle->start()), handle->sizeInBytes(),
-                "    ", WTF::dataFile(), LLVMSubset);
-        }
-        
-        for (unsigned i = 0; i < state.jitCode->dataSections().size(); ++i) {
-            DataSection* section = state.jitCode->dataSections()[i].get();
-            dataLog(
-                "Generated LLVM data section for ",
-                CodeBlockWithJITType(state.graph.m_codeBlock, JITCode::FTLJIT),
-                " #", i, ", ", state.dataSectionNames[i], ":\n");
-            dumpDataSection(section, "    ");
-        }
-    }
-    
-    std::unique_ptr<RegisterAtOffsetList> registerOffsets = parseUnwindInfo(
-        state.unwindDataSection, state.unwindDataSectionSize,
-        state.generatedFunction);
-    if (shouldDumpDisassembly()) {
-        dataLog("Unwind info for ", CodeBlockWithJITType(state.graph.m_codeBlock, JITCode::FTLJIT), ":\n");
-        dataLog("    ", *registerOffsets, "\n");
-    }
-    state.graph.m_codeBlock->setCalleeSaveRegisters(WTFMove(registerOffsets));
-    
-    if (state.stackmapsSection && state.stackmapsSection->size()) {
-        if (shouldDumpDisassembly()) {
-            dataLog(
-                "Generated LLVM stackmaps section for ",
-                CodeBlockWithJITType(state.graph.m_codeBlock, JITCode::FTLJIT), ":\n");
-            dataLog("    Raw data:\n");
-            dumpDataSection(state.stackmapsSection.get(), "    ");
-        }
-        
-        RefPtr<DataView> stackmapsData = DataView::create(
-            ArrayBuffer::create(state.stackmapsSection->base(), state.stackmapsSection->size()));
-        state.jitCode->stackmaps.parse(stackmapsData.get());
-    
-        if (shouldDumpDisassembly()) {
-            dataLog("    Structured data:\n");
-            state.jitCode->stackmaps.dumpMultiline(WTF::dataFile(), "        ");
-        }
-        
-        StackMaps::RecordMap recordMap = state.jitCode->stackmaps.computeRecordMap();
-        fixFunctionBasedOnStackMaps(
-            state, state.graph.m_codeBlock, state.jitCode.get(), state.generatedFunction,
-            recordMap);
-        if (state.allocationFailed)
-            return;
-        
-        if (shouldDumpDisassembly() || Options::asyncDisassembly()) {
-            for (unsigned i = 0; i < state.jitCode->handles().size(); ++i) {
-                if (state.codeSectionNames[i] != SECTION_NAME("text"))
-                    continue;
-                
-                ExecutableMemoryHandle* handle = state.jitCode->handles()[i].get();
-                
-                CString header = toCString(
-                    "Generated LLVM code after stackmap-based fix-up for ",
-                    CodeBlockWithJITType(state.graph.m_codeBlock, JITCode::FTLJIT),
-                    " in ", state.graph.m_plan.mode, " #", i, ", ",
-                    state.codeSectionNames[i], ":\n");
-                
-                if (Options::asyncDisassembly()) {
-                    disassembleAsynchronously(
-                        header, MacroAssemblerCodeRef(handle), handle->sizeInBytes(), "    ",
-                        LLVMSubset);
-                    continue;
-                }
-                
-                dataLog(header);
-                disassemble(
-                    MacroAssemblerCodePtr(handle->start()), handle->sizeInBytes(),
-                    "    ", WTF::dataFile(), LLVMSubset);
-            }
-        }
-    }
-}
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT) && FTL_USES_B3
-
diff --git a/Source/JavaScriptCore/ftl/FTLCompileBinaryOp.cpp b/Source/JavaScriptCore/ftl/FTLCompileBinaryOp.cpp
deleted file mode 100644 (file)
index 4345f84..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (C) 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "FTLCompileBinaryOp.h"
-
-#if ENABLE(FTL_JIT)
-
-#include "DFGNodeType.h"
-#include "FTLInlineCacheDescriptor.h"
-#include "GPRInfo.h"
-#include "JITAddGenerator.h"
-#include "JITBitAndGenerator.h"
-#include "JITBitOrGenerator.h"
-#include "JITBitXorGenerator.h"
-#include "JITDivGenerator.h"
-#include "JITLeftShiftGenerator.h"
-#include "JITMulGenerator.h"
-#include "JITRightShiftGenerator.h"
-#include "JITSubGenerator.h"
-#include "ScratchRegisterAllocator.h"
-
-namespace JSC { namespace FTL {
-
-using namespace DFG;
-
-class BinarySnippetRegisterContext {
-    // The purpose of this class is to shuffle registers to get them into the state
-    // that baseline code expects so that we can use the baseline snippet generators i.e.
-    //    1. Ensure that the inputs and output are not in reserved registers (which
-    //       include the tag registers). The snippet will use these reserved registers.
-    //       Hence, we need to put the inputs and output in other scratch registers.
-    //    2. Tag registers are loaded with the expected values.
-    //
-    // When the snippet is done:
-    //    1. If we had re-assigned the result register to a scratch, we need to copy the
-    //       result back from the scratch.
-    //    2. Restore the input and tag registers to the values that LLVM put there originally.
-    //       That is unless when one of them is also the result register. In that case, we
-    //       don't want to trash the result, and hence, should not restore into it.
-
-public:
-    BinarySnippetRegisterContext(ScratchRegisterAllocator& allocator, GPRReg& result, GPRReg& left, GPRReg& right)
-        : m_allocator(allocator)
-        , m_result(result)
-        , m_left(left)
-        , m_right(right)
-        , m_origResult(result)
-        , m_origLeft(left)
-        , m_origRight(right)
-    {
-        m_allocator.lock(m_result);
-        m_allocator.lock(m_left);
-        m_allocator.lock(m_right);
-
-        RegisterSet inputAndOutputRegisters = RegisterSet(m_left, m_right, m_result);
-        RegisterSet reservedRegisters;
-        for (GPRReg reg : GPRInfo::reservedRegisters())
-            reservedRegisters.set(reg);
-
-        if (reservedRegisters.get(m_left))
-            m_left = m_allocator.allocateScratchGPR();
-        if (reservedRegisters.get(m_right)) {
-            if (m_origRight == m_origLeft)
-                m_right = m_left;
-            else
-                m_right = m_allocator.allocateScratchGPR();
-        }
-        if (reservedRegisters.get(m_result)) {
-            if (m_origResult == m_origLeft)
-                m_result = m_left;
-            else if (m_origResult == m_origRight)
-                m_result = m_right;
-            else
-                m_result = m_allocator.allocateScratchGPR();
-        }
-
-        if (!inputAndOutputRegisters.get(GPRInfo::tagMaskRegister))
-            m_savedTagMaskRegister = m_allocator.allocateScratchGPR();
-        if (!inputAndOutputRegisters.get(GPRInfo::tagTypeNumberRegister))
-            m_savedTagTypeNumberRegister = m_allocator.allocateScratchGPR();
-    }
-
-    void initializeRegisters(CCallHelpers& jit)
-    {
-        if (m_left != m_origLeft)
-            jit.move(m_origLeft, m_left);
-        if (m_right != m_origRight && m_origRight != m_origLeft)
-            jit.move(m_origRight, m_right);
-        
-        if (m_savedTagMaskRegister != InvalidGPRReg)
-            jit.move(GPRInfo::tagMaskRegister, m_savedTagMaskRegister);
-        if (m_savedTagTypeNumberRegister != InvalidGPRReg)
-            jit.move(GPRInfo::tagTypeNumberRegister, m_savedTagTypeNumberRegister);
-
-        jit.emitMaterializeTagCheckRegisters();
-    }
-
-    void restoreRegisters(CCallHelpers& jit)
-    {
-        if (m_origResult != m_result)
-            jit.move(m_result, m_origResult);
-        if (m_origLeft != m_left && m_origLeft != m_origResult)
-            jit.move(m_left, m_origLeft);
-        if (m_origRight != m_right && m_origRight != m_origResult && m_origRight != m_origLeft)
-            jit.move(m_right, m_origRight);
-
-        // We are guaranteed that the tag registers are not the same as the original input
-        // or output registers. Otherwise, we would not have allocated a scratch for them.
-        // Hence, we don't need to need to check for overlap like we do for the input registers.
-        if (m_savedTagMaskRegister != InvalidGPRReg) {
-            ASSERT(GPRInfo::tagMaskRegister != m_origLeft);
-            ASSERT(GPRInfo::tagMaskRegister != m_origRight);
-            ASSERT(GPRInfo::tagMaskRegister != m_origResult);
-            jit.move(m_savedTagMaskRegister, GPRInfo::tagMaskRegister);
-        }
-        if (m_savedTagTypeNumberRegister != InvalidGPRReg) {
-            ASSERT(GPRInfo::tagTypeNumberRegister != m_origLeft);
-            ASSERT(GPRInfo::tagTypeNumberRegister != m_origRight);
-            ASSERT(GPRInfo::tagTypeNumberRegister != m_origResult);
-            jit.move(m_savedTagTypeNumberRegister, GPRInfo::tagTypeNumberRegister);
-        }
-    }
-
-private:
-    ScratchRegisterAllocator& m_allocator;
-
-    GPRReg& m_result;
-    GPRReg& m_left;
-    GPRReg& m_right;
-
-    GPRReg m_origResult;
-    GPRReg m_origLeft;
-    GPRReg m_origRight;
-
-    GPRReg m_savedTagMaskRegister { InvalidGPRReg };
-    GPRReg m_savedTagTypeNumberRegister { InvalidGPRReg };
-};
-
-enum ScratchFPRUsage {
-    DontNeedScratchFPR,
-    NeedScratchFPR
-};
-
-template<typename SnippetGenerator>
-void generateBinaryBitOpFastPath(BinaryOpDescriptor& ic, CCallHelpers& jit,
-    GPRReg result, GPRReg left, GPRReg right, RegisterSet usedRegisters,
-    CCallHelpers::Jump& done, CCallHelpers::Jump& slowPathStart)
-{
-    ScratchRegisterAllocator allocator(usedRegisters);
-
-    BinarySnippetRegisterContext context(allocator, result, left, right);
-
-    GPRReg scratchGPR = allocator.allocateScratchGPR();
-
-    SnippetGenerator gen(ic.leftOperand(), ic.rightOperand(), JSValueRegs(result),
-        JSValueRegs(left), JSValueRegs(right), scratchGPR);
-
-    ScratchRegisterAllocator::PreservedState preservedState =
-        allocator.preserveReusedRegistersByPushing(jit, ScratchRegisterAllocator::ExtraStackSpace::NoExtraSpace);
-
-    context.initializeRegisters(jit);
-    gen.generateFastPath(jit);
-
-    ASSERT(gen.didEmitFastPath());
-    gen.endJumpList().link(&jit);
-
-    context.restoreRegisters(jit);
-    allocator.restoreReusedRegistersByPopping(jit, preservedState);
-    done = jit.jump();
-
-    gen.slowPathJumpList().link(&jit);
-    context.restoreRegisters(jit);
-    allocator.restoreReusedRegistersByPopping(jit, preservedState);
-    slowPathStart = jit.jump();
-}
-
-static void generateRightShiftFastPath(BinaryOpDescriptor& ic, CCallHelpers& jit,
-    GPRReg result, GPRReg left, GPRReg right, RegisterSet usedRegisters,
-    CCallHelpers::Jump& done, CCallHelpers::Jump& slowPathStart,
-    JITRightShiftGenerator::ShiftType shiftType)
-{
-    ScratchRegisterAllocator allocator(usedRegisters);
-
-    BinarySnippetRegisterContext context(allocator, result, left, right);
-
-    FPRReg leftFPR = allocator.allocateScratchFPR();
-    GPRReg scratchGPR = allocator.allocateScratchGPR();
-
-    JITRightShiftGenerator gen(ic.leftOperand(), ic.rightOperand(), JSValueRegs(result),
-        JSValueRegs(left), JSValueRegs(right), leftFPR, scratchGPR, InvalidFPRReg, shiftType);
-
-    ScratchRegisterAllocator::PreservedState preservedState =
-        allocator.preserveReusedRegistersByPushing(jit, ScratchRegisterAllocator::ExtraStackSpace::NoExtraSpace);
-
-    context.initializeRegisters(jit);
-    gen.generateFastPath(jit);
-
-    ASSERT(gen.didEmitFastPath());
-    gen.endJumpList().link(&jit);
-    context.restoreRegisters(jit);
-    allocator.restoreReusedRegistersByPopping(jit, preservedState);
-    done = jit.jump();
-
-    gen.slowPathJumpList().link(&jit);
-    context.restoreRegisters(jit);
-    allocator.restoreReusedRegistersByPopping(jit, preservedState);
-    slowPathStart = jit.jump();
-}
-
-template<typename BinaryArithOpGenerator, ScratchFPRUsage scratchFPRUsage = DontNeedScratchFPR>
-void generateBinaryArithOpFastPath(BinaryOpDescriptor& ic, CCallHelpers& jit,
-    GPRReg result, GPRReg left, GPRReg right, RegisterSet usedRegisters,
-    CCallHelpers::Jump& done, CCallHelpers::Jump& slowPathStart)
-{
-    ScratchRegisterAllocator allocator(usedRegisters);
-
-    BinarySnippetRegisterContext context(allocator, result, left, right);
-
-    GPRReg scratchGPR = allocator.allocateScratchGPR();
-    FPRReg leftFPR = allocator.allocateScratchFPR();
-    FPRReg rightFPR = allocator.allocateScratchFPR();
-    FPRReg scratchFPR = InvalidFPRReg;
-    if (scratchFPRUsage == NeedScratchFPR)
-        scratchFPR = allocator.allocateScratchFPR();
-
-    BinaryArithOpGenerator gen(ic.leftOperand(), ic.rightOperand(), JSValueRegs(result),
-        JSValueRegs(left), JSValueRegs(right), leftFPR, rightFPR, scratchGPR, scratchFPR);
-
-    ScratchRegisterAllocator::PreservedState preservedState =
-        allocator.preserveReusedRegistersByPushing(jit, ScratchRegisterAllocator::ExtraStackSpace::NoExtraSpace);
-
-    context.initializeRegisters(jit);
-    gen.generateFastPath(jit);
-
-    ASSERT(gen.didEmitFastPath());
-    gen.endJumpList().link(&jit);
-    context.restoreRegisters(jit);
-    allocator.restoreReusedRegistersByPopping(jit, preservedState);
-    done = jit.jump();
-
-    gen.slowPathJumpList().link(&jit);
-    context.restoreRegisters(jit);
-    allocator.restoreReusedRegistersByPopping(jit, preservedState);
-    slowPathStart = jit.jump();
-}
-
-void generateBinaryOpFastPath(BinaryOpDescriptor& ic, CCallHelpers& jit,
-    GPRReg result, GPRReg left, GPRReg right, RegisterSet usedRegisters,
-    CCallHelpers::Jump& done, CCallHelpers::Jump& slowPathStart)
-{
-    switch (ic.nodeType()) {
-    case BitAnd:
-        generateBinaryBitOpFastPath<JITBitAndGenerator>(ic, jit, result, left, right, usedRegisters, done, slowPathStart);
-        break;
-    case BitOr:
-        generateBinaryBitOpFastPath<JITBitOrGenerator>(ic, jit, result, left, right, usedRegisters, done, slowPathStart);
-        break;
-    case BitXor:
-        generateBinaryBitOpFastPath<JITBitXorGenerator>(ic, jit, result, left, right, usedRegisters, done, slowPathStart);
-        break;
-    case BitLShift:
-        generateBinaryBitOpFastPath<JITLeftShiftGenerator>(ic, jit, result, left, right, usedRegisters, done, slowPathStart);
-        break;
-    case BitRShift:
-        generateRightShiftFastPath(ic, jit, result, left, right, usedRegisters, done, slowPathStart, JITRightShiftGenerator::SignedShift);
-        break;
-    case BitURShift:
-        generateRightShiftFastPath(ic, jit, result, left, right, usedRegisters, done, slowPathStart, JITRightShiftGenerator::UnsignedShift);
-        break;
-    case ArithDiv:
-        generateBinaryArithOpFastPath<JITDivGenerator, NeedScratchFPR>(ic, jit, result, left, right, usedRegisters, done, slowPathStart);
-        break;
-    case ArithMul:
-        generateBinaryArithOpFastPath<JITMulGenerator>(ic, jit, result, left, right, usedRegisters, done, slowPathStart);
-        break;
-    case ArithSub:
-        generateBinaryArithOpFastPath<JITSubGenerator>(ic, jit, result, left, right, usedRegisters, done, slowPathStart);
-        break;
-    case ValueAdd:
-        generateBinaryArithOpFastPath<JITAddGenerator>(ic, jit, result, left, right, usedRegisters, done, slowPathStart);
-        break;
-    default:
-        RELEASE_ASSERT_NOT_REACHED();
-    }
-}
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
diff --git a/Source/JavaScriptCore/ftl/FTLCompileBinaryOp.h b/Source/JavaScriptCore/ftl/FTLCompileBinaryOp.h
deleted file mode 100644 (file)
index ead6325..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FTLCompileBinaryOp_h
-#define FTLCompileBinaryOp_h
-
-#if ENABLE(FTL_JIT)
-
-#include "CCallHelpers.h"
-
-namespace JSC {
-namespace FTL {
-
-class BinaryOpDescriptor;
-
-void generateBinaryOpFastPath(BinaryOpDescriptor&, CCallHelpers&,
-    GPRReg result, GPRReg left, GPRReg right, RegisterSet usedRegisters,
-    CCallHelpers::Jump& done, CCallHelpers::Jump& slowPathStart);
-
-} // namespace FTL
-} // namespace JSC
-
-#endif // ENABLE(FTL_JIT)
-
-#endif // FTLCompileBinaryOp_h
diff --git a/Source/JavaScriptCore/ftl/FTLDWARFDebugLineInfo.cpp b/Source/JavaScriptCore/ftl/FTLDWARFDebugLineInfo.cpp
deleted file mode 100644 (file)
index 0a7a508..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "FTLDWARFDebugLineInfo.h"
-
-#if ENABLE(FTL_JIT)
-
-#include <wtf/DataLog.h>
-
-namespace JSC { namespace FTL {
-
-DebugLineInterpreter::DebugLineInterpreter(const char* program)
-    : m_program(program)
-    , m_logResults(false)
-{
-    resetInterpreterState();
-}
-
-template <typename T> inline T read(const char*& program)
-{
-    T result = *reinterpret_cast<const T*>(program);
-    program += sizeof(T);
-    return result;
-}
-
-uint32_t DebugLineInterpreter::parseULEB128(const char*& offset)
-{
-    uint32_t result = 0;
-    uint8_t byte;
-    unsigned shiftAmount = 0;
-    do {
-        byte = read<uint8_t>(offset);
-        result |= (byte & ~0x80) << shiftAmount;
-        shiftAmount += 7;
-    } while (byte & 0x80);
-    return result;
-}
-
-int32_t DebugLineInterpreter::parseSLEB128(const char*& offset)
-{
-    int32_t result = 0;
-    uint8_t byte;
-    unsigned shiftAmount = 0;
-    do {
-        byte = read<uint8_t>(offset);
-        result |= (byte & ~0x80) << shiftAmount;
-        shiftAmount += 7;
-    } while (byte & 0x80);
-    
-    // If the sign bit (in this case, the second MSB) on the last byte is set we need to zero extend.
-    if (byte & 0x40)
-        result |= -(1 << shiftAmount);
-    return result;
-}
-
-void DebugLineInterpreter::run()
-{
-    parsePrologue();
-    interpretStatementProgram();
-    if (m_logResults)
-        printLineInfo();
-}
-
-void DebugLineInterpreter::parsePrologue()
-{
-    const char* currentProgramOffset = m_program;
-    m_prologue.totalLength = read<uint32_t>(currentProgramOffset);
-    if (m_prologue.totalLength == 0xffffffff) {
-        // This is 64-bit DWARF format.
-        m_prologue.format = SixtyFourBit;
-        m_prologue.totalLength = read<uint64_t>(currentProgramOffset);
-    } else
-        m_prologue.format = ThirtyTwoBit;
-    m_prologue.version = read<uint16_t>(currentProgramOffset);
-    
-    if (m_prologue.format == ThirtyTwoBit)
-        m_prologue.prologueLength = read<uint32_t>(currentProgramOffset);
-    else
-        m_prologue.prologueLength = read<uint64_t>(currentProgramOffset);
-    const char* afterLengthOffset = currentProgramOffset;
-    
-    m_prologue.minimumInstructionLength = read<uint8_t>(currentProgramOffset);
-    m_prologue.defaultIsStatement = read<uint8_t>(currentProgramOffset);
-    m_prologue.lineBase = read<int8_t>(currentProgramOffset);
-    m_prologue.lineRange = read<uint8_t>(currentProgramOffset);
-    m_prologue.opcodeBase = read<uint8_t>(currentProgramOffset);
-    for (unsigned i = 1; i < m_prologue.opcodeBase; ++i)
-        m_prologue.standardOpcodeLengths.append(read<uint8_t>(currentProgramOffset));
-    parseIncludeDirectories(currentProgramOffset);
-    parseFileEntries(currentProgramOffset);
-    
-    m_program = afterLengthOffset + m_prologue.prologueLength;
-
-    if (!m_logResults)
-        return;
-
-    dataLog("\nPrologue:\n");
-    dataLog("totalLength = ", m_prologue.totalLength, "\n");
-    dataLog("version = ", m_prologue.version, "\n");
-    dataLog("prologueLength = ", m_prologue.prologueLength, "\n");
-    dataLog("minimumInstructionLength = ", m_prologue.minimumInstructionLength, "\n");
-    dataLog("defaultIsStatement = ", m_prologue.defaultIsStatement, "\n");
-    dataLog("lineBase = ", m_prologue.lineBase, "\n");
-    dataLog("lineRange = ", m_prologue.lineRange, "\n");
-    dataLog("opcodeBase = ", m_prologue.opcodeBase, "\n");
-    
-    dataLog("\nStandard Opcode Lengths:\n");
-    for (unsigned i = 1; i < m_prologue.opcodeBase; ++i)
-        dataLog("standardOpcodeLengths[", i - 1, "] = ", m_prologue.standardOpcodeLengths[i - 1], "\n");
-    
-    dataLog("\nInclude Directories:\n");
-    for (unsigned i = 0; i < m_prologue.includeDirectories.size(); ++i)
-        dataLog("includeDirectories[", i, "] = ", m_prologue.includeDirectories[i], "\n");
-    
-    dataLog("\nFiles:\n");
-    for (unsigned i = 0; i < m_prologue.fileEntries.size(); ++i) {
-        FileEntry& entry = m_prologue.fileEntries[i];
-        dataLog("fileEntries[", i, "] = {name: \"", entry.name, "\", dir_index: ", entry.directoryIndex, ", last_modified: ", entry.lastModified, ", size: ", entry.size, "}\n");
-    }
-}
-
-void DebugLineInterpreter::parseIncludeDirectories(const char*& offset)
-{
-    size_t length = 0;
-    while ((length = strlen(offset))) {
-        m_prologue.includeDirectories.append(offset);
-        offset += length + 1;
-    }
-    
-    // Extra increment to get past the last null byte.
-    offset += 1;
-}
-
-void DebugLineInterpreter::parseFileEntries(const char*& offset)
-{
-    while (true) {
-        DebugLineInterpreter::FileEntry nextEntry;
-        if (!parseFileEntry(offset, nextEntry))
-            break;
-        m_prologue.fileEntries.append(nextEntry);
-    }
-}
-
-bool DebugLineInterpreter::parseFileEntry(const char*& offset, FileEntry& entry)
-{
-    size_t length = strlen(offset);
-    if (!length) {
-        offset += 1;
-        return false;
-    }
-    entry.name = offset;
-    offset += length + 1;
-    entry.directoryIndex = parseULEB128(offset);
-    entry.lastModified = parseULEB128(offset);
-    entry.size = parseULEB128(offset);
-    
-    return true;
-}
-
-void DebugLineInterpreter::interpretStatementProgram()
-{
-    const char* currentProgramOffset = m_program;
-    bool keepGoing = true;
-    do {
-        keepGoing = interpretOpcode(currentProgramOffset);
-    } while (keepGoing);
-}
-
-bool DebugLineInterpreter::interpretOpcode(const char*& offset)
-{
-    uint8_t nextOpcode = read<uint8_t>(offset);
-    switch (nextOpcode) {
-    case ExtendedOpcodes: {
-        uint32_t length = parseULEB128(offset);
-        if (!length)
-            return false;
-        uint8_t extendedOpcode = read<uint8_t>(offset);
-        switch (extendedOpcode) {
-        case DW_LNE_end_sequence: {
-            m_currentState.endSequence = true;
-            m_lineInfoMatrix.append(m_currentState);
-            resetInterpreterState();
-            break;
-        }
-        case DW_LNE_set_address: {
-            m_currentState.address = read<size_t>(offset);
-            break;
-        }
-        case DW_LNE_define_file: {
-            fprintf(stderr, "Unimplemented extended opcode DW_LNE_define_file.\n");
-            RELEASE_ASSERT_NOT_REACHED();
-            break;
-        }
-        default: {
-            fprintf(stderr, "Unknown extended opcode.\n");
-            RELEASE_ASSERT_NOT_REACHED();
-            break;
-        }
-        }
-        break;
-    }
-        /* Standard opcodes */
-    case DW_LNS_copy: {
-        m_lineInfoMatrix.append(m_currentState);
-        m_currentState.isBasicBlock = false;
-        m_currentState.prologueEnd = false;
-        m_currentState.epilogueBegin = false;
-        break;
-    }
-    case DW_LNS_advance_pc: {
-        uint32_t advance = parseULEB128(offset);
-        m_currentState.address += advance * m_prologue.minimumInstructionLength;
-        break;
-    }
-    case DW_LNS_advance_line: {
-        int32_t advance = parseSLEB128(offset);
-        m_currentState.line += advance;
-        break;
-    }
-    case DW_LNS_set_file: {
-        uint32_t fileIndex = parseULEB128(offset);
-        m_currentState.file = fileIndex;
-        break;
-    }
-    case DW_LNS_set_column: {
-        m_currentState.column = parseULEB128(offset);
-        break;
-    }
-    case DW_LNS_negate_stmt: {
-        m_currentState.isStatement = !m_currentState.isStatement;
-        break;
-    }
-    case DW_LNS_set_basic_block: {
-        m_currentState.isBasicBlock = true;
-        break;
-    }
-    case DW_LNS_const_add_pc: {
-        uint8_t adjustedOpcode = nextOpcode - m_prologue.opcodeBase;
-        uint32_t addressIncrement = (adjustedOpcode / m_prologue.lineRange) * m_prologue.minimumInstructionLength;
-        m_currentState.address += addressIncrement;
-        break;
-    }
-    case DW_LNS_fixed_advance_pc: {
-        uint16_t advance = read<uint16_t>(offset);
-        m_currentState.address += advance;
-        break;
-    }
-    case DW_LNS_set_prologue_end: {
-        m_currentState.prologueEnd = true;
-        break;
-    }
-    case DW_LNS_set_epilogue_begin: {
-        m_currentState.epilogueBegin = true;
-        break;
-    }
-    case DW_LNS_set_isa: {
-        m_currentState.isa = parseULEB128(offset);
-        break;
-    }
-        /* Special opcodes */
-    default: {
-        uint8_t adjustedOpcode = nextOpcode - m_prologue.opcodeBase;
-        uint32_t addressIncrement = (adjustedOpcode / m_prologue.lineRange) * m_prologue.minimumInstructionLength;
-        int32_t lineIncrement = m_prologue.lineBase + (adjustedOpcode % m_prologue.lineRange);
-        m_currentState.address += addressIncrement;
-        m_currentState.line += lineIncrement;
-        m_lineInfoMatrix.append(m_currentState);
-        m_currentState.isBasicBlock = false;
-        m_currentState.prologueEnd = false;
-        m_currentState.epilogueBegin = false;
-        break;
-    }
-    }
-    return true;
-}
-
-void DebugLineInterpreter::printLineInfo()
-{
-    dataLog("\nLine Info Matrix:\n");
-    for (unsigned i = 0; i < m_lineInfoMatrix.size(); ++i)
-        printLineInfo(m_lineInfoMatrix[i]);
-    dataLog("\n");
-}
-
-void DebugLineInterpreter::printLineInfo(LineInfo& info)
-{
-    dataLogF("address: %p", reinterpret_cast<void*>(info.address));
-    dataLog("  file: ", info.file, "  line: ", info.line, "  column: ", info.column, "  isa: ", info.isa, "  ");
-    dataLog("  statement?: ", info.isStatement);
-    dataLog("  basic block?: ", info.isBasicBlock);
-    dataLog("  end sequence?: ", info.endSequence);
-    dataLog("  prologue end?: ", info.prologueEnd);
-    dataLog("  epilogue begin?: ", info.epilogueBegin);
-    dataLog("\n");
-}
-
-void DebugLineInterpreter::resetInterpreterState()
-{
-    m_currentState.address = 0;
-    m_currentState.file = 1;
-    m_currentState.line = 1;
-    m_currentState.column = 0;
-    m_currentState.isa = 0;
-    m_currentState.isStatement = false;
-    m_currentState.isBasicBlock = false;
-    m_currentState.endSequence = false;
-    m_currentState.prologueEnd = false;
-    m_currentState.epilogueBegin = false;
-}
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
-
diff --git a/Source/JavaScriptCore/ftl/FTLDWARFDebugLineInfo.h b/Source/JavaScriptCore/ftl/FTLDWARFDebugLineInfo.h
deleted file mode 100644 (file)
index 174a6c4..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FTLDWARFDebugLineInfo_h
-#define FTLDWARFDebugLineInfo_h
-
-#if ENABLE(FTL_JIT)
-
-#include <wtf/Vector.h>
-#include <wtf/text/WTFString.h>
-
-namespace JSC { namespace FTL {
-
-class DebugLineInterpreter {
-public:
-    DebugLineInterpreter(const char* program);
-
-    void run();
-
-private:
-    struct FileEntry {
-        String name;
-        uint32_t directoryIndex;
-        uint32_t lastModified;
-        uint32_t size;
-    };
-
-    void resetInterpreterState();
-    void interpretStatementProgram();
-    bool interpretOpcode(const char*&);
-    void parsePrologue();
-    void parseIncludeDirectories(const char*&);
-    void parseFileEntries(const char*&);
-    bool parseFileEntry(const char*&, DebugLineInterpreter::FileEntry&);
-    uint32_t parseULEB128(const char*&);
-    int32_t parseSLEB128(const char*&);
-
-    const char* m_program;
-    bool m_logResults;
-
-    struct LineInfo {
-        size_t address;
-        uint32_t file;
-        uint32_t line;
-        uint32_t column;
-        uint32_t isa;
-        bool isStatement;
-        bool isBasicBlock;
-        bool endSequence;
-        bool prologueEnd;
-        bool epilogueBegin;
-    };
-    
-    void printLineInfo(LineInfo&);
-    void printLineInfo();
-
-    LineInfo m_currentState;
-    Vector<LineInfo> m_lineInfoMatrix;
-
-    enum DwarfFormat {
-        SixtyFourBit,
-        ThirtyTwoBit
-    };
-
-    struct Prologue {
-        Prologue()
-            : totalLength(0)
-            , format(ThirtyTwoBit)
-            , version(0)
-            , prologueLength(0)
-            , minimumInstructionLength(0)
-            , defaultIsStatement(0)
-            , lineBase(0)
-            , lineRange(0)
-            , opcodeBase(0)
-        {
-        }
-
-        uint64_t totalLength;
-        DwarfFormat format;
-        uint16_t version;
-        uint64_t prologueLength;
-        uint8_t minimumInstructionLength;
-        uint8_t defaultIsStatement;
-        int8_t lineBase;
-        uint8_t lineRange;
-        uint8_t opcodeBase;
-        Vector<uint8_t> standardOpcodeLengths;
-        Vector<String> includeDirectories;
-        Vector<FileEntry> fileEntries;
-    } m_prologue;
-
-    enum ExtendedOpcode {
-        DW_LNE_end_sequence = 0x1,
-        DW_LNE_set_address  = 0x2,
-        DW_LNE_define_file  = 0x3
-    };
-
-    enum StandardOpcode {
-        ExtendedOpcodes             = 0x0,
-        DW_LNS_copy                 = 0x1,
-        DW_LNS_advance_pc           = 0x2,
-        DW_LNS_advance_line         = 0x3,
-        DW_LNS_set_file             = 0x4,
-        DW_LNS_set_column           = 0x5,
-        DW_LNS_negate_stmt          = 0x6,
-        DW_LNS_set_basic_block      = 0x7,
-        DW_LNS_const_add_pc         = 0x8,
-        DW_LNS_fixed_advance_pc     = 0x9,
-        DW_LNS_set_prologue_end     = 0xa,
-        DW_LNS_set_epilogue_begin   = 0xb,
-        DW_LNS_set_isa              = 0xc
-    };
-};
-
-} } // namespace JSC::FTL
-    
-#endif // ENABLE(FTL_JIT)
-
-#endif // FTLDWARFDebugLineInfo_h
diff --git a/Source/JavaScriptCore/ftl/FTLDWARFRegister.cpp b/Source/JavaScriptCore/ftl/FTLDWARFRegister.cpp
deleted file mode 100644 (file)
index 117aba5..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "FTLDWARFRegister.h"
-
-#if ENABLE(FTL_JIT)
-
-#include "FPRInfo.h"
-#include "GPRInfo.h"
-
-namespace JSC { namespace FTL {
-
-Reg DWARFRegister::reg() const
-{
-#if CPU(X86_64)
-    if (m_dwarfRegNum >= 0 && m_dwarfRegNum < 16) {
-        switch (dwarfRegNum()) {
-        case 0:
-            return X86Registers::eax;
-        case 1:
-            return X86Registers::edx;
-        case 2:
-            return X86Registers::ecx;
-        case 3:
-            return X86Registers::ebx;
-        case 4:
-            return X86Registers::esi;
-        case 5:
-            return X86Registers::edi;
-        case 6:
-            return X86Registers::ebp;
-        case 7:
-            return X86Registers::esp;
-        default:
-            // Registers r8..r15 are numbered sensibly.
-            return static_cast<GPRReg>(m_dwarfRegNum);
-        }
-    }
-    if (m_dwarfRegNum >= 17 && m_dwarfRegNum <= 32)
-        return static_cast<FPRReg>(m_dwarfRegNum - 17);
-#elif CPU(ARM64)
-    if (m_dwarfRegNum >= 0 && m_dwarfRegNum <= 31)
-        return static_cast<GPRReg>(m_dwarfRegNum);
-    if (m_dwarfRegNum >= 64 && m_dwarfRegNum <= 95)
-        return static_cast<FPRReg>(m_dwarfRegNum - 64);
-#endif
-    return Reg();
-}
-
-void DWARFRegister::dump(PrintStream& out) const
-{
-    Reg reg = this->reg();
-    if (!!reg)
-        out.print(reg);
-    else
-        out.print("<unknown:", m_dwarfRegNum, ">");
-}
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
-
diff --git a/Source/JavaScriptCore/ftl/FTLDWARFRegister.h b/Source/JavaScriptCore/ftl/FTLDWARFRegister.h
deleted file mode 100644 (file)
index c2449c4..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef FTLDWARFRegister_h
-#define FTLDWARFRegister_h
-
-#if ENABLE(FTL_JIT)
-
-#include "Reg.h"
-#include <wtf/PrintStream.h>
-
-namespace JSC { namespace FTL {
-
-class DWARFRegister {
-public:
-    DWARFRegister()
-        : m_dwarfRegNum(-1)
-    {
-    }
-    
-    explicit DWARFRegister(int16_t dwarfRegNum)
-        : m_dwarfRegNum(dwarfRegNum)
-    {
-    }
-    
-    int16_t dwarfRegNum() const { return m_dwarfRegNum; }
-    
-    Reg reg() const; // This may return Reg() if it can't parse the Dwarf register number.
-    
-    void dump(PrintStream&) const;
-    
-private:
-    int16_t m_dwarfRegNum;
-};
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
-
-#endif // FTLDWARFRegister_h
-
diff --git a/Source/JavaScriptCore/ftl/FTLDataSection.cpp b/Source/JavaScriptCore/ftl/FTLDataSection.cpp
deleted file mode 100644 (file)
index 1ea1cc5..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "FTLDataSection.h"
-
-#if ENABLE(FTL_JIT)
-
-#include <wtf/Assertions.h>
-#include <wtf/DataLog.h>
-#include <wtf/FastMalloc.h>
-
-namespace JSC { namespace FTL {
-
-DataSection::DataSection(size_t size, unsigned alignment)
-    : m_size(size)
-{
-    RELEASE_ASSERT(WTF::bitCount(alignment) == 1);
-    
-    const unsigned nativeAlignment = 8;
-    
-    alignment = std::max(nativeAlignment, alignment);
-    
-    size_t allocatedSize = size + alignment - nativeAlignment;
-    m_allocationBase = fastMalloc(allocatedSize);
-    
-    m_base = bitwise_cast<void*>(
-        (bitwise_cast<uintptr_t>(m_allocationBase) + alignment - 1) & ~static_cast<uintptr_t>(alignment - 1));
-    
-    RELEASE_ASSERT(!(bitwise_cast<uintptr_t>(m_base) & (alignment - 1)));
-    RELEASE_ASSERT(bitwise_cast<uintptr_t>(m_base) + size <= bitwise_cast<uintptr_t>(m_allocationBase) + allocatedSize);
-}
-
-DataSection::~DataSection()
-{
-    fastFree(m_allocationBase);
-}
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
-
diff --git a/Source/JavaScriptCore/ftl/FTLDataSection.h b/Source/JavaScriptCore/ftl/FTLDataSection.h
deleted file mode 100644 (file)
index 25e58e1..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef FTLDataSection_h
-#define FTLDataSection_h
-
-#if ENABLE(FTL_JIT)
-
-#include "CodeBlock.h"
-#include "VM.h"
-#include <wtf/RefCounted.h>
-
-namespace JSC { namespace FTL {
-
-class DataSection : public RefCounted<DataSection> {
-public:
-    DataSection(size_t, unsigned alignment);
-    ~DataSection();
-    
-    void* base() { return m_base; }
-    size_t size() const { return m_size; }
-    
-private:
-    void* m_allocationBase;
-    void* m_base;
-    size_t m_size;
-};
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
-
-#endif // FTLDataSection_h
-
diff --git a/Source/JavaScriptCore/ftl/FTLExceptionHandlerManager.cpp b/Source/JavaScriptCore/ftl/FTLExceptionHandlerManager.cpp
deleted file mode 100644 (file)
index f31e2d6..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Copyright (C) 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "FTLExceptionHandlerManager.h"
-
-#if ENABLE(FTL_JIT) && !FTL_USES_B3
-
-#include "FTLState.h"
-
-namespace JSC { namespace FTL {
-
-ExceptionHandlerManager::ExceptionHandlerManager(State& state)
-    : m_state(state)
-{
-}
-
-void ExceptionHandlerManager::addNewExit(uint32_t stackmapRecordIndex, size_t osrExitIndex)
-{
-    m_map.add(stackmapRecordIndex, osrExitIndex);
-    OSRExit& exit = m_state.jitCode->osrExit[osrExitIndex];
-    RELEASE_ASSERT(exit.willArriveAtExitFromIndirectExceptionCheck());
-}
-
-void ExceptionHandlerManager::addNewCallOperationExit(uint32_t stackmapRecordIndex, size_t osrExitIndex)
-{
-    m_callOperationMap.add(stackmapRecordIndex, osrExitIndex);
-    OSRExit& exit = m_state.jitCode->osrExit[osrExitIndex];
-    RELEASE_ASSERT(exit.willArriveAtExitFromIndirectExceptionCheck());
-}
-
-CodeLocationLabel ExceptionHandlerManager::callOperationExceptionTarget(uint32_t stackmapRecordIndex)
-{
-#if FTL_USES_B3
-    UNUSED_PARAM(stackmapRecordIndex);
-    RELEASE_ASSERT_NOT_REACHED();
-    return CodeLocationLabel();
-#else // FTL_USES_B3
-    auto findResult = m_callOperationMap.find(stackmapRecordIndex);
-    if (findResult == m_callOperationMap.end())
-        return CodeLocationLabel();
-
-    size_t osrExitIndex = findResult->value;
-    RELEASE_ASSERT(m_state.jitCode->osrExit[osrExitIndex].willArriveAtOSRExitFromCallOperation());
-    OSRExitCompilationInfo& info = m_state.finalizer->osrExit[osrExitIndex];
-    RELEASE_ASSERT(info.m_thunkLabel.isSet());
-    return m_state.finalizer->exitThunksLinkBuffer->locationOf(info.m_thunkLabel);
-#endif // FTL_USES_B3
-}
-
-CodeLocationLabel ExceptionHandlerManager::lazySlowPathExceptionTarget(uint32_t stackmapRecordIndex)
-{
-#if FTL_USES_B3
-    UNUSED_PARAM(stackmapRecordIndex);
-    RELEASE_ASSERT_NOT_REACHED();
-    return CodeLocationLabel();
-#else // FTL_USES_B3
-    auto findResult = m_map.find(stackmapRecordIndex);
-    if (findResult == m_map.end())
-        return CodeLocationLabel();
-
-    size_t osrExitIndex = findResult->value;
-    RELEASE_ASSERT(m_state.jitCode->osrExit[osrExitIndex].m_exceptionType == ExceptionType::LazySlowPath);
-    OSRExitCompilationInfo& info = m_state.finalizer->osrExit[osrExitIndex];
-    RELEASE_ASSERT(info.m_thunkLabel.isSet());
-    return m_state.finalizer->exitThunksLinkBuffer->locationOf(info.m_thunkLabel);
-#endif // FTL_USES_B3
-}
-
-OSRExit* ExceptionHandlerManager::callOperationOSRExit(uint32_t stackmapRecordIndex)
-{
-    auto findResult = m_callOperationMap.find(stackmapRecordIndex);
-    if (findResult == m_callOperationMap.end())
-        return nullptr;
-    size_t osrExitIndex = findResult->value;
-    OSRExit* exit = &m_state.jitCode->osrExit[osrExitIndex];
-    // We may have more than one exit for the same stackmap record index (i.e, for GetByIds and PutByIds).
-    // Therefore we need to make sure this exit really is a callOperation OSR exit.
-    RELEASE_ASSERT(exit->willArriveAtOSRExitFromCallOperation());
-    return exit; 
-}
-
-OSRExit* ExceptionHandlerManager::getCallOSRExitCommon(uint32_t stackmapRecordIndex)
-{
-    auto findResult = m_map.find(stackmapRecordIndex);
-    if (findResult == m_map.end())
-        return nullptr;
-    size_t osrExitIndex = findResult->value;
-    OSRExit* exit = &m_state.jitCode->osrExit[osrExitIndex];
-    RELEASE_ASSERT(exit->m_exceptionType == ExceptionType::JSCall);
-    return exit; 
-}
-
-OSRExit* ExceptionHandlerManager::getCallOSRExit(uint32_t stackmapRecordIndex, const JSCall&)
-{
-    return getCallOSRExitCommon(stackmapRecordIndex);
-}
-
-OSRExit* ExceptionHandlerManager::getCallOSRExit(uint32_t stackmapRecordIndex, const JSCallVarargs&)
-{
-    return getCallOSRExitCommon(stackmapRecordIndex);
-}
-
-OSRExit* ExceptionHandlerManager::getCallOSRExit(uint32_t stackmapRecordIndex, const JSTailCall& call)
-{
-    UNUSED_PARAM(stackmapRecordIndex);
-    UNUSED_PARAM(call);
-    // A call can't be in tail position inside a try block.
-    ASSERT(m_map.find(stackmapRecordIndex) == m_map.end());
-    return nullptr;
-}
-
-CallSiteIndex ExceptionHandlerManager::procureCallSiteIndex(uint32_t stackmapRecordIndex, CodeOrigin origin)
-{
-    auto findResult = m_map.find(stackmapRecordIndex);
-    if (findResult == m_map.end())
-        return m_state.jitCode->common.addUniqueCallSiteIndex(origin);
-    size_t osrExitIndex = findResult->value;
-    OSRExit& exit = m_state.jitCode->osrExit[osrExitIndex];
-    RELEASE_ASSERT(exit.m_exceptionHandlerCallSiteIndex);
-    return exit.m_exceptionHandlerCallSiteIndex;
-}
-
-CallSiteIndex ExceptionHandlerManager::procureCallSiteIndex(uint32_t stackmapRecordIndex, const JSCall& call)
-{
-    return procureCallSiteIndex(stackmapRecordIndex, call.callSiteDescriptionOrigin());
-}
-
-CallSiteIndex ExceptionHandlerManager::procureCallSiteIndex(uint32_t stackmapRecordIndex, const JSCallVarargs& call)
-{
-    return procureCallSiteIndex(stackmapRecordIndex, call.callSiteDescriptionOrigin());
-}
-
-CallSiteIndex ExceptionHandlerManager::procureCallSiteIndex(uint32_t stackmapRecordIndex, const JSTailCall& call)
-{
-    UNUSED_PARAM(stackmapRecordIndex);
-    UNUSED_PARAM(call);
-    // We don't need to generate a call site index for tail calls
-    // because they don't store a CallSiteIndex on the call frame.
-    return CallSiteIndex();
-}
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT) && !FTL_USES_B3
diff --git a/Source/JavaScriptCore/ftl/FTLExceptionHandlerManager.h b/Source/JavaScriptCore/ftl/FTLExceptionHandlerManager.h
deleted file mode 100644 (file)
index 048c236..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef FTLExceptionHandlerManager_h
-#define FTLExceptionHandlerManager_h
-
-#include "DFGCommon.h"
-
-#if ENABLE(FTL_JIT) && !FTL_USES_B3
-
-#include "CallFrame.h"
-#include "FTLJSCall.h"
-#include "FTLJSCallVarargs.h"
-#include "FTLJSTailCall.h"
-
-namespace JSC { namespace FTL {
-
-// This class is intented to be used during FTLCompile to manage some common tasks
-// needed to query the correspondence between stackmap records and OSR exits that are
-// exception handlers. The only kind of OSR exits we keep are those OSR exits that
-// correspond to exceptions from patchpoints. That means exits from lazy slow paths,
-// JS calls, Get/Put ById, etc. Note: this means we don't keep track of exception checks
-// after C calls because those are modeled explictly in LLVM IR as a branch to a stackmap
-// intrinsic. These patchpoint OSR exits that this class keeps track of are not branched to
-// directly within LLVM IR.  We jump to these OSR exits from generated patchpoint code,
-// from genericUnwind(), or from FTL::callOperation().
-    
-class State;
-
-class ExceptionHandlerManager {
-    WTF_MAKE_NONCOPYABLE(ExceptionHandlerManager);
-
-public:
-    ExceptionHandlerManager(State& state);
-
-    void addNewExit(uint32_t stackmapRecordIndex, size_t osrExitIndex);
-    void addNewCallOperationExit(uint32_t stackmapRecordIndex, size_t osrExitIndex);
-
-    // These functions only make sense to be called after we've generated the OSR
-    // exit thunks and allocated the OSR exit thunks' link buffer.
-    CodeLocationLabel callOperationExceptionTarget(uint32_t stackmapRecordIndex);
-    CodeLocationLabel lazySlowPathExceptionTarget(uint32_t stackmapRecordIndex);
-
-    OSRExit* callOperationOSRExit(uint32_t stackmapRecordIndex);
-    OSRExit* getCallOSRExit(uint32_t stackmapRecordIndex, const JSCall&);
-    OSRExit* getCallOSRExit(uint32_t stackmapRecordIndex, const JSTailCall&);
-    OSRExit* getCallOSRExit(uint32_t stackmapRecordIndex, const JSCallVarargs&);
-
-    CallSiteIndex procureCallSiteIndex(uint32_t stackmapRecordIndex, CodeOrigin);
-    CallSiteIndex procureCallSiteIndex(uint32_t stackmapRecordIndex, const JSCall&);
-    CallSiteIndex procureCallSiteIndex(uint32_t stackmapRecordIndex, const JSTailCall&);
-    CallSiteIndex procureCallSiteIndex(uint32_t stackmapRecordIndex, const JSCallVarargs&);
-    OSRExit* jsCallOSRExit(uint32_t stackmapRecordIndex);
-
-private:
-    OSRExit* getCallOSRExitCommon(uint32_t stackmapRecordIndex);
-
-    State& m_state;
-    typedef HashMap<uint32_t, size_t, WTF::IntHash<uint32_t>, WTF::UnsignedWithZeroKeyHashTraits<uint32_t>> RecordIndexToOSRExitIndexMap;
-    RecordIndexToOSRExitIndexMap m_map;
-    RecordIndexToOSRExitIndexMap m_callOperationMap;
-};
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT) && !FTL_USES_B3
-
-#endif // FTLExceptionHandlerManager_h
index 0644f0d..023e119 100644 (file)
@@ -26,7 +26,7 @@
 #include "config.h"
 #include "FTLExceptionTarget.h"
 
-#if ENABLE(FTL_JIT) && FTL_USES_B3
+#if ENABLE(FTL_JIT)
 
 #include "FTLState.h"
 
@@ -72,5 +72,5 @@ ExceptionTarget::ExceptionTarget(
 
 } } // namespace JSC::FTL
 
-#endif // ENABLE(FTL_JIT) && FTL_USES_B3
+#endif // ENABLE(FTL_JIT)
 
index 2dce74f..c338bb4 100644 (file)
@@ -28,7 +28,7 @@
 
 #include "DFGCommon.h"
 
-#if ENABLE(FTL_JIT) && FTL_USES_B3
+#if ENABLE(FTL_JIT)
 
 #include "CCallHelpers.h"
 #include "FTLOSRExitHandle.h"
@@ -62,7 +62,7 @@ private:
 
 } } // namespace JSC::FTL
 
-#endif // ENABLE(FTL_JIT) && FTL_USES_B3
+#endif // ENABLE(FTL_JIT)
 
 #endif // FTLExceptionTarget_h
 
diff --git a/Source/JavaScriptCore/ftl/FTLExitThunkGenerator.cpp b/Source/JavaScriptCore/ftl/FTLExitThunkGenerator.cpp
deleted file mode 100644 (file)
index d1bb2db..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "FTLExitThunkGenerator.h"
-
-#if ENABLE(FTL_JIT) && !FTL_USES_B3
-
-#include "FTLOSRExitCompilationInfo.h"
-#include "FTLState.h"
-
-namespace JSC { namespace FTL {
-
-using namespace JSC::DFG;
-
-ExitThunkGenerator::ExitThunkGenerator(State& state)
-    : CCallHelpers(&state.graph.m_vm, state.graph.m_codeBlock)
-    , m_state(state)
-    , m_didThings(false)
-{
-}
-
-ExitThunkGenerator::~ExitThunkGenerator()
-{
-}
-
-void ExitThunkGenerator::emitThunk(unsigned index)
-{
-    OSRExit& exit = m_state.jitCode->osrExit[index];
-    ASSERT_UNUSED(exit, !(exit.isGenericUnwindHandler() && exit.willArriveAtOSRExitFromCallOperation()));
-    
-    OSRExitCompilationInfo& info = m_state.finalizer->osrExit[index];
-    info.m_thunkLabel = label();
-
-    pushToSaveImmediateWithoutTouchingRegisters(TrustedImm32(index));
-    info.m_thunkJump = patchableJump();
-    
-    m_didThings = true;
-}
-
-void ExitThunkGenerator::emitThunks()
-{
-    for (unsigned i = 0; i < m_state.finalizer->osrExit.size(); ++i)
-        emitThunk(i);
-}
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT) && !FTL_USES_B3
-
diff --git a/Source/JavaScriptCore/ftl/FTLExitThunkGenerator.h b/Source/JavaScriptCore/ftl/FTLExitThunkGenerator.h
deleted file mode 100644 (file)
index 7452f4c..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef FTLExitThunkGenerator_h
-#define FTLExitThunkGenerator_h
-
-#include "DFGCommon.h"
-
-#if ENABLE(FTL_JIT) && !FTL_USES_B3
-
-#include "CCallHelpers.h"
-
-namespace JSC { namespace FTL {
-
-class State;
-struct OSRExitCompilationInfo;
-
-class ExitThunkGenerator : public CCallHelpers {
-public:
-    ExitThunkGenerator(State& state);
-    ~ExitThunkGenerator();
-    
-    void emitThunk(unsigned index);
-    void emitThunks();
-    
-    bool didThings() const { return m_didThings; }
-
-private:
-    State& m_state;
-    bool m_didThings;
-};
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT) && !FTL_USES_B3
-
-#endif // FTLExitThunkGenerator_h
-
index d154ebd..5c6426a 100644 (file)
@@ -30,7 +30,6 @@
 
 #include "DFGFailedFinalizer.h"
 #include "FTLJITCode.h"
-#include "LLVMAPI.h"
 
 namespace JSC { namespace FTL {
 
@@ -39,11 +38,6 @@ using namespace DFG;
 void fail(State& state)
 {
     state.graph.m_plan.finalizer = std::make_unique<FailedFinalizer>(state.graph.m_plan);
-    
-#if !FTL_USES_B3
-    if (state.module)
-        llvm->DisposeModule(state.module);
-#endif
 }
 
 } } // namespace JSC::FTL
diff --git a/Source/JavaScriptCore/ftl/FTLInlineCacheDescriptor.h b/Source/JavaScriptCore/ftl/FTLInlineCacheDescriptor.h
deleted file mode 100644 (file)
index 852f8a4..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef FTLInlineCacheDescriptor_h
-#define FTLInlineCacheDescriptor_h
-
-#if ENABLE(FTL_JIT)
-
-#include "CodeOrigin.h"
-#include "DFGAbstractValue.h"
-#include "DFGOperations.h"
-#include "FTLInlineCacheSize.h"
-#include "FTLLazySlowPath.h"
-#include "JITInlineCacheGenerator.h"
-#include "MacroAssembler.h"
-#include "SnippetOperand.h"
-#include <wtf/text/UniquedStringImpl.h>
-
-namespace JSC { namespace FTL {
-
-class Location;
-
-class InlineCacheDescriptor {
-public:
-    InlineCacheDescriptor() 
-    { }
-    
-    InlineCacheDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, UniquedStringImpl* uid)
-        : m_stackmapID(stackmapID)
-        , m_codeOrigin(codeOrigin)
-        , m_uid(uid)
-    {
-    }
-    
-    unsigned stackmapID() const { return m_stackmapID; }
-    CodeOrigin codeOrigin() const { return m_codeOrigin; }
-    UniquedStringImpl* uid() const { return m_uid; }
-    
-private:
-    unsigned m_stackmapID;
-    CodeOrigin m_codeOrigin;
-    UniquedStringImpl* m_uid;
-    
-public:
-    Vector<MacroAssembler::Jump> m_slowPathDone;
-};
-
-class GetByIdDescriptor : public InlineCacheDescriptor {
-public:
-    GetByIdDescriptor() { }
-    
-    GetByIdDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, UniquedStringImpl* uid)
-        : InlineCacheDescriptor(stackmapID, codeOrigin, uid)
-    {
-    }
-    
-    Vector<JITGetByIdGenerator> m_generators;
-};
-
-class PutByIdDescriptor : public InlineCacheDescriptor {
-public:
-    PutByIdDescriptor() { }
-    
-    PutByIdDescriptor(
-        unsigned stackmapID, CodeOrigin codeOrigin, UniquedStringImpl* uid,
-        ECMAMode ecmaMode, PutKind putKind)
-        : InlineCacheDescriptor(stackmapID, codeOrigin, uid)
-        , m_ecmaMode(ecmaMode)
-        , m_putKind(putKind)
-    {
-    }
-    
-    Vector<JITPutByIdGenerator> m_generators;
-    
-    ECMAMode ecmaMode() const { return m_ecmaMode; }
-    PutKind putKind() const { return m_putKind; }
-
-private:
-    ECMAMode m_ecmaMode;
-    PutKind m_putKind;
-};
-
-struct CheckInGenerator {
-    StructureStubInfo* m_stub;
-    MacroAssembler::Call m_slowCall;
-    MacroAssembler::Label m_beginLabel;
-
-    CheckInGenerator(StructureStubInfo* stub, MacroAssembler::Call slowCall, MacroAssembler::Label beginLabel)
-        : m_stub(stub) 
-        , m_slowCall(slowCall)
-        , m_beginLabel(beginLabel)
-    {
-    }
-};
-
-class CheckInDescriptor : public InlineCacheDescriptor {
-public:
-    CheckInDescriptor() { }
-    
-    CheckInDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, UniquedStringImpl* uid)
-        : InlineCacheDescriptor(stackmapID, codeOrigin, uid)
-    {
-    }
-    
-    Vector<CheckInGenerator> m_generators;
-};
-
-class BinaryOpDescriptor : public InlineCacheDescriptor {
-public:
-    typedef EncodedJSValue (*SlowPathFunction)(ExecState*, EncodedJSValue encodedOp1, EncodedJSValue encodedOp2);
-
-    unsigned nodeType() const { return m_nodeType; }
-    size_t size() const { return m_size; }
-    const char* name() const { return m_name; }
-    SlowPathFunction slowPathFunction() const { return m_slowPathFunction; }
-
-    SnippetOperand leftOperand() { return m_leftOperand; }
-    SnippetOperand rightOperand() { return m_rightOperand; }
-
-    Vector<MacroAssembler::Label> m_slowPathStarts;
-
-protected:
-    BinaryOpDescriptor(unsigned nodeType, unsigned stackmapID, CodeOrigin codeOrigin,
-        size_t size, const char* name, SlowPathFunction slowPathFunction,
-        const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : InlineCacheDescriptor(stackmapID, codeOrigin, nullptr)
-        , m_nodeType(nodeType)
-        , m_size(size)
-        , m_name(name)
-        , m_slowPathFunction(slowPathFunction)
-        , m_leftOperand(leftOperand)
-        , m_rightOperand(rightOperand)
-    {
-    }
-
-    unsigned m_nodeType;
-    size_t m_size;
-    const char* m_name;
-    SlowPathFunction m_slowPathFunction;
-
-    SnippetOperand m_leftOperand;
-    SnippetOperand m_rightOperand;
-};
-
-class BitAndDescriptor : public BinaryOpDescriptor {
-public:
-    BitAndDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfBitAnd(); }
-    static unsigned nodeType() { return DFG::BitAnd; }
-    static const char* opName() { return "BitAnd"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueBitAnd; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return slowPathFunction(); }
-};
-
-class BitOrDescriptor : public BinaryOpDescriptor {
-public:
-    BitOrDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfBitOr(); }
-    static unsigned nodeType() { return DFG::BitOr; }
-    static const char* opName() { return "BitOr"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueBitOr; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return slowPathFunction(); }
-};
-
-class BitXorDescriptor : public BinaryOpDescriptor {
-public:
-    BitXorDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfBitXor(); }
-    static unsigned nodeType() { return DFG::BitXor; }
-    static const char* opName() { return "BitXor"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueBitXor; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return slowPathFunction(); }
-};
-
-class BitLShiftDescriptor : public BinaryOpDescriptor {
-public:
-    BitLShiftDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfBitLShift(); }
-    static unsigned nodeType() { return DFG::BitLShift; }
-    static const char* opName() { return "BitLShift"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueBitLShift; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return slowPathFunction(); }
-};
-
-class BitRShiftDescriptor : public BinaryOpDescriptor {
-public:
-    BitRShiftDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfBitRShift(); }
-    static unsigned nodeType() { return DFG::BitRShift; }
-    static const char* opName() { return "BitRShift"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueBitRShift; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return slowPathFunction(); }
-};
-
-class BitURShiftDescriptor : public BinaryOpDescriptor {
-public:
-    BitURShiftDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfBitURShift(); }
-    static unsigned nodeType() { return DFG::BitURShift; }
-    static const char* opName() { return "BitURShift"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueBitURShift; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return slowPathFunction(); }
-};
-
-class ArithDivDescriptor : public BinaryOpDescriptor {
-public:
-    ArithDivDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfArithDiv(); }
-    static unsigned nodeType() { return DFG::ArithDiv; }
-    static const char* opName() { return "ArithDiv"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueDiv; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return slowPathFunction(); }
-};
-
-class ArithMulDescriptor : public BinaryOpDescriptor {
-public:
-    ArithMulDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfArithMul(); }
-    static unsigned nodeType() { return DFG::ArithMul; }
-    static const char* opName() { return "ArithMul"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueMul; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return slowPathFunction(); }
-};
-
-class ArithSubDescriptor : public BinaryOpDescriptor {
-public:
-    ArithSubDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfArithSub(); }
-    static unsigned nodeType() { return DFG::ArithSub; }
-    static const char* opName() { return "ArithSub"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueSub; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return slowPathFunction(); }
-};
-
-class ValueAddDescriptor : public BinaryOpDescriptor {
-public:
-    ValueAddDescriptor(unsigned stackmapID, CodeOrigin codeOrigin, const SnippetOperand& leftOperand, const SnippetOperand& rightOperand)
-        : BinaryOpDescriptor(nodeType(), stackmapID, codeOrigin, icSize(), opName(), slowPathFunction(), leftOperand, rightOperand)
-    { }
-
-    static size_t icSize() { return sizeOfValueAdd(); }
-    static unsigned nodeType() { return DFG::ValueAdd; }
-    static const char* opName() { return "ValueAdd"; }
-    static J_JITOperation_EJJ slowPathFunction() { return DFG::operationValueAdd; }
-    static J_JITOperation_EJJ nonNumberSlowPathFunction() { return DFG::operationValueAddNotNumber; }
-};
-
-// You can create a lazy slow path call in lowerDFGToLLVM by doing:
-// m_ftlState.lazySlowPaths.append(
-//     LazySlowPathDescriptor(
-//         stackmapID, callSiteIndex,
-//         createSharedTask<RefPtr<LazySlowPath::Generator>(const Vector<Location>&)>(
-//             [] (const Vector<Location>& locations) -> RefPtr<LazySlowPath::Generator> {
-//                 // This lambda should just record the registers that we will be using, and return
-//                 // a SharedTask that will actually generate the slow path.
-//                 return createLazyCallGenerator(
-//                     function, locations[0].directGPR(), locations[1].directGPR());
-//             })));
-//
-// Usually, you can use the LowerDFGToLLVM::lazySlowPath() helper, which takes care of the descriptor
-// for you and also creates the patchpoint.
-typedef RefPtr<LazySlowPath::Generator> LazySlowPathLinkerFunction(const Vector<Location>&);
-typedef SharedTask<LazySlowPathLinkerFunction> LazySlowPathLinkerTask;
-class LazySlowPathDescriptor : public InlineCacheDescriptor {
-public:
-    LazySlowPathDescriptor() { }
-
-    LazySlowPathDescriptor(
-        unsigned stackmapID, CodeOrigin codeOrigin,
-        RefPtr<LazySlowPathLinkerTask> linker)
-        : InlineCacheDescriptor(stackmapID, codeOrigin, nullptr)
-        , m_linker(linker)
-    {
-    }
-
-    Vector<std::tuple<LazySlowPath*, CCallHelpers::Label>> m_generators;
-
-    RefPtr<LazySlowPathLinkerTask> m_linker;
-};
-
-#if ENABLE(MASM_PROBE)
-class ProbeDescriptor : public InlineCacheDescriptor {
-public:
-    ProbeDescriptor(unsigned stackmapID, std::function<void (CCallHelpers::ProbeContext*)> probeFunction)
-        : InlineCacheDescriptor(stackmapID, codeOrigin(), nullptr)
-        , m_probeFunction(probeFunction)
-    {
-    }
-
-    std::function<void (CCallHelpers::ProbeContext*)>& probeFunction() { return m_probeFunction; }
-
-private:
-    std::function<void (CCallHelpers::ProbeContext*)> m_probeFunction;
-};
-#endif // ENABLE(MASM_PROBE)
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
-
-#endif // FTLInlineCacheDescriptor_h
-
diff --git a/Source/JavaScriptCore/ftl/FTLInlineCacheSize.cpp b/Source/JavaScriptCore/ftl/FTLInlineCacheSize.cpp
deleted file mode 100644 (file)
index 7ad3f4d..0000000
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
- * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "FTLInlineCacheSize.h"
-
-#if ENABLE(FTL_JIT)
-
-#include "DFGNode.h"
-#include "JITInlineCacheGenerator.h"
-#include "MacroAssembler.h"
-
-namespace JSC { namespace FTL {
-
-using namespace DFG;
-
-// The default sizes are x86-64-specific, and were found empirically. They have to cover the worst
-// possible combination of registers leading to the largest possible encoding of each instruction in
-// the IC.
-//
-// FIXME: The ARM64 sizes are overestimates; if there is any branch compaction then we should be able
-// to get away with less. The branch compaction code currently validates the size of the IC before
-// doing any compaction, so we need to overestimate and give the uncompacted size. This would be
-// relatively easy to fix.
-// https://bugs.webkit.org/show_bug.cgi?id=129335
-
-size_t sizeOfGetById()
-{
-#if CPU(ARM64)
-    return 32;
-#else
-    return 27;
-#endif
-}
-
-size_t sizeOfPutById()
-{
-#if CPU(ARM64)
-    return 40;
-#else
-    return 29;
-#endif
-}
-
-size_t sizeOfCall()
-{
-#if CPU(ARM64)
-    return 60;
-#else
-    return 60;
-#endif
-}
-
-size_t sizeOfCallVarargs()
-{
-#if CPU(ARM64)
-    return 332;
-#else
-    return 275;
-#endif
-}
-
-size_t sizeOfTailCallVarargs()
-{
-#if CPU(ARM64)
-    return 188 + sizeOfCallVarargs();
-#else
-    return 151 + sizeOfCallVarargs();
-#endif
-}
-
-size_t sizeOfCallForwardVarargs()
-{
-#if CPU(ARM64)
-    return 312;
-#else
-    return 262;
-#endif
-}
-
-size_t sizeOfTailCallForwardVarargs()
-{
-#if CPU(ARM64)
-    return 188 + sizeOfCallForwardVarargs();
-#else
-    return 151 + sizeOfCallForwardVarargs();
-#endif
-}
-
-size_t sizeOfConstructVarargs()
-{
-    return sizeOfCallVarargs(); // Should be the same size.
-}
-
-size_t sizeOfConstructForwardVarargs()
-{
-    return sizeOfCallForwardVarargs(); // Should be the same size.
-}
-
-size_t sizeOfIn()
-{
-#if CPU(ARM64)
-    return 4;
-#else
-    return 5; 
-#endif
-}
-
-size_t sizeOfBitAnd()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-return 180; // ARM64 release.
-#else
-return 276; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-return 199; // X86_64 release.
-#else
-return 286; // X86_64 debug.
-#endif
-#endif
-}
-
-size_t sizeOfBitOr()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-    return 180; // ARM64 release.
-#else
-    return 276; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-    return 199; // X86_64 release.
-#else
-    return 286; // X86_64 debug.
-#endif
-#endif
-}
-
-size_t sizeOfBitXor()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-    return 180; // ARM64 release.
-#else
-    return 276; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-    return 199; // X86_64 release.
-#else
-    return 286; // X86_64 debug.
-#endif
-#endif
-}
-
-size_t sizeOfBitLShift()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-    return 180; // ARM64 release.
-#else
-    return 276; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-    return 199; // X86_64 release.
-#else
-    return 286; // X86_64 debug.
-#endif
-#endif
-}
-
-size_t sizeOfBitRShift()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-    return 180; // ARM64 release.
-#else
-    return 276; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-    return 199; // X86_64 release.
-#else
-    return 286; // X86_64 debug.
-#endif
-#endif
-}
-
-size_t sizeOfBitURShift()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-    return 180; // ARM64 release.
-#else
-    return 276; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-    return 199; // X86_64 release.
-#else
-    return 286; // X86_64 debug.
-#endif
-#endif
-}
-
-size_t sizeOfArithDiv()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-    return 180; // ARM64 release.
-#else
-    return 276; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-    return 199; // X86_64 release.
-#else
-    return 286; // X86_64 debug.
-#endif
-#endif
-}
-
-size_t sizeOfArithMul()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-    return 180; // ARM64 release.
-#else
-    return 276; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-    return 199; // X86_64 release.
-#else
-    return 286; // X86_64 debug.
-#endif
-#endif
-}
-
-size_t sizeOfArithSub()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-    return 216; // ARM64 release.
-#else
-    return 312; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-    return 223; // X86_64 release.
-#else
-    return 298; // X86_64 debug.
-#endif
-#endif
-}
-
-size_t sizeOfValueAdd()
-{
-#if CPU(ARM64)
-#ifdef NDEBUG
-    return 180; // ARM64 release.
-#else
-    return 276; // ARM64 debug.
-#endif
-#else // CPU(X86_64)
-#ifdef NDEBUG
-    return 199; // X86_64 release.
-#else
-    return 286; // X86_64 debug.
-#endif
-#endif
-}
-
-#if ENABLE(MASM_PROBE)
-size_t sizeOfProbe()
-{
-    return 132; // Based on ARM64.
-}
-#endif
-
-size_t sizeOfICFor(Node* node)
-{
-    switch (node->op()) {
-    case GetById:
-        return sizeOfGetById();
-    case PutById:
-        return sizeOfPutById();
-    case Call:
-    case Construct:
-        return sizeOfCall();
-    case CallVarargs:
-    case TailCallVarargsInlinedCaller:
-        return sizeOfCallVarargs();
-    case TailCallVarargs:
-        return sizeOfTailCallVarargs();
-    case CallForwardVarargs:
-    case TailCallForwardVarargsInlinedCaller:
-        return sizeOfCallForwardVarargs();
-    case TailCallForwardVarargs:
-        return sizeOfTailCallForwardVarargs();
-    case ConstructVarargs:
-        return sizeOfConstructVarargs();
-    case ConstructForwardVarargs:
-        return sizeOfConstructForwardVarargs();
-    case In:
-        return sizeOfIn();
-    default:
-        RELEASE_ASSERT_NOT_REACHED();
-    }
-}
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
-
diff --git a/Source/JavaScriptCore/ftl/FTLInlineCacheSize.h b/Source/JavaScriptCore/ftl/FTLInlineCacheSize.h
deleted file mode 100644 (file)
index cc18fbd..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef FTLInlineCacheSize_h
-#define FTLInlineCacheSize_h
-
-#if ENABLE(FTL_JIT)
-
-namespace JSC {
-
-namespace DFG {
-struct Node;
-}
-
-namespace FTL {
-
-size_t sizeOfGetById();
-size_t sizeOfPutById();
-size_t sizeOfCall();
-size_t sizeOfCallVarargs();
-size_t sizeOfTailCallVarargs();
-size_t sizeOfCallForwardVarargs();
-size_t sizeOfTailCallForwardVarargs();
-size_t sizeOfConstructVarargs();
-size_t sizeOfConstructForwardVarargs();
-size_t sizeOfIn();
-size_t sizeOfBitAnd();
-size_t sizeOfBitOr();
-size_t sizeOfBitXor();
-size_t sizeOfBitLShift();
-size_t sizeOfBitRShift();
-size_t sizeOfBitURShift();
-size_t sizeOfArithDiv();
-size_t sizeOfArithMul();
-size_t sizeOfArithSub();
-size_t sizeOfValueAdd();
-#if ENABLE(MASM_PROBE)
-size_t sizeOfProbe();
-#endif
-
-size_t sizeOfICFor(DFG::Node*);
-
-} } // namespace JSC::FTL
-
-#endif // ENABLE(FTL_JIT)
-
-#endif // FTLInlineCacheSize_h
-
diff --git a/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.cpp b/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.cpp
deleted file mode 100644 (file)
index 921cb26..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include "config.h"
-#include "FTLIntrinsicRepository.h"
-
-#if ENABLE(FTL_JIT)
-#if !FTL_USES_B3
-
-#include "FTLAbbreviations.h"
-
-namespace JSC { namespace FTL {
-
-IntrinsicRepository::IntrinsicRepository(LContext context)
-    : CommonValues(context)
-#define INTRINSIC_INITIALIZATION(ourName, llvmName, type) , m_##ourName(0)
-    FOR_EACH_FTL_INTRINSIC(INTRINSIC_INITIALIZATION)
-#undef INTRINSIC_INITIALIZATION
-#define FUNCTION_TYPE_INITIALIZATION(typeName, type) , m_##typeName(0)
-    FOR_EACH_FUNCTION_TYPE(FUNCTION_TYPE_INITIALIZATION)
-#undef FUNCTION_TYPE_INITIALIZATION
-{
-}
-
-#define INTRINSIC_GETTER_SLOW_DEFINITION(ourName, llvmName, type)       \
-    LValue IntrinsicRepository::ourName##IntrinsicSlow()                \
-    {                                                                   \
-        m_##ourName = addExternFunction(m_module, llvmName, type);      \
-        return m_##ourName;                                             \
-    }
-FOR_EACH_FTL_INTRINSIC(INTRINSIC_GETTER_SLOW_DEFINITION)
-#undef INTRINSIC_GETTER
-
-#define FUNCTION_TYPE_GETTER_SLOW_DEFINITION(typeName, type) \
-    LType IntrinsicRepository::typeName##Slow()              \
-    {                                                        \
-        m_##typeName = type;                                 \
-        return m_##typeName;                                 \
-    }
-FOR_EACH_FUNCTION_TYPE(FUNCTION_TYPE_GETTER_SLOW_DEFINITION)
-#undef FUNCTION_TYPE_GETTER_SLOW_DEFINITION
-
-} } // namespace JSC::FTL
-
-#endif // !FTL_USES_B3
-#endif // ENABLE(FTL_JIT)
-
diff --git a/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h b/Source/JavaScriptCore/ftl/FTLIntrinsicRepository.h
deleted file mode 100644 (file)
index c8f081c..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Copyright (C) 2013-2015 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#ifndef FTLIntrinsicRepository_h
-#define FTLIntrinsicRepository_h
-
-#if ENABLE(FTL_JIT)
-
-#include "DFGCommon.h"
-
-#if !FTL_USES_B3
-
-#include "DFGOperations.h"
-#include "FTLAbbreviations.h"
-#include "FTLCommonValues.h"
-
-namespace JSC { namespace FTL {
-
-#define FOR_EACH_FTL_INTRINSIC(macro) \
-    macro(ceil64, "llvm.ceil.f64", functionType(doubleType, doubleType)) \
-    macro(ctlz32, "llvm.ctlz.i32", functionType(int32, int32, boolean)) \
-    macro(addWithOverflow32, "llvm.sadd.with.overflow.i32", functionType(structType(m_context, int32, boolean), int32, int32)) \
-    macro(addWithOverflow64, "llvm.sadd.with.overflow.i64", functionType(structType(m_context, int64, boolean), int64, int64)) \
-    macro(doubleAbs, "llvm.fabs.f64", functionType(doubleType, doubleType)) \
-    macro(doubleSin, "llvm.sin.f64", functionType(doubleType, doubleType)) \
-    macro(doubleCos, "llvm.cos.f64", functionType(doubleType, doubleType)) \
-    macro(doublePow, "llvm.pow.f64", functionType(doubleType, doubleType, doubleType)) \
-    macro(doublePowi, "llvm.powi.f64", functionType(doubleType, doubleType, int32)) \
-    macro(doubleSqrt, "llvm.sqrt.f64", functionType(doubleType, doubleType)) \
-    macro(doubleLog, "llvm.log.f64", functionType(doubleType, doubleType)) \
-    macro(frameAddress, "llvm.frameaddress", functionType(pointerType(int8), int32)) \
-    macro(mulWithOverflow32, "llvm.smul.with.overflow.i32", functionType(structType(m_context, int32, boolean), int32, int32)) \
-    macro(mulWithOverflow64, "llvm.smul.with.overflow.i64", functionType(structType(m_context, int64, boolean), int64, int64)) \
-    macro(patchpointInt64, "llvm.experimental.patchpoint.i64", functionType(int64, int64, int32, ref8, int32, Variadic)) \
-    macro(patchpointVoid, "llvm.experimental.patchpoint.void", functionType(voidType, int64, int32, ref8, int32, Variadic)) \
-    macro(stackmap, "llvm.experimental.stackmap", functionType(voidType, int64, int32, Variadic)) \
-    macro(subWithOverflow32, "llvm.ssub.with.overflow.i32", functionType(structType(m_context, int32, boolean), int32, int32)) \
-    macro(subWithOverflow64, "llvm.ssub.with.overflow.i64", functionType(structType(m_context, int64, boolean), int64, int64)) \
-    macro(trap, "llvm.trap", functionType(voidType)) \
-    macro(x86SSE2CvtTSD2SI, "llvm.x86.sse2.cvttsd2si", functionType(int32, vectorType(doubleType, 2)))
-
-#define FOR_EACH_FUNCTION_TYPE(macro) \
-    macro(C_JITOperation_EC, functionType(intPtr, intPtr, intPtr)) \
-    macro(C_JITOperation_ECZ, functionType(intPtr, intPtr, intPtr, int32)) \
-    macro(C_JITOperation_ECZC, functionType(intPtr, intPtr, intPtr, int32, intPtr)) \
-    macro(C_JITOperation_EGC, functionType(intPtr, intPtr, intPtr, intPtr)) \
-    macro(C_JITOperation_EJ, functionType(intPtr, intPtr, int64)) \
-    macro(C_JITOperation_EJJ, functionType(intPtr, intPtr, int64, int64)) \
-    macro(C_JITOperation_EJJJ, functionType(intPtr, intPtr, int64, int64, int64)) \
-    macro(C_JITOperation_EJssJss, functionType(intPtr, intPtr, intPtr, intPtr)) \
-    macro(C_JITOperation_EJssJssJss, functionType(intPtr, intPtr, intPtr, intPtr, intPtr)) \
-    macro(C_JITOperation_ESt, functionType(intPtr, intPtr, intPtr)) \
-    macro(C_JITOperation_EStJscSymtabJ, functionType(intPtr, intPtr, intPtr, intPtr, intPtr, intPtr)) \
-    macro(C_JITOperation_EStRZJsf, functionType(intPtr, intPtr, intPtr, intPtr, int32, intPtr)) \
-    macro(C_JITOperation_EStRZJsfL, functionType(intPtr, intPtr, intPtr, intPtr, int32, intPtr, intPtr)) \
-    macro(C_JITOperation_EStZ, functionType(intPtr, intPtr, intPtr, int32)) \
-    macro(C_JITOperation_EStZZ, functionType(intPtr, intPtr, intPtr, int32, int32)) \
-    macro(C_JITOperation_EZ, functionType(intPtr, intPtr, int32)) \
-    macro(D_JITOperation_D, functionType(doubleType, doubleType)) \
-    macro(T_JITOperation_EJss, functionType(intPtr, intPtr, intPtr)) \
-    macro(J_JITOperation_E, functionType(int64, intPtr)) \
-    macro(J_JITOperation_EA, functionType(int64, intPtr, intPtr)) \
-    macro(J_JITOperation_EAZ, functionType(int64, intPtr, intPtr, int32)) \
-    macro(J_JITOperation_ECJ, functionType(int64, intPtr, intPtr, int64)) \
-    macro(J_JITOperation_ECZ, functionType(int64, intPtr, intPtr, int32)) \
-    macro(J_JITOperation_EDA, functionType(int64, intPtr, doubleType, intPtr)) \
-    macro(J_JITOperation_EJ, functionType(int64, intPtr, int64)) \
-    macro(J_JITOperation_EJA, functionType(int64, intPtr, int64, intPtr)) \
-    macro(J_JITOperation_EJC, functionType(int64, intPtr, int64, intPtr)) \
-    macro(J_JITOperation_EJI, functionType(int64, intPtr, int64, intPtr)) \
-    macro(J_JITOperation_EJJ, functionType(int64, intPtr, int64, int64)) \
-    macro(J_JITOperation_EJscC, functionType(intPtr, intPtr, intPtr, intPtr)) \
-    macro(J_JITOperation_EJscCJ, functionType(int64, intPtr, int64, int64, int64))\
-    macro(J_JITOperation_EJssZ, functionType(int64, intPtr, intPtr, int32)) \
-    macro(J_JITOperation_ESsiJI, functionType(int64, intPtr, intPtr, int64, intPtr)) \
-    macro(Jss_JITOperation_EZ, functionType(intPtr, intPtr, int32)) \
-    macro(P_JITOperation_E, functionType(intPtr, intPtr)) \
-    macro(P_JITOperation_EC, functionType(intPtr, intPtr, intPtr)) \
-    macro(P_JITOperation_EO, functionType(intPtr, intPtr, intPtr)) \
-    macro(P_JITOperation_ES, functionType(intPtr, intPtr, int64)) \
-    macro(P_JITOperation_EOS, functionType(intPtr, intPtr, intPtr, int64)) \
-    macro(P_JITOperation_ESt, functionType(intPtr, intPtr, intPtr)) \
-    macro(P_JITOperation_EStPS, functionType(intPtr, intPtr, intPtr, intPtr, intPtr)) \
-    macro(P_JITOperation_EStSS, functionType(intPtr, intPtr, intPtr, intPtr, intPtr)) \
-    macro(P_JITOperation_EStZ, functionType(intPtr, intPtr, intPtr, int32)) \
-    macro(Q_JITOperation_D, functionType(int64, doubleType)) \
-    macro(Q_JITOperation_J, functionType(int64, int64)) \
-    macro(S_JITOperation_EGC, functionType(intPtr, intPtr, intPtr, intPtr)) \
-    macro(S_JITOperation_EJ, functionType(intPtr, intPtr, int64)) \
-    macro(S_JITOperation_EJJ, functionType(intPtr, intPtr, int64, int64)) \
-    macro(S_JITOperation_J, functionType(intPtr, int64)) \
-    macro(V_JITOperation, functionType(voidType)) \
-    macro(V_JITOperation_EJJJ, functionType(voidType, intPtr, int64, int64, int64)) \
-    macro(V_JITOperation_EOZD, functionType(voidType, intPtr, intPtr, int32, doubleType)) \
-    macro(V_JITOperation_EOZJ, functionType(voidType, intPtr, intPtr, int32, int64)) \
-    macro(V_JITOperation_EC, functionType(voidType, intPtr, intPtr)) \
-    macro(V_JITOperation_ECb, functionType(voidType, intPtr, intPtr)) \
-    macro(V_JITOperation_EWs, functionType(voidType, intPtr, intPtr)) \
-    macro(V_JITOperation_EZJZZZ, functionType(voidType, intPtr, int