Ignore:
Timestamp:
Feb 27, 2012, 10:26:23 AM (13 years ago)
Author:
[email protected]
Message:

Implement support for op_negate and op_bitnot in the DFG JIT
https://bugs.webkit.org/show_bug.cgi?id=79617

Reviewed by Sam Weinig.

Remove op_bitnop - this is redundant, ~x === x-1.
This is a fractional (<1%) progression.

Remove not32(X) from the MacroAssemblers - make this an optimization to add32(-1, X).
Remove CanReuse from the result type - this was unused.
Remove op_bitnot.

  • assembler/MacroAssemblerARM.h:

(MacroAssemblerARM):
(JSC::MacroAssemblerARM::xor32):

  • assembler/MacroAssemblerARMv7.h:

(MacroAssemblerARMv7):
(JSC::MacroAssemblerARMv7::xor32):

  • assembler/MacroAssemblerMIPS.h:

(MacroAssemblerMIPS):
(JSC::MacroAssemblerMIPS::xor32):

  • assembler/MacroAssemblerSH4.h:

(MacroAssemblerSH4):
(JSC::MacroAssemblerSH4::xor32):

  • assembler/MacroAssemblerX86Common.h:

(MacroAssemblerX86Common):
(JSC::MacroAssemblerX86Common::xor32):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dump):

  • bytecode/Opcode.h:

(JSC):
(JSC::padOpcodeName):

  • bytecompiler/NodesCodegen.cpp:

(JSC):
(JSC::BitwiseNotNode::emitBytecode):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::privateExecute):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JIT.h:

(JIT):

  • jit/JITArithmetic32_64.cpp:

(JSC):

  • jit/JITOpcodes.cpp:

(JSC):

  • jit/JITStubs.cpp:

(JSC):

  • jit/JITStubs.h:
  • llint/LLIntSlowPaths.cpp:

(LLInt):

  • llint/LLIntSlowPaths.h:

(LLInt):

  • llint/LowLevelInterpreter32_64.asm:
  • parser/NodeConstructors.h:

(JSC::NegateNode::NegateNode):
(JSC::BitwiseNotNode::BitwiseNotNode):
(JSC::MultNode::MultNode):
(JSC::DivNode::DivNode):
(JSC::ModNode::ModNode):
(JSC::SubNode::SubNode):
(JSC::UnsignedRightShiftNode::UnsignedRightShiftNode):

  • parser/Nodes.h:

(BitwiseNotNode):
(JSC::BitwiseNotNode::expr):
(JSC):

  • parser/ResultType.h:

(ResultType):
(JSC::ResultType::numberTypeIsInt32):
(JSC::ResultType::stringOrNumberType):
(JSC::ResultType::forAdd):
(JSC::ResultType::forBitOp):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h

    r108432 r109007  
    304304    }
    305305
    306     void not32(RegisterID srcDest)
    307     {
    308         m_assembler.mvn(srcDest, srcDest);
    309     }
    310 
    311306    void or32(RegisterID src, RegisterID dest)
    312307    {
     
    448443    void xor32(TrustedImm32 imm, RegisterID src, RegisterID dest)
    449444    {
     445        if (imm.m_value == -1) {
     446            m_assembler.mvn(dest, src);
     447            return;
     448        }
     449
    450450        ARMThumbImmediate armImm = ARMThumbImmediate::makeEncodedImm(imm.m_value);
    451451        if (armImm.isValid())
     
    464464    void xor32(TrustedImm32 imm, RegisterID dest)
    465465    {
    466         xor32(imm, dest, dest);
     466        if (imm.m_value == -1)
     467            m_assembler.mvn(dest, dest);
     468        else
     469            xor32(imm, dest, dest);
    467470    }
    468471   
Note: See TracChangeset for help on using the changeset viewer.