Ignore:
Timestamp:
Sep 19, 2012, 2:43:10 PM (13 years ago)
Author:
[email protected]
Message:

DFG should not emit PutByVal hole case unless it has to
https://bugs.webkit.org/show_bug.cgi?id=97080

Reviewed by Geoffrey Garen.

This causes us to generate less code for typical PutByVal's. But if profiling tells us
that the hole case is being hit, we generate the same code as we would have generated
before. This seems like a slight speed-up across the board.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::store8):
(MacroAssemblerARMv7):

  • assembler/MacroAssemblerX86.h:

(MacroAssemblerX86):
(JSC::MacroAssemblerX86::store8):

  • assembler/MacroAssemblerX86_64.h:

(MacroAssemblerX86_64):
(JSC::MacroAssemblerX86_64::store8):

  • assembler/X86Assembler.h:

(X86Assembler):
(JSC::X86Assembler::movb_i8m):

  • bytecode/ArrayProfile.h:

(JSC::ArrayProfile::ArrayProfile):
(JSC::ArrayProfile::addressOfMayStoreToHole):
(JSC::ArrayProfile::mayStoreToHole):
(ArrayProfile):

  • dfg/DFGArrayMode.cpp:

(JSC::DFG::fromObserved):
(JSC::DFG::modeAlreadyChecked):
(JSC::DFG::modeToString):

  • dfg/DFGArrayMode.h:

(DFG):
(JSC::DFG::mayStoreToHole):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • jit/JIT.h:

(JIT):

  • jit/JITInlineMethods.h:

(JSC::JIT::emitArrayProfileStoreToHoleSpecialCase):
(JSC):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_put_by_val):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_by_val):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm

    r128790 r129045  
    12321232    loadConstantOrVariableCell(t0, t1, .opPutByValSlow)
    12331233    loadp JSCell::m_structure[t1], t2
    1234     loadp 32[PB, PC, 8], t0
    1235     arrayProfile(t2, t0, t3)
     1234    loadp 32[PB, PC, 8], t3
     1235    arrayProfile(t2, t3, t0)
    12361236    btiz t2, HasArrayStorage, .opPutByValSlow
    12371237    loadis 16[PB, PC, 8], t0
     
    12491249
    12501250.opPutByValEmpty:
     1251    storeb 1, ArrayProfile::m_mayStoreToHole[t3]
    12511252    addi 1, ArrayStorage::m_numValuesInVector[t0]
    12521253    bib t2, -sizeof IndexingHeader + IndexingHeader::m_publicLength[t0], .opPutByValStoreResult
Note: See TracChangeset for help on using the changeset viewer.