Skip to content
  • zherczeg@webkit.org's avatar
    Port DFG JIT to traditional ARM · d6e661f4
    zherczeg@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=90198
    
    Reviewed by Filip Pizlo.
    
    Source/JavaScriptCore: 
    
    This patch contains the macro assembler part of the
    DFG JIT support on ARM systems with fixed 32 bit instruction
    width. A large amount of old code was refactored, and the ARMv4
    or lower support is removed from the macro assembler.
    
    Sunspider is improved by 8%, and V8 is 92%.
    
    * assembler/ARMAssembler.cpp:
    (JSC::ARMAssembler::dataTransfer32):
    (JSC::ARMAssembler::baseIndexTransfer32):
    (JSC):
    (JSC::ARMAssembler::dataTransfer16):
    (JSC::ARMAssembler::baseIndexTransfer16):
    (JSC::ARMAssembler::dataTransferFloat):
    (JSC::ARMAssembler::baseIndexTransferFloat):
    (JSC::ARMAssembler::executableCopy):
    * assembler/ARMAssembler.h:
    (JSC::ARMAssembler::ARMAssembler):
    (JSC::ARMAssembler::emitInst):
    (JSC::ARMAssembler::vmov_f64_r):
    (ARMAssembler):
    (JSC::ARMAssembler::vabs_f64_r):
    (JSC::ARMAssembler::vneg_f64_r):
    (JSC::ARMAssembler::ldr_imm):
    (JSC::ARMAssembler::ldr_un_imm):
    (JSC::ARMAssembler::dtr_u):
    (JSC::ARMAssembler::dtr_ur):
    (JSC::ARMAssembler::dtr_d):
    (JSC::ARMAssembler::dtr_dr):
    (JSC::ARMAssembler::dtrh_u):
    (JSC::ARMAssembler::dtrh_ur):
    (JSC::ARMAssembler::dtrh_d):
    (JSC::ARMAssembler::dtrh_dr):
    (JSC::ARMAssembler::fdtr_u):
    (JSC::ARMAssembler::fdtr_d):
    (JSC::ARMAssembler::push_r):
    (JSC::ARMAssembler::pop_r):
    (JSC::ARMAssembler::poke_r):
    (JSC::ARMAssembler::peek_r):
    (JSC::ARMAssembler::vmov_vfp64_r):
    (JSC::ARMAssembler::vmov_arm64_r):
    (JSC::ARMAssembler::vmov_vfp32_r):
    (JSC::ARMAssembler::vmov_arm32_r):
    (JSC::ARMAssembler::vcvt_u32_f64_r):
    (JSC::ARMAssembler::vcvt_f64_f32_r):
    (JSC::ARMAssembler::vcvt_f32_f64_r):
    (JSC::ARMAssembler::clz_r):
    (JSC::ARMAssembler::bkpt):
    (JSC::ARMAssembler::bx):
    (JSC::ARMAssembler::blx):
    (JSC::ARMAssembler::labelIgnoringWatchpoints):
    (JSC::ARMAssembler::labelForWatchpoint):
    (JSC::ARMAssembler::label):
    (JSC::ARMAssembler::getLdrImmAddress):
    (JSC::ARMAssembler::replaceWithJump):
    (JSC::ARMAssembler::maxJumpReplacementSize):
    (JSC::ARMAssembler::getOp2Byte):
    (JSC::ARMAssembler::getOp2Half):
    (JSC::ARMAssembler::RM):
    (JSC::ARMAssembler::RS):
    (JSC::ARMAssembler::RD):
    (JSC::ARMAssembler::RN):
    * assembler/AssemblerBufferWithConstantPool.h:
    (JSC::AssemblerBufferWithConstantPool::ensureSpaceForAnyInstruction):
    * assembler/MacroAssemblerARM.cpp:
    (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords):
    * assembler/MacroAssemblerARM.h:
    (JSC::MacroAssemblerARM::add32):
    (MacroAssemblerARM):
    (JSC::MacroAssemblerARM::and32):
    (JSC::MacroAssemblerARM::lshift32):
    (JSC::MacroAssemblerARM::mul32):
    (JSC::MacroAssemblerARM::neg32):
    (JSC::MacroAssemblerARM::rshift32):
    (JSC::MacroAssemblerARM::urshift32):
    (JSC::MacroAssemblerARM::xor32):
    (JSC::MacroAssemblerARM::load8):
    (JSC::MacroAssemblerARM::load8Signed):
    (JSC::MacroAssemblerARM::load16):
    (JSC::MacroAssemblerARM::load16Signed):
    (JSC::MacroAssemblerARM::load32):
    (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch):
    (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch):
    (JSC::MacroAssemblerARM::store8):
    (JSC::MacroAssemblerARM::store16):
    (JSC::MacroAssemblerARM::store32):
    (JSC::MacroAssemblerARM::move):
    (JSC::MacroAssemblerARM::jump):
    (JSC::MacroAssemblerARM::branchAdd32):
    (JSC::MacroAssemblerARM::mull32):
    (JSC::MacroAssemblerARM::branchMul32):
    (JSC::MacroAssemblerARM::nearCall):
    (JSC::MacroAssemblerARM::compare32):
    (JSC::MacroAssemblerARM::test32):
    (JSC::MacroAssemblerARM::sub32):
    (JSC::MacroAssemblerARM::call):
    (JSC::MacroAssemblerARM::loadFloat):
    (JSC::MacroAssemblerARM::loadDouble):
    (JSC::MacroAssemblerARM::storeFloat):
    (JSC::MacroAssemblerARM::storeDouble):
    (JSC::MacroAssemblerARM::moveDouble):
    (JSC::MacroAssemblerARM::addDouble):
    (JSC::MacroAssemblerARM::divDouble):
    (JSC::MacroAssemblerARM::subDouble):
    (JSC::MacroAssemblerARM::mulDouble):
    (JSC::MacroAssemblerARM::absDouble):
    (JSC::MacroAssemblerARM::negateDouble):
    (JSC::MacroAssemblerARM::convertInt32ToDouble):
    (JSC::MacroAssemblerARM::convertFloatToDouble):
    (JSC::MacroAssemblerARM::convertDoubleToFloat):
    (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32):
    (JSC::MacroAssemblerARM::branchTruncateDoubleToUint32):
    (JSC::MacroAssemblerARM::truncateDoubleToInt32):
    (JSC::MacroAssemblerARM::truncateDoubleToUint32):
    (JSC::MacroAssemblerARM::branchConvertDoubleToInt32):
    (JSC::MacroAssemblerARM::branchDoubleNonZero):
    (JSC::MacroAssemblerARM::branchDoubleZeroOrNaN):
    (JSC::MacroAssemblerARM::invert):
    (JSC::MacroAssemblerARM::replaceWithJump):
    (JSC::MacroAssemblerARM::maxJumpReplacementSize):
    (JSC::MacroAssemblerARM::call32):
    * assembler/SH4Assembler.h:
    (JSC::SH4Assembler::label):
    * dfg/DFGAssemblyHelpers.h:
    (JSC::DFG::AssemblyHelpers::debugCall):
    (JSC::DFG::AssemblyHelpers::boxDouble):
    (JSC::DFG::AssemblyHelpers::unboxDouble):
    * dfg/DFGCCallHelpers.h:
    (CCallHelpers):
    (JSC::DFG::CCallHelpers::setupArguments):
    * dfg/DFGFPRInfo.h:
    (DFG):
    * dfg/DFGGPRInfo.h:
    (DFG):
    (GPRInfo):
    * dfg/DFGOperations.cpp:
    (JSC):
    * dfg/DFGSpeculativeJIT.h:
    (SpeculativeJIT):
    (JSC::DFG::SpeculativeJIT::appendCallWithExceptionCheckSetResult):
    (JSC::DFG::SpeculativeJIT::appendCallSetResult):
    * jit/JITStubs.cpp:
    (JSC):
    * jit/JITStubs.h:
    (JITStackFrame):
    * jit/JSInterfaceJIT.h:
    (JSInterfaceJIT):
    
    Source/WTF: 
    
    Enabling DFG JIT on ARM systems with 32 bit instruction set.
    
    * wtf/InlineASM.h:
    * wtf/Platform.h:
    
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121885 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    d6e661f4