Changeset 35230 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp


Ignore:
Timestamp:
Jul 17, 2008, 4:53:39 PM (17 years ago)
Author:
[email protected]
Message:

2008-07-17 Geoffrey Garen <[email protected]>

Reviewed by John Sullivan and Oliver Hunt.


A tiny bit of tidying in function call register allocation.


This patch saves one register when invoking a function expression and/or
a new expression that is stored in a temporary.


Since it's just one register, I can't make a testcase for it.

  • VM/CodeGenerator.cpp: (KJS::CodeGenerator::emitCall): No need to ref the function we're calling or its base. We'd like the call frame to overlap with them, if possible. op_call will read the function and its base before writing the call frame, so this is safe.
  • kjs/nodes.cpp: (KJS::NewExprNode::emitCode): No need to ref the function we're new-ing, for the same reasons stated above.


(KJS::FunctionCallValueNode::emitCode): ditto

File:
1 edited

Legend:

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

    r35226 r35230  
    400400RegisterID* NewExprNode::emitCode(CodeGenerator& generator, RegisterID* dst)
    401401{
    402     RefPtr<RegisterID> r0 = generator.emitNode(m_expr.get());
    403     return generator.emitConstruct(generator.finalDestination(dst), r0.get(), m_args.get());
     402    RegisterID* r0 = generator.emitNode(m_expr.get());
     403    return generator.emitConstruct(generator.finalDestination(dst), r0, m_args.get());
    404404}
    405405
     
    414414RegisterID* FunctionCallValueNode::emitCode(CodeGenerator& generator, RegisterID* dst)
    415415{
    416     RefPtr<RegisterID> func = generator.emitNode(m_expr.get());
    417     return generator.emitCall(generator.finalDestination(dst), func.get(), 0, m_args.get());
     416    RegisterID* func = generator.emitNode(m_expr.get());
     417    return generator.emitCall(generator.finalDestination(dst), func, 0, m_args.get());
    418418}
    419419
Note: See TracChangeset for help on using the changeset viewer.