Ignore:
Timestamp:
Jun 30, 2008, 10:45:21 PM (17 years ago)
Author:
[email protected]
Message:

2008-06-30 Geoffrey Garen <[email protected]>

Reviewed by Oliver Hunt.


Removed the "registerBase" abstraction. Since the register file never
reallocates, we can keep direct pointers into it, instead of
<registerBase, offset> tuples.


SunSpider says 0.8% faster.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/kjs/JSActivation.cpp

    r34838 r34906  
    3939const ClassInfo JSActivation::info = { "JSActivation", 0, 0, 0 };
    4040
    41 JSActivation::JSActivation(PassRefPtr<FunctionBodyNode> functionBody, Register** registerBase, int registerOffset)
    42     : Base(new JSActivationData(functionBody, registerBase, registerOffset))
     41JSActivation::JSActivation(PassRefPtr<FunctionBodyNode> functionBody, Register* registers)
     42    : Base(new JSActivationData(functionBody, registers))
    4343{
    4444}
     
    5555        return;
    5656
    57     copyRegisterArray(registers() - numLocals, numLocals);
     57    copyRegisterArray(d()->registers - numLocals, numLocals);
    5858}
    5959
     
    156156JSObject* JSActivation::createArgumentsObject(ExecState* exec)
    157157{
    158     Register* callFrame = registers() - d()->functionBody->generatedCode().numLocals - RegisterFile::CallFrameHeaderSize;
     158    Register* callFrame = d()->registers - d()->functionBody->generatedCode().numLocals - RegisterFile::CallFrameHeaderSize;
    159159
    160160    JSFunction* function;
    161161    Register* argv;
    162162    int argc;
    163     exec->machine()->getFunctionAndArguments(registerBase(), callFrame, function, argv, argc);
    164     ArgList args(reinterpret_cast<JSValue***>(registerBase()), argv - *registerBase(), argc);
     163    exec->machine()->getArgumentsData(callFrame, function, argv, argc);
     164
     165    ArgList args(reinterpret_cast<JSValue**>(argv), argc);
    165166    return new (exec) Arguments(exec, function, args, this);
    166167}
Note: See TracChangeset for help on using the changeset viewer.