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/bytecode/Instruction.h

    r129453 r129713  
    3434#include "Opcode.h"
    3535#include "PropertySlot.h"
     36#include "SpecialPointer.h"
    3637#include "Structure.h"
    3738#include "StructureChain.h"
     
    196197        Instruction(WriteBarrier<Unknown>* registerPointer) { u.registerPointer = registerPointer; }
    197198       
     199        Instruction(Special::Pointer pointer) { u.specialPointer = pointer; }
     200       
    198201        Instruction(bool* predicatePointer) { u.predicatePointer = predicatePointer; }
    199202
     
    205208            WriteBarrierBase<JSCell> jsCell;
    206209            WriteBarrier<Unknown>* registerPointer;
     210            Special::Pointer specialPointer;
    207211            PropertySlot::GetValueFunc getterFunc;
    208212            LLIntCallLinkInfo* callLinkInfo;
Note: See TracChangeset for help on using the changeset viewer.