Changeset 129713 in webkit for trunk/Source/JavaScriptCore/llint


Ignore:
Timestamp:
Sep 26, 2012, 5:04:48 PM (13 years ago)
Author:
[email protected]
Message:

jneq_ptr shouldn't have a pointer
https://bugs.webkit.org/show_bug.cgi?id=97739

Reviewed by Oliver Hunt.

Slamming pointers directly into bytecode is sometimes cool, but in this case it's
unwieldy and confusing. Switched the instruction to use an enum instead. This has
zero effect on code gen behavior in the JITs. In the LLInt, there is now more
indirection, but that doesn't affect benchmarks.

  • CMakeLists.txt:
  • GNUmakefile.list.am:
  • JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Target.pri:
  • bytecode/Instruction.h:

(JSC::Instruction::Instruction):
(Instruction):

  • bytecode/SpecialPointer.cpp: Added.

(JSC):
(JSC::actualPointerFor):

  • bytecode/SpecialPointer.h: Added.

(JSC):
(JSC::pointerIsFunction):
(JSC::pointerIsCell):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitJumpIfNotFunctionCall):
(JSC::BytecodeGenerator::emitJumpIfNotFunctionApply):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_jneq_ptr):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_jneq_ptr):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::reset):
(JSC):

  • runtime/JSGlobalObject.h:

(JSGlobalObject):
(JSC::JSGlobalObject::actualPointerFor):

Location:
trunk/Source/JavaScriptCore/llint
Files:
2 edited

Legend:

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

    r129428 r129713  
    14861486    loadi 4[PC], t0
    14871487    loadi 8[PC], t1
     1488    loadp CodeBLock[cfr], t2
     1489    loadp CodeBlock::m_globalObject[t2], t2
    14881490    bineq TagOffset[cfr, t0, 8], CellTag, .opJneqPtrBranch
     1491    loadp JSGlobalObject::m_specialPointers[t2, t1, 8], t1
    14891492    bpeq PayloadOffset[cfr, t0, 8], t1, .opJneqPtrFallThrough
    14901493.opJneqPtrBranch:
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm

    r129428 r129713  
    13291329    traceExecution()
    13301330    loadis 8[PB, PC, 8], t0
    1331     loadp 16[PB, PC, 8], t1
     1331    loadi 16[PB, PC, 8], t1
     1332    loadp CodeBlock[cfr], t2
     1333    loadp CodeBlock::m_globalObject[t2], t2
     1334    loadp JSGlobalObject::m_specialPointers[t2, t1, 8], t1
    13321335    bpneq t1, [cfr, t0, 8], .opJneqPtrTarget
    13331336    dispatch(4)
Note: See TracChangeset for help on using the changeset viewer.