Changeset 32520 in webkit
- Timestamp:
- Apr 24, 2008 3:58:23 PM (16 years ago)
- Location:
- branches/squirrelfish/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/squirrelfish/JavaScriptCore/ChangeLog
r32501 r32520 1 2008-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 1 18 2008-04-24 Geoffrey Garen <ggaren@apple.com> 2 19 -
branches/squirrelfish/JavaScriptCore/kjs/nodes.cpp
r32494 r32520 4573 4573 } 4574 4574 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 } 4575 RegisterID* ConstDeclNode::emitCodeSingle(CodeGenerator& generator) 4576 { 4577 if (RegisterID* constReg = generator.registerForLocalConstInit(m_ident)) 4578 return generator.emitNode(constReg, m_init.get()); 4581 4579 4582 4580 // FIXME: While this code should only be hit in eval code, it will potentially 4583 4581 // assign to the wrong base if m_ident exists in an intervening dynamic scope. 4584 4582 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()); 4586 4584 return generator.emitPutPropId(constBase.get(), m_ident, exprResult); 4587 4585 } 4588 4586 4589 RegisterID* ConstDeclNode::emitCode(CodeGenerator& generator, RegisterID* dst)4587 RegisterID* ConstDeclNode::emitCode(CodeGenerator& generator, RegisterID*) 4590 4588 { 4591 4589 RegisterID* result = 0; 4592 4590 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); 4594 4592 4595 4593 return result; … … 4618 4616 } 4619 4617 4620 RegisterID* ConstStatementNode::emitCode(CodeGenerator& generator, RegisterID* dst)4621 { 4622 return generator.emitNode( dst,m_next.get());4618 RegisterID* ConstStatementNode::emitCode(CodeGenerator& generator, RegisterID*) 4619 { 4620 return generator.emitNode(m_next.get()); 4623 4621 } 4624 4622 … … 4749 4747 // ------------------------------ VarStatementNode ---------------------------- 4750 4748 4751 RegisterID* VarStatementNode::emitCode(CodeGenerator& generator, RegisterID* dst)4749 RegisterID* VarStatementNode::emitCode(CodeGenerator& generator, RegisterID*) 4752 4750 { 4753 4751 ASSERT(m_expr); 4754 return generator.emitNode( dst,m_expr.get());4752 return generator.emitNode(m_expr.get()); 4755 4753 } 4756 4754 -
branches/squirrelfish/JavaScriptCore/kjs/nodes.h
r32445 r32520 2562 2562 2563 2563 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; 2565 2565 private: 2566 2566 void handleSlowCase(OldInterpreterExecState*, const ScopeChain&, JSValue*) KJS_FAST_CALL NEVER_INLINE;
Note: See TracChangeset
for help on using the changeset viewer.