1. 10 Jan, 2014 1 commit
    • commit-queue@webkit.org's avatar
      [EFL][JSC] Enable udis86 disassembler on efl. · 732907db
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=125502
      
      Patch by Tamas Gergely <tgergely.u-szeged@partner.samsung.com> on 2014-01-10
      Reviewed by Michael Saboff.
      
      Enable udis86 disassembler on efl and fix build warnings.
      
      .:
      
      * Source/cmake/OptionsEfl.cmake:
        Enable udis86 disassembler.
      
      Source/JavaScriptCore:
      
      * CMakeLists.txt:
        Add udis86 disassembler source files.
      * disassembler/udis86/udis86_decode.c:
      (decode_modrm_rm):
        Build warning fixes.
      * disassembler/udis86/udis86_syn-att.c:
      (gen_operand):
        Build warning fixes.
      * disassembler/udis86/udis86_syn-intel.c:
      (gen_operand):
        Build warning fixes.
      * disassembler/udis86/udis86_types.h:
        Correct FMT64 for uint64_t.
      
      Source/WTF:
      
      * wtf/Platform.h:
        Enable udis86 disassembler on EFL.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@161672 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      732907db
  2. 02 Dec, 2013 1 commit
    • mark.lam@apple.com's avatar
      Build failure when disabling JIT, YARR_JIT, and ASSEMBLER. · 10190c45
      mark.lam@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=123809.
      
      Reviewed by Geoffrey Garen.
      
      Source/JavaScriptCore: 
      
      Also fixed build when disabling the DISASSEMBLER.
      Added some needed #if's and some comments.
      
      * assembler/LinkBuffer.cpp:
      (JSC::LinkBuffer::finalizeCodeWithDisassembly):
      * dfg/DFGDisassembler.cpp:
      * dfg/DFGDisassembler.h:
      (JSC::DFG::Disassembler::Disassembler):
      (JSC::DFG::Disassembler::setStartOfCode):
      (JSC::DFG::Disassembler::setForBlockIndex):
      (JSC::DFG::Disassembler::setForNode):
      (JSC::DFG::Disassembler::setEndOfMainPath):
      (JSC::DFG::Disassembler::setEndOfCode):
      (JSC::DFG::Disassembler::dump):
      (JSC::DFG::Disassembler::reportToProfiler):
      * disassembler/Disassembler.cpp:
      * disassembler/X86Disassembler.cpp:
      * jit/FPRInfo.h:
      * jit/GPRInfo.h:
      * jit/JITDisassembler.cpp:
      * jit/JITDisassembler.h:
      (JSC::JITDisassembler::JITDisassembler):
      (JSC::JITDisassembler::setStartOfCode):
      (JSC::JITDisassembler::setForBytecodeMainPath):
      (JSC::JITDisassembler::setForBytecodeSlowPath):
      (JSC::JITDisassembler::setEndOfSlowPath):
      (JSC::JITDisassembler::setEndOfCode):
      (JSC::JITDisassembler::dump):
      (JSC::JITDisassembler::reportToProfiler):
      
      Source/WTF: 
      
      * wtf/Platform.h:
      - Ensure that the ASSEMBLER is enabled when the DISASSEMBLER is enabled.
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@159987 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      10190c45
  3. 15 Oct, 2013 1 commit
    • dbates@webkit.org's avatar
      [iOS] Upstream JavaScriptCore support for ARM64 · 98f0de07
      dbates@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=122762
      
      Source/JavaScriptCore:
      
      Reviewed by Oliver Hunt and Filip Pizlo.
      
      * Configurations/Base.xcconfig:
      * Configurations/DebugRelease.xcconfig:
      * Configurations/JavaScriptCore.xcconfig:
      * Configurations/ToolExecutable.xcconfig:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * assembler/ARM64Assembler.h: Added.
      * assembler/AbstractMacroAssembler.h:
      (JSC::isARM64):
      (JSC::AbstractMacroAssembler::Label::Label):
      (JSC::AbstractMacroAssembler::Jump::Jump):
      (JSC::AbstractMacroAssembler::Jump::link):
      (JSC::AbstractMacroAssembler::Jump::linkTo):
      (JSC::AbstractMacroAssembler::CachedTempRegister::CachedTempRegister):
      (JSC::AbstractMacroAssembler::CachedTempRegister::registerIDInvalidate):
      (JSC::AbstractMacroAssembler::CachedTempRegister::registerIDNoInvalidate):
      (JSC::AbstractMacroAssembler::CachedTempRegister::value):
      (JSC::AbstractMacroAssembler::CachedTempRegister::setValue):
      (JSC::AbstractMacroAssembler::CachedTempRegister::invalidate):
      (JSC::AbstractMacroAssembler::invalidateAllTempRegisters):
      (JSC::AbstractMacroAssembler::isTempRegisterValid):
      (JSC::AbstractMacroAssembler::clearTempRegisterValid):
      (JSC::AbstractMacroAssembler::setTempRegisterValid):
      * assembler/LinkBuffer.cpp:
      (JSC::LinkBuffer::copyCompactAndLinkCode):
      (JSC::LinkBuffer::linkCode):
      * assembler/LinkBuffer.h:
      * assembler/MacroAssembler.h:
      (JSC::MacroAssembler::isPtrAlignedAddressOffset):
      (JSC::MacroAssembler::pushToSave):
      (JSC::MacroAssembler::popToRestore):
      (JSC::MacroAssembler::patchableBranchTest32):
      * assembler/MacroAssemblerARM64.h: Added.
      * assembler/MacroAssemblerARMv7.h:
      * dfg/DFGFixupPhase.cpp:
      (JSC::DFG::FixupPhase::fixupNode):
      * dfg/DFGOSRExitCompiler32_64.cpp:
      (JSC::DFG::OSRExitCompiler::compileExit):
      * dfg/DFGOSRExitCompiler64.cpp:
      (JSC::DFG::OSRExitCompiler::compileExit):
      * dfg/DFGSpeculativeJIT.cpp:
      (JSC::DFG::SpeculativeJIT::compileArithDiv):
      (JSC::DFG::SpeculativeJIT::compileArithMod):
      * disassembler/ARM64/A64DOpcode.cpp: Added.
      * disassembler/ARM64/A64DOpcode.h: Added.
      * disassembler/ARM64Disassembler.cpp: Added.
      * heap/MachineStackMarker.cpp:
      (JSC::getPlatformThreadRegisters):
      (JSC::otherThreadStackPointer):
      * heap/Region.h:
      * jit/AssemblyHelpers.h:
      (JSC::AssemblyHelpers::debugCall):
      * jit/CCallHelpers.h:
      * jit/ExecutableAllocator.h:
      * jit/FPRInfo.h:
      (JSC::FPRInfo::toRegister):
      (JSC::FPRInfo::toIndex):
      (JSC::FPRInfo::debugName):
      * jit/GPRInfo.h:
      (JSC::GPRInfo::toRegister):
      (JSC::GPRInfo::toIndex):
      (JSC::GPRInfo::debugName):
      * jit/JITInlines.h:
      (JSC::JIT::restoreArgumentReferenceForTrampoline):
      * jit/JITOperationWrappers.h:
      * jit/JITOperations.cpp:
      * jit/JITStubs.cpp:
      (JSC::performPlatformSpecificJITAssertions):
      (JSC::tryCachePutByID):
      * jit/JITStubs.h:
      (JSC::JITStackFrame::returnAddressSlot):
      * jit/JITStubsARM64.h: Added.
      * jit/JSInterfaceJIT.h:
      * jit/Repatch.cpp:
      (JSC::emitRestoreScratch):
      (JSC::generateProtoChainAccessStub):
      (JSC::tryCacheGetByID):
      (JSC::emitPutReplaceStub):
      (JSC::tryCachePutByID):
      (JSC::tryRepatchIn):
      * jit/ScratchRegisterAllocator.h:
      (JSC::ScratchRegisterAllocator::preserveReusedRegistersByPushing):
      (JSC::ScratchRegisterAllocator::restoreReusedRegistersByPopping):
      * jit/ThunkGenerators.cpp:
      (JSC::nativeForGenerator):
      (JSC::floorThunkGenerator):
      (JSC::ceilThunkGenerator):
      * jsc.cpp:
      (main):
      * llint/LLIntOfflineAsmConfig.h:
      * llint/LLIntSlowPaths.cpp:
      (JSC::LLInt::handleHostCall):
      * llint/LowLevelInterpreter.asm:
      * llint/LowLevelInterpreter64.asm:
      * offlineasm/arm.rb:
      * offlineasm/arm64.rb: Added.
      * offlineasm/backends.rb:
      * offlineasm/instructions.rb:
      * offlineasm/risc.rb:
      * offlineasm/transform.rb:
      * yarr/YarrJIT.cpp:
      (JSC::Yarr::YarrGenerator::alignCallFrameSizeInBytes):
      (JSC::Yarr::YarrGenerator::initCallFrame):
      (JSC::Yarr::YarrGenerator::removeCallFrame):
      (JSC::Yarr::YarrGenerator::generateEnter):
      * yarr/YarrJIT.h:
      
      Source/WTF:
      
      Reviewed by Oliver Hunt.
      
      * Configurations/Base.xcconfig:
      * wtf/Atomics.h:
      (WTF::weakCompareAndSwap):
      (WTF::armV7_dmb):
      * wtf/FastMalloc.cpp:
      * wtf/Platform.h:
      * wtf/dtoa.cpp:
      * wtf/dtoa/utils.h:
      * wtf/text/ASCIIFastPath.h:
      (WTF::copyLCharsFromUCharSource):
      * wtf/text/StringImpl.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@157474 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      98f0de07
  4. 10 Oct, 2013 1 commit
    • fpizlo@apple.com's avatar
      FTL: Soft-link LLVM as a workaround for LLVM's static initializers and exit-time destructors · ef8dbf84
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=122566
      
      Source/JavaScriptCore: 
      
      Reviewed by Mark Rowe.
              
      The JSC project now builds a libllvmForJSC.dylib. If FTL is enabled, this
      gets copied into JavaScriptCore.framework/Versions/A/Libraries. JSC will
      load the dylib by finding it using NSBundle APIs and then doing dlopen().
      That will only happen lazily, when something happens that requires LLVM.
              
      This mostly takes care of LLVM static initialization overhead by deferring
      it until it's really needed.
              
      This takes care of LLVM's exit-time destructors because inside
      libllvmForJSC.dylib, we override __cxa_atexit.
              
      * Configurations/JavaScriptCore.xcconfig:
      * Configurations/LLVMForJSC.xcconfig: Added.
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * dfg/DFGPlan.cpp:
      (JSC::DFG::Plan::compileInThreadImpl):
      * disassembler/LLVMDisassembler.cpp:
      (JSC::tryToDisassembleWithLLVM):
      * ftl/FTLAbbreviatedTypes.h:
      * ftl/FTLAbbreviations.h:
      (JSC::FTL::voidType):
      (JSC::FTL::int1Type):
      (JSC::FTL::int8Type):
      (JSC::FTL::int16Type):
      (JSC::FTL::int32Type):
      (JSC::FTL::int64Type):
      (JSC::FTL::intPtrType):
      (JSC::FTL::floatType):
      (JSC::FTL::doubleType):
      (JSC::FTL::pointerType):
      (JSC::FTL::structType):
      (JSC::FTL::functionType):
      (JSC::FTL::typeOf):
      (JSC::FTL::mdKindID):
      (JSC::FTL::mdString):
      (JSC::FTL::mdNode):
      (JSC::FTL::setMetadata):
      (JSC::FTL::addFunction):
      (JSC::FTL::setLinkage):
      (JSC::FTL::setFunctionCallingConv):
      (JSC::FTL::getParam):
      (JSC::FTL::constInt):
      (JSC::FTL::constReal):
      (JSC::FTL::constIntToPtr):
      (JSC::FTL::constBitCast):
      (JSC::FTL::appendBasicBlock):
      (JSC::FTL::insertBasicBlock):
      (JSC::FTL::buildPhi):
      (JSC::FTL::addIncoming):
      (JSC::FTL::buildAlloca):
      (JSC::FTL::buildAdd):
      (JSC::FTL::buildSub):
      (JSC::FTL::buildMul):
      (JSC::FTL::buildDiv):
      (JSC::FTL::buildRem):
      (JSC::FTL::buildNeg):
      (JSC::FTL::buildFAdd):
      (JSC::FTL::buildFSub):
      (JSC::FTL::buildFMul):
      (JSC::FTL::buildFDiv):
      (JSC::FTL::buildFRem):
      (JSC::FTL::buildFNeg):
      (JSC::FTL::buildAnd):
      (JSC::FTL::buildOr):
      (JSC::FTL::buildXor):
      (JSC::FTL::buildShl):
      (JSC::FTL::buildAShr):
      (JSC::FTL::buildLShr):
      (JSC::FTL::buildNot):
      (JSC::FTL::buildLoad):
      (JSC::FTL::buildStore):
      (JSC::FTL::buildSExt):
      (JSC::FTL::buildZExt):
      (JSC::FTL::buildFPToSI):
      (JSC::FTL::buildFPToUI):
      (JSC::FTL::buildSIToFP):
      (JSC::FTL::buildUIToFP):
      (JSC::FTL::buildIntCast):
      (JSC::FTL::buildFPCast):
      (JSC::FTL::buildIntToPtr):
      (JSC::FTL::buildPtrToInt):
      (JSC::FTL::buildBitCast):
      (JSC::FTL::buildICmp):
      (JSC::FTL::buildFCmp):
      (JSC::FTL::buildCall):
      (JSC::FTL::setTailCall):
      (JSC::FTL::buildExtractValue):
      (JSC::FTL::buildSelect):
      (JSC::FTL::buildBr):
      (JSC::FTL::buildCondBr):
      (JSC::FTL::buildSwitch):
      (JSC::FTL::addCase):
      (JSC::FTL::buildRet):
      (JSC::FTL::buildUnreachable):
      (JSC::FTL::dumpModule):
      (JSC::FTL::verifyModule):
      * ftl/FTLCompile.cpp:
      (JSC::FTL::compile):
      * ftl/FTLFail.cpp:
      (JSC::FTL::fail):
      * ftl/FTLJITCode.h:
      * ftl/FTLJITFinalizer.h:
      * ftl/FTLLink.cpp:
      * ftl/FTLLowerDFGToLLVM.cpp:
      (JSC::FTL::LowerDFGToLLVM::lower):
      * ftl/FTLOutput.cpp:
      (JSC::FTL::Output::Output):
      (JSC::FTL::Output::~Output):
      * ftl/FTLOutput.h:
      (JSC::FTL::Output::appendTo):
      * ftl/FTLState.cpp:
      (JSC::FTL::State::State):
      (JSC::FTL::State::~State):
      * ftl/WebKitLLVMLibraryAnchor.cpp: Removed.
      * jsc.cpp:
      (jscmain):
      * llvm: Added.
      * llvm/InitializeLLVM.cpp: Added.
      (JSC::initializeLLVM):
      * llvm/InitializeLLVM.h: Added.
      * llvm/InitializeLLVMMac.mm: Added.
      (JSC::initializeLLVMImpl):
      * llvm/InitializeLLVMPOSIX.cpp: Added.
      (JSC::initializeLLVMPOSIX):
      * llvm/InitializeLLVMPOSIX.h: Added.
      * llvm/LLVMAPI.cpp: Added.
      * llvm/LLVMAPI.h: Added.
      * llvm/LLVMAPIFunctions.h: Added.
      * llvm/LLVMHeaders.h: Added.
      * llvm/library: Added.
      * llvm/library/LLVMAnchor.cpp: Added.
      * llvm/library/LLVMExports.cpp: Added.
      (initializeAndGetJSCLLVMAPI):
      * llvm/library/LLVMOverrides.cpp: Added.
      (__cxa_atexit):
      * llvm/library/config_llvm.h: Added.
      * runtime/InitializeThreading.cpp:
      (JSC::initializeThreadingOnce):
      * runtime/Options.h:
      
      Source/WTF: 
      
      Reviewed by Mark Rowe.
              
      Remove all LLVM stuff from WTF since to get LLVM you need to soft-link and it's
      entirely the responsibility of JSC to do that.
              
      Also fixed an export goof that I found after fixing the weak thingy script in JSC.
      
      * WTF.xcodeproj/project.pbxproj:
      * wtf/LLVMHeaders.h: Removed.
      * wtf/text/CString.h:
      (WTF::CStringHash::hash):
      
      Tools: 
      
      Reviewed by Mark Rowe.
      
      * Scripts/configure-llvm:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@157260 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ef8dbf84
  5. 19 Sep, 2013 1 commit
  6. 23 Aug, 2013 1 commit
    • commit-queue@webkit.org's avatar
      Failure building with python3 · ccdbe1c7
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=106645
      
      Patch by Laszlo Papp <lpapp@kde.org> on 2013-08-23
      Reviewed by Benjamin Poulain.
      
      Use print functions instead of python statements to be compatible with python 3.X and 2.7 as well.
      Archlinux has been using python3 and that is what causes issues while packaging QtWebKit along with Qt5.
      
      * disassembler/udis86/itab.py:
      (UdItabGenerator.genInsnTable):
      * disassembler/udis86/ud_opcode.py:
      (UdOpcodeTables.print_table):
      * disassembler/udis86/ud_optable.py:
      (UdOptableXmlParser.parseDef):
      (UdOptableXmlParser.parse):
      (printFn):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@154521 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ccdbe1c7
  7. 24 Jul, 2013 2 commits
    • oliver@apple.com's avatar
      fourthTier: since the FTL disassembly hacks cannot distinguish between code... · e6dfe683
      oliver@apple.com authored
      fourthTier: since the FTL disassembly hacks cannot distinguish between code and data, the LLVM disassembler symbol table callback should be able to deal gracefully with arbitrary garbage
      https://bugs.webkit.org/show_bug.cgi?id=118313
      
      Reviewed by Mark Hahnenberg.
      
      Give it a mode where we can still crash on unrecognized reference types, so that we might
      implement them in the future, but by default just print some stuff and keep going.
      
      * disassembler/LLVMDisassembler.cpp:
      (JSC):
      (JSC::symbolLookupCallback):
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153262 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      e6dfe683
    • oliver@apple.com's avatar
      fourthTier: JSC's disassembly infrastructure should be able to disassemble the... · 49a2bafa
      oliver@apple.com authored
      fourthTier: JSC's disassembly infrastructure should be able to disassemble the code that LLVM generates
      https://bugs.webkit.org/show_bug.cgi?id=118148
      
      Source/JavaScriptCore:
      
      Reviewed by Anders Carlsson.
      
      Oh boy. UDis86 cannot disassemble the AVX (or whatever it's called) stuff
      that LLVM generates for floating point. So the right decision is to
      switch to the LLVM disassembler, right? Wrong!! LLVM's disassembler
      cannot disassemble the load-from-absolute-address-into-%rax instructions
      that our JIT generates quite a lot of.
      
      So, this keeps the UDis86 disassembler, but adds the LLVM disassembler,
      and requires the caller of disassemble() to hint which one is likely to
      be less wrong for the given code.
      
      Maybe in the future LLVM will catch up to UDis86, but it's definitely not
      there right now.
      
      This now allows us to disassemble all of the code that LLVM generates.
      
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * disassembler/Disassembler.cpp:
      (JSC::disassemble):
      * disassembler/Disassembler.h:
      (JSC::tryToDisassemble):
      (JSC):
      * disassembler/LLVMDisassembler.cpp: Added.
      (JSC):
      (JSC::symbolLookupCallback):
      (JSC::tryToDisassembleWithLLVM):
      * disassembler/LLVMDisassembler.h: Added.
      (JSC):
      (JSC::tryToDisassembleWithLLVM):
      * disassembler/UDis86Disassembler.cpp:
      (JSC::tryToDisassembleWithUDis86):
      * disassembler/UDis86Disassembler.h: Added.
      (JSC):
      (JSC::tryToDisassembleWithUDis86):
      * disassembler/X86Disassembler.cpp: Added.
      (JSC):
      (JSC::tryToDisassemble):
      * ftl/FTLAbbreviatedTypes.h:
      * ftl/FTLCompile.cpp:
      (JSC::FTL::compile):
      * ftl/FTLJITCode.h:
      * ftl/FTLJITFinalizer.h:
      * ftl/FTLLLVMHeaders.h: Removed.
      * ftl/FTLLink.cpp:
      * runtime/InitializeThreading.cpp:
      (JSC::initializeThreadingOnce):
      * runtime/Options.h:
      (JSC):
      
      Source/WTF:
      
      Reviewed by Anders Carlsson.
      
      We now use LLVM for two things: disassembler and FTL. Separate out the question
      of whether we have LLVM (HAVE(LLVM)) from whether we want to use the LLVM
      disassembler (USE(LLVM_DISASSEMBLER)) and whether we enable the FTL
      (ENABLE(FTL_JIT)).
      
      Also move the cruft for including LLVM headers into WTF since now we use it in
      a bunch of places, not all related to FTL. There's no obvious place to put that
      file in JSC so I put it in WTF.
      
      * WTF.xcodeproj/project.pbxproj:
      * wtf/LLVMHeaders.h: Copied from Source/JavaScriptCore/ftl/FTLLLVMHeaders.h.
      * wtf/Platform.h:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@153256 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      49a2bafa
  8. 09 May, 2013 1 commit
    • msaboff@apple.com's avatar
      JSC: There should be a disassembler for ARM Thumb 2 · ac9f0e52
      msaboff@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=115827
      
      Reviewed by Filip Pizlo.
      
      Source/JavaScriptCore: 
      
      Added a new disassembler for ARMv7 Thumb2 instructions for use by the JSC debugging
      and profiling code.  The opcode coverage is currently not complete.  It covers all
      of the integer instructions JSC currently emits, but only a limited number of
      floating point opcodes.  Currently that is just the 64 bit vmov and vmsr instructions.
      
      The disassembler is structured as a base opcode class ARMv7DOpcode with sub-classes
      for each instruction group.  There is a public format method that does the bulk of
      the disassembly work.  There are two broad sub-classes, ARMv7D16BitOpcode and
      ARMv7D32BitOpcode, for the 16 bit and 32 bit opcodes.  There are sub-classes under
      those two classes for individual and related groups of opcodes.  Instructions are
      "dispatched" to the right subclass via two arrays of linked lists in the inner classes
      OpcodeGroup.  There is one such inner class for each ARMv7D16BitOpcode and ARMv7D32BitOpcode.
      Each OpcodeGroup has a mask and a pattern that it applies to the instruction to determine
      that it matches a particular group.  OpcodeGroup uses a static method to reinterpret_cast
      the Opcode object to the right base class for the instruction group for formatting.
      The cast eliminates the need of allocating an object for each decoded instruction.
      Unknown instructions are formatted as ".word 1234" or ".long 12345678" depending whether
      the instruction is 16 or 32 bit.
      
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * disassembler/ARMv7: Added.
      * disassembler/ARMv7/ARMv7DOpcode.cpp: Added.
      (ARMv7Disassembler):
      (OpcodeGroupInitializer):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::init):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::startITBlock):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::saveITConditionAt):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::fetchOpcode):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::disassemble):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::bufferPrintf):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionName):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterName):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendRegisterList):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendFPRegisterName):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::init):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::doDisassemble):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::defaultFormat):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::format):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::init):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::doDisassemble):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::defaultFormat):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::appendModifiedImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::appendImmShift):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::appendFPRegister):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::format):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::format):
      * disassembler/ARMv7/ARMv7DOpcode.h: Added.
      (ARMv7Disassembler):
      (ARMv7DOpcode):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::ARMv7DOpcode):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::is32BitInstruction):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::isFPInstruction):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::conditionName):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::shiftName):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::inITBlock):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::startingITBlock):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::endITBlock):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendInstructionNameNoITBlock):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSeparator):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendCharacter):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendString):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftType):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendSignedImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendUnsignedImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendPCRelativeOffset):
      (JSC::ARMv7Disassembler::ARMv7DOpcode::appendShiftAmount):
      (ARMv7D16BitOpcode):
      (OpcodeGroup):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::OpcodeGroup):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::setNext):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::next):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::matches):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::OpcodeGroup::format):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rm):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::rd):
      (JSC::ARMv7Disassembler::ARMv7D16BitOpcode::opcodeGroupNumber):
      (ARMv7DOpcodeAddRegisterT2):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rdn):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddRegisterT2::rm):
      (ARMv7DOpcodeAddSPPlusImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::rd):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSPPlusImmediate::immediate8):
      (ARMv7DOpcodeAddSubtract):
      (ARMv7DOpcodeAddSubtractT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rm):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractT1::rn):
      (ARMv7DOpcodeAddSubtractImmediate3):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::immediate3):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate3::rn):
      (ARMv7DOpcodeAddSubtractImmediate8):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::rdn):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeAddSubtractImmediate8::immediate8):
      (ARMv7DOpcodeBranchConditionalT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::condition):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchConditionalT1::offset):
      (ARMv7DOpcodeBranchExchangeT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchExchangeT1::rm):
      (ARMv7DOpcodeBranchT2):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchT2::immediate11):
      (ARMv7DOpcodeCompareImmediateT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::rn):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareImmediateT1::immediate8):
      (ARMv7DOpcodeCompareRegisterT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT1::rn):
      (ARMv7DOpcodeCompareRegisterT2):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rn):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeCompareRegisterT2::rm):
      (ARMv7DOpcodeDataProcessingRegisterT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rm):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegisterT1::rdn):
      (ARMv7DOpcodeGeneratePCRelativeAddress):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::rd):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeGeneratePCRelativeAddress::immediate8):
      (ARMv7DOpcodeLoadFromLiteralPool):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::rt):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadFromLiteralPool::immediate8):
      (ARMv7DOpcodeLoadStoreRegisterImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::immediate5):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rn):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::rt):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterImmediate::scale):
      (ARMv7DOpcodeLoadStoreRegisterImmediateWordAndByte):
      (ARMv7DOpcodeLoadStoreRegisterImmediateHalfWord):
      (ARMv7DOpcodeLoadStoreRegisterOffsetT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::opB):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rm):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rn):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterOffsetT1::rt):
      (ARMv7DOpcodeLoadStoreRegisterSPRelative):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::rt):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadStoreRegisterSPRelative::immediate8):
      (ARMv7DOpcodeLogicalImmediateT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLogicalImmediateT1::immediate5):
      (ARMv7DOpcodeMiscAddSubSP):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscAddSubSP::immediate7):
      (ARMv7DOpcodeMiscByteHalfwordOps):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscByteHalfwordOps::op):
      (ARMv7DOpcodeMiscBreakpointT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscBreakpointT1::immediate8):
      (ARMv7DOpcodeMiscCompareAndBranch):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::immediate6):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscCompareAndBranch::rn):
      (ARMv7DOpcodeMiscHint16):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscHint16::opA):
      (ARMv7DOpcodeMiscIfThenT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::firstCondition):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscIfThenT1::mask):
      (ARMv7DOpcodeMiscPushPop):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMiscPushPop::registerMask):
      (ARMv7DOpcodeMoveImmediateT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::rd):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveImmediateT1::immediate8):
      (ARMv7DOpcodeMoveRegisterT1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rd):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeMoveRegisterT1::rm):
      (ARMv7D32BitOpcode):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::OpcodeGroup):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::setNext):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::next):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::matches):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::OpcodeGroup::format):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rd):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rm):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rn):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::rt):
      (JSC::ARMv7Disassembler::ARMv7D32BitOpcode::opcodeGroupNumber):
      (ARMv7DOpcodeBranchRelative):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::sBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::j2):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchRelative::immediate11):
      (ARMv7DOpcodeConditionalBranchT3):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::offset):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::condition):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeConditionalBranchT3::immediate6):
      (ARMv7DOpcodeBranchOrBranchLink):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::offset):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::immediate10):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeBranchOrBranchLink::isBL):
      (ARMv7DOpcodeDataProcessingLogicalAndRithmetic):
      (ARMv7DOpcodeDataProcessingModifiedImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::sBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingModifiedImmediate::immediate12):
      (ARMv7DOpcodeDataProcessingShiftedReg):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::sBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::immediate5):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::type):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tbBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingShiftedReg::tBit):
      (ARMv7DOpcodeDataProcessingReg):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingReg::op2):
      (ARMv7DOpcodeDataProcessingRegShift):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegShift::opName):
      (ARMv7DOpcodeDataProcessingRegExtend):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::opExtendAndAddName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegExtend::rotate):
      (ARMv7DOpcodeDataProcessingRegParallel):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegParallel::opName):
      (ARMv7DOpcodeDataProcessingRegMisc):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataProcessingRegMisc::opName):
      (ARMv7DOpcodeHint32):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::isDebugHint):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::debugOption):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeHint32::op):
      (ARMv7DOpcodeFPTransfer):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opH):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opL):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::rt):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opC):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::opB):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vd):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeFPTransfer::vn):
      (ARMv7DOpcodeDataLoad):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataLoad::op):
      (ARMv7DOpcodeLoadRegister):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadRegister::immediate2):
      (ARMv7DOpcodeLoadSignedImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::pBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::uBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::wBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadSignedImmediate::immediate8):
      (ARMv7DOpcodeLoadUnsignedImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLoadUnsignedImmediate::immediate12):
      (ARMv7DOpcodeLongMultipleDivide):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlalOpName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlaldOpName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::smlsldOpName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdLo):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::rdHi):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op1):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::op2):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::nBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeLongMultipleDivide::mBit):
      (ARMv7DOpcodeDataPushPopSingle):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataPushPopSingle::op):
      (ARMv7DOpcodeDataStoreSingle):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeDataStoreSingle::op):
      (ARMv7DOpcodeStoreSingleImmediate12):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate12::immediate12):
      (ARMv7DOpcodeStoreSingleImmediate8):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::pBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::uBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::wBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleImmediate8::immediate8):
      (ARMv7DOpcodeStoreSingleRegister):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeStoreSingleRegister::immediate2):
      (ARMv7DOpcodeUnmodifiedImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::opName):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::shBit):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::bitNumOrSatImmediate):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate5):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate12):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeUnmodifiedImmediate::immediate16):
      (ARMv7DOpcodeVMOVDoublePrecision):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt2):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::rt):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVDoublePrecision::vm):
      (ARMv7DOpcodeVMOVSinglePrecision):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::op):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt2):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::rt):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMOVSinglePrecision::vm):
      (ARMv7DOpcodeVMSR):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::opL):
      (JSC::ARMv7Disassembler::ARMv7DOpcodeVMSR::rt):
      * disassembler/ARMv7Disassembler.cpp: Added.
      (JSC::tryToDisassemble):
      
      Source/WTF: 
      
      Added a new disassembler for ARMv7 Thumb2 instructions for use by the JSC debugging
      and profiling code.  Enabled the disassembler for IOS bulds.
      
      * wtf/Platform.h:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149821 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      ac9f0e52
  9. 24 Dec, 2012 1 commit
    • commit-queue@webkit.org's avatar
      Remove wtf/Platform.h includes from {c|cpp} files · 665c3e47
      commit-queue@webkit.org authored
      https://bugs.webkit.org/show_bug.cgi?id=105678
      
      Patch by Laszlo Gombos <l.gombos@samsung.com> on 2012-12-24
      Reviewed by Kentaro Hara.
      
      Remove wtf/Platform.h from the include list as it is already
      included in config.h.
      
      Source/JavaScriptCore:
      
      * disassembler/udis86/udis86.c:
      * disassembler/udis86/udis86_decode.c:
      * disassembler/udis86/udis86_input.c:
      * disassembler/udis86/udis86_itab_holder.c:
      * disassembler/udis86/udis86_syn-att.c:
      * disassembler/udis86/udis86_syn-intel.c:
      * disassembler/udis86/udis86_syn.c:
      * heap/VTableSpectrum.cpp:
      
      Source/WebCore:
      
      No new tests as there is no new functionality.
      
      * rendering/svg/RenderSVGRect.cpp:
      
      Source/WebKit2:
      
      * Shared/qt/QtNetworkRequestData.cpp:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@138449 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      665c3e47
  10. 23 Nov, 2012 1 commit
    • fpizlo@apple.com's avatar
      Any function that can log things should be able to easily log them to a memory buffer as well · 2ee99366
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=103000
      
      Reviewed by Sam Weinig.
      
      Source/JavaScriptCore: 
      
      Change all users of WTF::dataFile() to expect a PrintStream& rather than a FILE*.
      
      * bytecode/Operands.h:
      (JSC::OperandValueTraits::dump):
      (JSC::dumpOperands):
      (JSC):
      * dfg/DFGAbstractState.cpp:
      (JSC::DFG::AbstractState::dump):
      * dfg/DFGAbstractState.h:
      (AbstractState):
      * dfg/DFGAbstractValue.h:
      (JSC::DFG::AbstractValue::dump):
      * dfg/DFGCommon.h:
      (JSC::DFG::NodeIndexTraits::dump):
      * dfg/DFGStructureAbstractValue.h:
      (JSC::DFG::StructureAbstractValue::dump):
      * dfg/DFGVariableEvent.cpp:
      (JSC::DFG::VariableEvent::dump):
      (JSC::DFG::VariableEvent::dumpFillInfo):
      (JSC::DFG::VariableEvent::dumpSpillInfo):
      * dfg/DFGVariableEvent.h:
      (VariableEvent):
      * disassembler/Disassembler.h:
      (JSC):
      (JSC::tryToDisassemble):
      * disassembler/UDis86Disassembler.cpp:
      (JSC::tryToDisassemble):
      
      Source/WTF: 
      
      We have a number of places where we pass around a FILE* as a target to which to print
      some logging information. But the purpose of passing FILE* instead of always assuming
      that we should dump to stderr is that it may be sometimes useful to send the logging
      information elsewhere. Unfortunately, FILE* isn't quite powerful enough: it's combersome
      to use it to send logging to a string, for example.
              
      We could get around this by using <iostream> and <sstream>, but so far this aspect of
      C++ has not been part of the WebKit coding conventions. Personally I find <iostream>
      awkward due to its abuse of operator overloading.
              
      So this patch introduces the PrintStream abstract class, which offers printf-like
      functionality while completely abstracting the destination and mechanism of the printing
      output. It would be trivial to implement a StringPrintStream, for example. This will feed
      into work on https://bugs.webkit.org/show_bug.cgi?id=102999.
              
      This also sets us up for creating templatized print() and println() methods that will
      allow us to say things like out.print("count = ", count, "\n"), but that is the topic
      of https://bugs.webkit.org/show_bug.cgi?id=103009.
              
      This patch also changes dataLog() to use FilePrintStream internally, and WTF::dataFile()
      now returns a FilePrintStream&. Any previous users of WTF::dataFile() have been changed
      to expect a PrintStream&.
      
      * GNUmakefile.list.am:
      * WTF.pro:
      * WTF.vcproj/WTF.vcproj:
      * WTF.xcodeproj/project.pbxproj:
      * wtf/CMakeLists.txt:
      * wtf/DataLog.cpp:
      (WTF):
      (WTF::initializeLogFileOnce):
      (WTF::initializeLogFile):
      (WTF::dataFile):
      (WTF::dataLogV):
      (WTF::dataLogString):
      * wtf/DataLog.h:
      (WTF):
      * wtf/FilePrintStream.cpp: Added.
      (WTF):
      (WTF::FilePrintStream::FilePrintStream):
      (WTF::FilePrintStream::~FilePrintStream):
      (WTF::FilePrintStream::vprintf):
      (WTF::FilePrintStream::flush):
      * wtf/FilePrintStream.h: Added.
      (WTF):
      (FilePrintStream):
      (WTF::FilePrintStream::file):
      * wtf/PrintStream.cpp: Added.
      (WTF):
      (WTF::PrintStream::PrintStream):
      (WTF::PrintStream::~PrintStream):
      (WTF::PrintStream::printf):
      (WTF::PrintStream::print):
      (WTF::PrintStream::println):
      (WTF::PrintStream::flush):
      (WTF::print):
      * wtf/PrintStream.h: Added.
      (WTF):
      (PrintStream):
      (WTF::print):
      (WTF::println):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@135640 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2ee99366
  11. 21 Nov, 2012 1 commit
    • fpizlo@apple.com's avatar
      It should be possible to say disassemble(stuff) instead of having to say if... · 2860dbe8
      fpizlo@apple.com authored
      It should be possible to say disassemble(stuff) instead of having to say if (!tryToDisassemble(stuff)) dataLog("I failed")
      https://bugs.webkit.org/show_bug.cgi?id=103010
      
      Reviewed by Anders Carlsson.
      
      You can still say tryToDisassemble(), which will tell you if it failed; you can then
      decide what to do instead. But it's better to say disassemble(), which will just print
      the instruction ranges if tryToDisassemble() failed. This is particularly appropriate
      since that's what all previous users of tryToDisassemble() would have done in some
      form or another.
      
      * CMakeLists.txt:
      * GNUmakefile.list.am:
      * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * Target.pri:
      * assembler/LinkBuffer.cpp:
      (JSC::LinkBuffer::finalizeCodeWithDisassembly):
      * dfg/DFGDisassembler.cpp:
      (JSC::DFG::Disassembler::dumpDisassembly):
      * disassembler/Disassembler.cpp: Added.
      (JSC):
      (JSC::disassemble):
      * disassembler/Disassembler.h:
      (JSC):
      * jit/JITDisassembler.cpp:
      (JSC::JITDisassembler::dumpDisassembly):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@135466 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2860dbe8
  12. 04 Nov, 2012 1 commit
  13. 27 Jun, 2012 1 commit
  14. 19 Jun, 2012 2 commits
    • fpizlo@apple.com's avatar
      JSC should be able to show disassembly for all generated JIT code · 2adf527e
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=89536
      
      Reviewed by Gavin Barraclough.
              
      Now instead of doing linkBuffer.finalizeCode(), you do
      FINALIZE_CODE(linkBuffer, (... explanation ...)). FINALIZE_CODE() then
      prints your explanation and the disassembled code, if
      Options::showDisassembly is set to true.
      
      * CMakeLists.txt:
      * GNUmakefile.list.am:
      * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * Target.pri:
      * assembler/LinkBuffer.cpp: Added.
      (JSC):
      (JSC::LinkBuffer::finalizeCodeWithoutDisassembly):
      (JSC::LinkBuffer::finalizeCodeWithDisassembly):
      (JSC::LinkBuffer::linkCode):
      (JSC::LinkBuffer::performFinalization):
      (JSC::LinkBuffer::dumpLinkStatistics):
      (JSC::LinkBuffer::dumpCode):
      * assembler/LinkBuffer.h:
      (LinkBuffer):
      (JSC):
      * assembler/MacroAssemblerCodeRef.h:
      (JSC::MacroAssemblerCodeRef::tryToDisassemble):
      (MacroAssemblerCodeRef):
      * dfg/DFGJITCompiler.cpp:
      (JSC::DFG::JITCompiler::compile):
      (JSC::DFG::JITCompiler::compileFunction):
      * dfg/DFGOSRExitCompiler.cpp:
      * dfg/DFGRepatch.cpp:
      (JSC::DFG::generateProtoChainAccessStub):
      (JSC::DFG::tryCacheGetByID):
      (JSC::DFG::tryBuildGetByIDList):
      (JSC::DFG::emitPutReplaceStub):
      (JSC::DFG::emitPutTransitionStub):
      * dfg/DFGThunks.cpp:
      (JSC::DFG::osrExitGenerationThunkGenerator):
      * disassembler/Disassembler.h:
      (JSC):
      (JSC::tryToDisassemble):
      * disassembler/UDis86Disassembler.cpp:
      (JSC::tryToDisassemble):
      * jit/JIT.cpp:
      (JSC::JIT::privateCompile):
      * jit/JITCode.h:
      (JSC::JITCode::tryToDisassemble):
      * jit/JITOpcodes.cpp:
      (JSC::JIT::privateCompileCTIMachineTrampolines):
      * jit/JITOpcodes32_64.cpp:
      (JSC::JIT::privateCompileCTIMachineTrampolines):
      (JSC::JIT::privateCompileCTINativeCall):
      * jit/JITPropertyAccess.cpp:
      (JSC::JIT::stringGetByValStubGenerator):
      (JSC::JIT::privateCompilePutByIdTransition):
      (JSC::JIT::privateCompilePatchGetArrayLength):
      (JSC::JIT::privateCompileGetByIdProto):
      (JSC::JIT::privateCompileGetByIdSelfList):
      (JSC::JIT::privateCompileGetByIdProtoList):
      (JSC::JIT::privateCompileGetByIdChainList):
      (JSC::JIT::privateCompileGetByIdChain):
      * jit/JITPropertyAccess32_64.cpp:
      (JSC::JIT::stringGetByValStubGenerator):
      (JSC::JIT::privateCompilePutByIdTransition):
      (JSC::JIT::privateCompilePatchGetArrayLength):
      (JSC::JIT::privateCompileGetByIdProto):
      (JSC::JIT::privateCompileGetByIdSelfList):
      (JSC::JIT::privateCompileGetByIdProtoList):
      (JSC::JIT::privateCompileGetByIdChainList):
      (JSC::JIT::privateCompileGetByIdChain):
      * jit/SpecializedThunkJIT.h:
      (JSC::SpecializedThunkJIT::finalize):
      * jit/ThunkGenerators.cpp:
      (JSC::charCodeAtThunkGenerator):
      (JSC::charAtThunkGenerator):
      (JSC::fromCharCodeThunkGenerator):
      (JSC::sqrtThunkGenerator):
      (JSC::floorThunkGenerator):
      (JSC::ceilThunkGenerator):
      (JSC::roundThunkGenerator):
      (JSC::expThunkGenerator):
      (JSC::logThunkGenerator):
      (JSC::absThunkGenerator):
      (JSC::powThunkGenerator):
      * llint/LLIntThunks.cpp:
      (JSC::LLInt::generateThunkWithJumpTo):
      (JSC::LLInt::functionForCallEntryThunkGenerator):
      (JSC::LLInt::functionForConstructEntryThunkGenerator):
      (JSC::LLInt::functionForCallArityCheckThunkGenerator):
      (JSC::LLInt::functionForConstructArityCheckThunkGenerator):
      (JSC::LLInt::evalEntryThunkGenerator):
      (JSC::LLInt::programEntryThunkGenerator):
      * runtime/Options.cpp:
      (Options):
      (JSC::Options::initializeOptions):
      * runtime/Options.h:
      (Options):
      * yarr/YarrJIT.cpp:
      (JSC::Yarr::YarrGenerator::compile):
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@120786 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      2adf527e
    • fpizlo@apple.com's avatar
      It should be possible to look at disassembly · 01c2a197
      fpizlo@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=89319
      
      Source/JavaScriptCore: 
      
      Reviewed by Sam Weinig.
              
      This imports the udis86 disassembler library. The library is placed
      behind an abstraction in disassembler/Disassembler.h, so that we can
      in the future use other disassemblers (for other platforms) whenever
      appropriate. As a first step, the disassembler is being invoked for
      DFG verbose dumps.
              
      If we ever want to merge a new version of udis86 in the future, I've
      made notes about changes I made to the library in
      disassembler/udis86/differences.txt.
      
      * CMakeLists.txt:
      * DerivedSources.make:
      * GNUmakefile.list.am:
      * JavaScriptCore.pri:
      * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
      * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops:
      * JavaScriptCore.xcodeproj/project.pbxproj:
      * dfg/DFGJITCompiler.cpp:
      (JSC::DFG::JITCompiler::compile):
      (JSC::DFG::JITCompiler::compileFunction):
      * disassembler: Added.
      * disassembler/Disassembler.h: Added.
      (JSC):
      (JSC::tryToDisassemble):
      * disassembler/UDis86Disassembler.cpp: Added.
      (JSC):
      (JSC::tryToDisassemble):
      * disassembler/udis86: Added.
      * disassembler/udis86/differences.txt: Added.
      * disassembler/udis86/itab.py: Added.
      (UdItabGenerator):
      (UdItabGenerator.__init__):
      (UdItabGenerator.toGroupId):
      (UdItabGenerator.genLookupTable):
      (UdItabGenerator.genLookupTableList):
      (UdItabGenerator.genInsnTable):
      (genItabH):
      (genItabH.UD_ITAB_H):
      (genItabC):
      (genItab):
      (main):
      * disassembler/udis86/optable.xml: Added.
      * disassembler/udis86/ud_opcode.py: Added.
      (UdOpcodeTables):
      (UdOpcodeTables.sizeOfTable):
      (UdOpcodeTables.nameOfTable):
      (UdOpcodeTables.updateTable):
      (UdOpcodeTables.Insn):
      (UdOpcodeTables.Insn.__init__):
      (UdOpcodeTables.Insn.__init__.opcode):
      (UdOpcodeTables.parse):
      (UdOpcodeTables.addInsnDef):
      (UdOpcodeTables.print_table):
      (UdOpcodeTables.print_tree):
      * disassembler/udis86/ud_optable.py: Added.
      (UdOptableXmlParser):
      (UdOptableXmlParser.parseDef):
      (UdOptableXmlParser.parse):
      (printFn):
      (parse):
      (main):
      * disassembler/udis86/udis86.c: Added.
      (ud_init):
      (ud_disassemble):
      (ud_set_mode):
      (ud_set_vendor):
      (ud_set_pc):
      (ud):
      (ud_insn_asm):
      (ud_insn_off):
      (ud_insn_hex):
      (ud_insn_ptr):
      (ud_insn_len):
      * disassembler/udis86/udis86.h: Added.
      * disassembler/udis86/udis86_decode.c: Added.
      (eff_adr_mode):
      (ud_lookup_mnemonic):
      (decode_prefixes):
      (modrm):
      (resolve_operand_size):
      (resolve_mnemonic):
      (decode_a):
      (decode_gpr):
      (resolve_gpr64):
      (resolve_gpr32):
      (resolve_reg):
      (decode_imm):
      (decode_modrm_reg):
      (decode_modrm_rm):
      (decode_o):
      (decode_operand):
      (decode_operands):
      (clear_insn):
      (resolve_mode):
      (gen_hex):
      (decode_insn):
      (decode_3dnow):
      (decode_ssepfx):
      (decode_ext):
      (decode_opcode):
      (ud_decode):
      * disassembler/udis86/udis86_decode.h: Added.
      (ud_itab_entry_operand):
      (ud_itab_entry):
      (ud_lookup_table_list_entry):
      (sse_pfx_idx):
      (mode_idx):
      (modrm_mod_idx):
      (vendor_idx):
      (is_group_ptr):
      (group_idx):
      * disassembler/udis86/udis86_extern.h: Added.
      * disassembler/udis86/udis86_input.c: Added.
      (inp_buff_hook):
      (inp_file_hook):
      (ud):
      (ud_set_user_opaque_data):
      (ud_get_user_opaque_data):
      (ud_set_input_buffer):
      (ud_set_input_file):
      (ud_input_skip):
      (ud_input_end):
      (ud_inp_next):
      (ud_inp_back):
      (ud_inp_peek):
      (ud_inp_move):
      (ud_inp_uint8):
      (ud_inp_uint16):
      (ud_inp_uint32):
      (ud_inp_uint64):
      * disassembler/udis86/udis86_input.h: Added.
      * disassembler/udis86/udis86_itab_holder.c: Added.
      * disassembler/udis86/udis86_syn-att.c: Added.
      (opr_cast):
      (gen_operand):
      (ud_translate_att):
      * disassembler/udis86/udis86_syn-intel.c: Added.
      (opr_cast):
      (gen_operand):
      (ud_translate_intel):
      * disassembler/udis86/udis86_syn.c: Added.
      * disassembler/udis86/udis86_syn.h: Added.
      (mkasm):
      * disassembler/udis86/udis86_types.h: Added.
      (ud_operand):
      (ud):
      * jit/JITCode.h:
      (JITCode):
      (JSC::JITCode::tryToDisassemble):
      
      Source/WebCore: 
      
      Reviewed by Sam Weinig.
              
      Just fixing EFL's build system now that JSC has a new directory.
      
      * CMakeLists.txt:
      
      Source/WTF: 
      
      Reviewed by Sam Weinig.
              
      Made changes to Assertions.h to make it friendly to C code again.
              
      Added ENABLE(DISASSEMBLER) and USE(UDIS86) logic to Platform.h.
      
      * wtf/Assertions.h:
      * wtf/Platform.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@120745 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      01c2a197