Changeset 159422 in webkit


Ignore:
Timestamp:
Nov 18, 2013 8:01:17 AM (10 years ago)
Author:
commit-queue@webkit.org
Message:

Remove architecture specific code in LowLevelInterpreter.
https://bugs.webkit.org/show_bug.cgi?id=124501

Patch by Julien Brianceau <jbriance@cisco.com> on 2013-11-18
Reviewed by Michael Saboff.

  • llint/LowLevelInterpreter.asm: Use generic path instead of sh4 specific code.
  • llint/LowLevelInterpreter32_64.asm: Merge sh4/mips path with arm path. The

"move t0, a0" is not needed for arm because t0 == a0 with this architecture.

  • offlineasm/sh4.rb: Handle move opcode with pr register.
Location:
trunk/Source/JavaScriptCore
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r159415 r159422  
     12013-11-18  Julien Brianceau  <jbriance@cisco.com>
     2
     3        Remove architecture specific code in LowLevelInterpreter.
     4        https://bugs.webkit.org/show_bug.cgi?id=124501
     5
     6        Reviewed by Michael Saboff.
     7
     8        * llint/LowLevelInterpreter.asm: Use generic path instead of sh4 specific code.
     9        * llint/LowLevelInterpreter32_64.asm: Merge sh4/mips path with arm path. The
     10        "move t0, a0" is not needed for arm because t0 == a0 with this architecture.
     11        * offlineasm/sh4.rb: Handle move opcode with pr register.
     12
    1132013-11-18  Julien Brianceau  <jbriance@cisco.com>
    214
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm

    r159395 r159422  
    208208
    209209macro preserveReturnAddressAfterCall(destinationRegister)
    210     if C_LOOP or ARM or ARMv7 or ARMv7_TRADITIONAL or ARM64 or MIPS
     210    if C_LOOP or ARM or ARMv7 or ARMv7_TRADITIONAL or ARM64 or MIPS or SH4
    211211        # In C_LOOP case, we're only preserving the bytecode vPC.
    212212        move lr, destinationRegister
    213     elsif SH4
    214         stspr destinationRegister
    215213    elsif X86 or X86_64
    216214        pop destinationRegister
     
    221219
    222220macro restoreReturnAddressBeforeReturn(sourceRegister)
    223     if C_LOOP or ARM or ARMv7 or ARMv7_TRADITIONAL or ARM64 or MIPS
     221    if C_LOOP or ARM or ARMv7 or ARMv7_TRADITIONAL or ARM64 or MIPS or SH4
    224222        # In C_LOOP case, we're only restoring the bytecode vPC.
    225223        move sourceRegister, lr
    226     elsif SH4
    227         ldspr sourceRegister
    228224    elsif X86 or X86_64
    229225        push sourceRegister
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm

    r159395 r159422  
    19111911        andp MarkedBlockMask, t3
    19121912        loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
    1913     elsif ARM or ARMv7 or ARMv7_TRADITIONAL
     1913    elsif ARM or ARMv7 or ARMv7_TRADITIONAL or MIPS or SH4
    19141914        loadp ScopeChain[cfr], t3
    19151915        andp MarkedBlockMask, t3
     
    19231923        loadp JSFunction::m_executable[t1], t1
    19241924        move t2, cfr
    1925         call executableOffsetToFunction[t1]
    1926         restoreReturnAddressBeforeReturn(t3)
    1927         loadp ScopeChain[cfr], t3
    1928         andp MarkedBlockMask, t3
    1929         loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
    1930     elsif MIPS or SH4
    1931         loadp ScopeChain[cfr], t3
    1932         andp MarkedBlockMask, t3
    1933         loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t3], t3
    1934         storep cfr, VM::topCallFrame[t3]
    1935         move t0, t2
    1936         preserveReturnAddressAfterCall(t3)
    1937         storep t3, ReturnPC[cfr]
    1938         move cfr, t0
    1939         loadi Callee + PayloadOffset[cfr], t1
    1940         loadp JSFunction::m_executable[t1], t1
    1941         move t2, cfr
    1942         move t0, a0
     1925        if MIPS or SH4
     1926            move t0, a0
     1927        end
    19431928        call executableOffsetToFunction[t1]
    19441929        restoreReturnAddressBeforeReturn(t3)
  • trunk/Source/JavaScriptCore/offlineasm/sh4.rb

    r159381 r159422  
    490490        if node.is_a? Instruction
    491491            case node.opcode
     492            when "move"
     493                if node.operands[0].is_a? RegisterID and node.operands[0].sh4Operand == "pr"
     494                    newList << Instruction.new(codeOrigin, "stspr", [node.operands[1]])
     495                elsif node.operands[1].is_a? RegisterID and node.operands[1].sh4Operand == "pr"
     496                    newList << Instruction.new(codeOrigin, "ldspr", [node.operands[0]])
     497                else
     498                    newList << node
     499                end
    492500            when "loadi", "loadis", "loadp"
    493501                if node.operands[1].is_a? RegisterID and node.operands[1].sh4Operand == "pr"
Note: See TracChangeset for help on using the changeset viewer.