Changeset 32520 in webkit


Ignore:
Timestamp:
Apr 24, 2008 3:58:23 PM (16 years ago)
Author:
oliver@apple.com
Message:

Cameron Zwarich <cwzwarich@uwaterloo.ca>

Reviewed by Oliver.

Bug 18717: SQUIRRELFISH: eval returns the wrong value for a variable declaration statement
<https://bugs.webkit.org/show_bug.cgi?id=18717>

Fixes a regression test, but exposes the failure of another due to the
lack of getters and setters.

Location:
branches/squirrelfish/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/squirrelfish/JavaScriptCore/ChangeLog

    r32501 r32520  
     12008-04-24  Cameron Zwarich  <cwzwarich@uwaterloo.ca>
     2
     3        Reviewed by Oliver.
     4
     5        Bug 18717: SQUIRRELFISH: eval returns the wrong value for a variable declaration statement
     6        <https://bugs.webkit.org/show_bug.cgi?id=18717>
     7
     8        Fixes a regression test, but exposes the failure of another due to the
     9        lack of getters and setters.
     10
     11        * kjs/nodes.cpp:
     12        (KJS::ConstDeclNode::emitCodeSingle):
     13        (KJS::ConstDeclNode::emitCode):
     14        (KJS::ConstStatementNode::emitCode):
     15        (KJS::VarStatementNode::emitCode):
     16        * kjs/nodes.h:
     17
    1182008-04-24  Geoffrey Garen  <ggaren@apple.com>
    219
  • branches/squirrelfish/JavaScriptCore/kjs/nodes.cpp

    r32494 r32520  
    45734573}
    45744574
    4575 RegisterID* ConstDeclNode::emitCodeSingle(CodeGenerator& generator, RegisterID* dst)
    4576 {
    4577     if (RegisterID* constReg = generator.registerForLocalConstInit(m_ident)) {
    4578         RegisterID* exprResult = generator.emitNode(constReg, m_init.get());
    4579         return generator.moveToDestinationIfNeeded(dst, exprResult);
    4580     }
     4575RegisterID* ConstDeclNode::emitCodeSingle(CodeGenerator& generator)
     4576{
     4577    if (RegisterID* constReg = generator.registerForLocalConstInit(m_ident))
     4578        return generator.emitNode(constReg, m_init.get());
    45814579
    45824580    // FIXME: While this code should only be hit in eval code, it will potentially
    45834581    // assign to the wrong base if m_ident exists in an intervening dynamic scope.
    45844582    RefPtr<RegisterID> constBase = generator.emitResolveBase(generator.newTemporary(), m_ident);
    4585     RegisterID* exprResult = generator.emitNode(dst, m_init.get());
     4583    RegisterID* exprResult = generator.emitNode(m_init.get());
    45864584    return generator.emitPutPropId(constBase.get(), m_ident, exprResult);
    45874585}
    45884586
    4589 RegisterID* ConstDeclNode::emitCode(CodeGenerator& generator, RegisterID* dst)
     4587RegisterID* ConstDeclNode::emitCode(CodeGenerator& generator, RegisterID*)
    45904588{
    45914589    RegisterID* result = 0;
    45924590    for (ConstDeclNode* n = this; n; n = n->m_next.get())
    4593         result = n->emitCodeSingle(generator, n->m_next ? 0 : dst);
     4591        result = n->emitCodeSingle(generator);
    45944592
    45954593    return result;
     
    46184616}
    46194617
    4620 RegisterID* ConstStatementNode::emitCode(CodeGenerator& generator, RegisterID* dst)
    4621 {
    4622     return generator.emitNode(dst, m_next.get());
     4618RegisterID* ConstStatementNode::emitCode(CodeGenerator& generator, RegisterID*)
     4619{
     4620    return generator.emitNode(m_next.get());
    46234621}
    46244622
     
    47494747// ------------------------------ VarStatementNode ----------------------------
    47504748
    4751 RegisterID* VarStatementNode::emitCode(CodeGenerator& generator, RegisterID* dst)
     4749RegisterID* VarStatementNode::emitCode(CodeGenerator& generator, RegisterID*)
    47524750{
    47534751    ASSERT(m_expr);
    4754     return generator.emitNode(dst, m_expr.get());
     4752    return generator.emitNode(m_expr.get());
    47554753}
    47564754
  • branches/squirrelfish/JavaScriptCore/kjs/nodes.h

    r32445 r32520  
    25622562       
    25632563        virtual RegisterID* emitCode(CodeGenerator&, RegisterID* = 0) KJS_FAST_CALL;
    2564         virtual RegisterID* emitCodeSingle(CodeGenerator&, RegisterID*) KJS_FAST_CALL;
     2564        virtual RegisterID* emitCodeSingle(CodeGenerator&) KJS_FAST_CALL;
    25652565    private:
    25662566        void handleSlowCase(OldInterpreterExecState*, const ScopeChain&, JSValue*) KJS_FAST_CALL NEVER_INLINE;
Note: See TracChangeset for help on using the changeset viewer.