Ignore:
Timestamp:
Sep 26, 2008, 3:40:26 PM (17 years ago)
Author:
[email protected]
Message:

2008-09-26 Geoffrey Garen <[email protected]>

Reviewed by Maciej Stachowiak.


Removed dynamic check for whether the callee needs an activation object.
Replaced with callee code to create the activation object.

0.5% speedup on SunSpider.
No change on v8 benchmark. (Might be a speedup, but it's in range of the
variance.)

0.7% speedup on v8 benchmark in bytecode.
1.3% speedup on empty call benchmark in bytecode.

  • VM/CTI.cpp: (JSC::CTI::privateCompileMainPass): Added support for op_init_activation, the new opcode that specifies that the callee's initialization should create an activation object. (JSC::CTI::privateCompile): Removed previous code that did a similar thing in an ad-hoc way.
  • VM/CodeBlock.cpp: (JSC::CodeBlock::dump): Added a case for dumping op_init_activation.
  • VM/CodeGenerator.cpp: (JSC::CodeGenerator::generate): Added fixup code to change op_init to op_init_activation if necessary. (With a better parser, we would know which to use from the beginning.)
  • VM/Instruction.h: (JSC::Instruction::Instruction): (WTF::): Faster traits for the instruction vector. An earlier version of this patch relied on inserting at the beginning of the vector, and depended on this change for speed.
  • VM/Machine.cpp: (JSC::Machine::execute): Removed clients of setScopeChain, the old abstraction for dynamically checking for whether an activation object needed to be created. (JSC::Machine::privateExecute): ditto

(JSC::Machine::cti_op_push_activation): Renamed this function from
cti_vm_updateScopeChain, and made it faster by removing the call to
setScopeChain.

  • VM/Machine.h:
  • VM/Opcode.h: Declared op_init_activation.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/VM/Instruction.h

    r36640 r36972  
    3131
    3232#include "Opcode.h"
     33#include <wtf/VectorTraits.h>
    3334
    3435namespace JSC {
     
    4243        Instruction(int operand)
    4344        {
    44             // We have to initialise one of the pointer members to ensure that
     45            // We have to initialize one of the pointer members to ensure that
    4546            // the entire struct is initialised in 64-bit.
    4647            u.jsCell = 0;
     
    6364} // namespace JSC
    6465
     66namespace WTF {
     67
     68    template<> struct VectorTraits<JSC::Instruction> : VectorTraitsBase<true, JSC::Instruction> { };
     69
     70} // namespace WTF
     71
    6572#endif // Instruction_h
Note: See TracChangeset for help on using the changeset viewer.