Ignore:
Timestamp:
Apr 22, 2010, 6:24:56 AM (15 years ago)
Author:
[email protected]
Message:

2010-04-22 Gabor Loki <[email protected]>

Reviewed by Gavin Barraclough.

Use BLX and BX to keep happy the return stack predictor above ARMv4
https://bugs.webkit.org/show_bug.cgi?id=37862

Inspired by Jacob Bramley's patch from JaegerMonkey

  • assembler/ARMAssembler.cpp: (JSC::ARMAssembler::executableCopy):
  • assembler/ARMAssembler.h: (JSC::ARMAssembler::): (JSC::ARMAssembler::bx): (JSC::ARMAssembler::blx): (JSC::ARMAssembler::loadBranchTarget): (JSC::ARMAssembler::jmp): (JSC::ARMAssembler::getLdrImmAddress):
  • assembler/MacroAssemblerARM.h: (JSC::MacroAssemblerARM::jump): (JSC::MacroAssemblerARM::nearCall): (JSC::MacroAssemblerARM::call): (JSC::MacroAssemblerARM::ret): (JSC::MacroAssemblerARM::prepareCall): (JSC::MacroAssemblerARM::call32):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/assembler/ARMAssembler.cpp

    r55718 r58091  
    358358        ARMWord* ldrAddr = reinterpret_cast<ARMWord*>(data + pos);
    359359        ARMWord* addr = getLdrImmAddress(ldrAddr);
    360         if (*addr != 0xffffffff) {
     360        if (*addr != InvalidBranchTarget) {
    361361            if (!(*iter & 1)) {
    362362                int diff = reinterpret_cast<ARMWord*>(data + *addr) - (ldrAddr + DefaultPrefetching);
Note: See TracChangeset for help on using the changeset viewer.