Ignore:
Timestamp:
Oct 22, 2008, 2:06:30 PM (17 years ago)
Author:
[email protected]
Message:

2008-10-22 Cameron Zwarich <[email protected]>

Reviewed by Geoff Garen.

Bug 21803: Fuse op_jfalse with op_eq_null and op_neq_null
<https://bugs.webkit.org/show_bug.cgi?id=21803>

Fuse op_jfalse with op_eq_null and op_neq_null to make the new opcodes
op_jeq_null and op_jneq_null.

This is a 2.6% speedup on the V8 Raytrace benchmark, and strangely also
a 4.7% speedup on the V8 Arguments benchmark, even though it uses
neither of the two new opcodes.

  • VM/CTI.cpp: (JSC::CTI::privateCompileMainPass):
  • VM/CodeBlock.cpp: (JSC::CodeBlock::dump):
  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::emitJumpIfTrue): (JSC::CodeGenerator::emitJumpIfFalse):
  • VM/Machine.cpp: (JSC::Machine::privateExecute):
  • VM/Opcode.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/VM/CodeBlock.cpp

    r37730 r37789  
    738738            break;
    739739        }
     740        case op_jeq_null: {
     741            printConditionalJump(begin, it, location, "jeq_null");
     742            break;
     743        }
     744        case op_jneq_null: {
     745            printConditionalJump(begin, it, location, "jneq_null");
     746            break;
     747        }
    740748        case op_jnless: {
    741749            int r0 = (++it)->u.operand;
Note: See TracChangeset for help on using the changeset viewer.