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):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp

    r129440 r129713  
    11301130    emitOpcode(op_jneq_ptr);
    11311131    instructions().append(cond->index());
    1132     instructions().append(Instruction(*m_globalData, m_codeBlock->ownerExecutable(), m_scope->globalObject()->callFunction()));
     1132    instructions().append(Special::CallFunction);
    11331133    instructions().append(target->bind(begin, instructions().size()));
    11341134    return target;
     
    11411141    emitOpcode(op_jneq_ptr);
    11421142    instructions().append(cond->index());
    1143     instructions().append(Instruction(*m_globalData, m_codeBlock->ownerExecutable(), m_scope->globalObject()->applyFunction()));
     1143    instructions().append(Special::ApplyFunction);
    11441144    instructions().append(target->bind(begin, instructions().size()));
    11451145    return target;
Note: See TracChangeset for help on using the changeset viewer.