Changeset 35593 in webkit for trunk/JavaScriptCore/kjs/nodes.cpp
- Timestamp:
- Aug 6, 2008, 3:37:34 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/nodes.cpp
r35584 r35593 227 227 if (dst == ignoredResult()) 228 228 return 0; 229 return generator.emitLoad( generator.finalDestination(dst), jsNull());229 return generator.emitLoad(dst, jsNull()); 230 230 } 231 231 … … 236 236 if (dst == ignoredResult()) 237 237 return 0; 238 return generator.emitLoad( generator.finalDestination(dst), m_value);238 return generator.emitLoad(dst, m_value); 239 239 } 240 240 … … 245 245 if (dst == ignoredResult()) 246 246 return 0; 247 return generator.emitLoad( generator.finalDestination(dst), m_double);247 return generator.emitLoad(dst, m_double); 248 248 } 249 249 … … 256 256 257 257 // We atomize constant strings, in case they're later used in property lookup. 258 return generator.emitLoad( generator.finalDestination(dst), jsOwnedString(generator.globalExec(), Identifier(generator.globalExec(), m_value).ustring()));258 return generator.emitLoad(dst, jsOwnedString(generator.globalExec(), Identifier(generator.globalExec(), m_value).ustring())); 259 259 } 260 260 … … 324 324 325 325 if (m_elision) { 326 RegisterID* value = generator.emitLoad( generator.newTemporary(), jsNumber(generator.globalExec(), m_elision + length));326 RegisterID* value = generator.emitLoad(0, jsNumber(generator.globalExec(), m_elision + length)); 327 327 generator.emitPutById(array.get(), generator.propertyNames().length, value); 328 328 } … … 576 576 { 577 577 if (generator.registerForLocal(m_ident)) 578 return generator.emit Load(generator.finalDestination(dst), false);578 return generator.emitUnexpectedLoad(generator.finalDestination(dst), false); 579 579 580 580 generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset); … … 611 611 612 612 // delete on a non-location expression ignores the value and returns true 613 return generator.emit Load(generator.finalDestination(dst), true);613 return generator.emitUnexpectedLoad(generator.finalDestination(dst), true); 614 614 } 615 615 … … 623 623 } 624 624 RefPtr<RegisterID> r0 = generator.emitNode(m_expr.get()); 625 return generator.emitLoad( generator.finalDestination(dst, r0.get()), jsUndefined());625 return generator.emitLoad(dst, jsUndefined()); 626 626 } 627 627 … … 1016 1016 // assign to the wrong base if m_ident exists in an intervening dynamic scope. 1017 1017 RefPtr<RegisterID> base = generator.emitResolveBase(generator.newTemporary(), m_ident); 1018 RegisterID* value = m_init ? generator.emitNode(m_init.get()) : generator.emitLoad( generator.newTemporary(), jsUndefined());1018 RegisterID* value = m_init ? generator.emitNode(m_init.get()) : generator.emitLoad(0, jsUndefined()); 1019 1019 return generator.emitPutById(base.get(), m_ident, value); 1020 1020 } … … 1374 1374 return emitThrowError(generator, SyntaxError, "Invalid return statement."); 1375 1375 1376 RegisterID* r0 = m_value ? generator.emitNode(dst, m_value.get()) : generator.emitLoad( generator.finalDestination(dst), jsUndefined());1376 RegisterID* r0 = m_value ? generator.emitNode(dst, m_value.get()) : generator.emitLoad(dst, jsUndefined()); 1377 1377 if (generator.scopeDepth()) { 1378 1378 RefPtr<LabelID> l0 = generator.newLabel(); … … 1641 1641 // ------------------------------ ScopeNode ----------------------------- 1642 1642 1643 ScopeNode::ScopeNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, bool usesEval, bool needsClosure )1643 ScopeNode::ScopeNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, bool usesEval, bool needsClosure, int numConstants) 1644 1644 : BlockNode(globalData, children) 1645 1645 , m_sourceURL(globalData->parser->sourceURL()) … … 1647 1647 , m_usesEval(usesEval) 1648 1648 , m_needsClosure(needsClosure) 1649 , m_numConstants(numConstants) 1649 1650 { 1650 1651 if (varStack) … … 1658 1659 // ------------------------------ ProgramNode ----------------------------- 1659 1660 1660 ProgramNode::ProgramNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider* sourceProvider, bool usesEval, bool needsClosure )1661 : ScopeNode(globalData, children, varStack, funcStack, usesEval, needsClosure )1661 ProgramNode::ProgramNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider* sourceProvider, bool usesEval, bool needsClosure, int numConstants) 1662 : ScopeNode(globalData, children, varStack, funcStack, usesEval, needsClosure, numConstants) 1662 1663 , m_sourceProvider(sourceProvider) 1663 1664 { 1664 1665 } 1665 1666 1666 ProgramNode* ProgramNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider* sourceProvider, bool usesEval, bool needsClosure )1667 { 1668 return new ProgramNode(globalData, children, varStack, funcStack, sourceProvider, usesEval, needsClosure );1667 ProgramNode* ProgramNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider* sourceProvider, bool usesEval, bool needsClosure, int numConstants) 1668 { 1669 return new ProgramNode(globalData, children, varStack, funcStack, sourceProvider, usesEval, needsClosure, numConstants); 1669 1670 } 1670 1671 1671 1672 // ------------------------------ EvalNode ----------------------------- 1672 1673 1673 EvalNode::EvalNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider* sourceProvider, bool usesEval, bool needsClosure )1674 : ScopeNode(globalData, children, varStack, funcStack, usesEval, needsClosure )1674 EvalNode::EvalNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider* sourceProvider, bool usesEval, bool needsClosure, int numConstants) 1675 : ScopeNode(globalData, children, varStack, funcStack, usesEval, needsClosure, numConstants) 1675 1676 , m_sourceProvider(sourceProvider) 1676 1677 { … … 1703 1704 } 1704 1705 1705 EvalNode* EvalNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider* sourceProvider, bool usesEval, bool needsClosure )1706 { 1707 return new EvalNode(globalData, children, varStack, funcStack, sourceProvider, usesEval, needsClosure );1706 EvalNode* EvalNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider* sourceProvider, bool usesEval, bool needsClosure, int numConstants) 1707 { 1708 return new EvalNode(globalData, children, varStack, funcStack, sourceProvider, usesEval, needsClosure, numConstants); 1708 1709 } 1709 1710 1710 1711 // ------------------------------ FunctionBodyNode ----------------------------- 1711 1712 1712 FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, bool usesEval, bool needsClosure )1713 : ScopeNode(globalData, children, varStack, funcStack, usesEval, needsClosure )1713 FunctionBodyNode::FunctionBodyNode(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, bool usesEval, bool needsClosure, int numConstants) 1714 : ScopeNode(globalData, children, varStack, funcStack, usesEval, needsClosure, numConstants) 1714 1715 { 1715 1716 } … … 1721 1722 } 1722 1723 1723 FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, bool usesEval, bool needsClosure )1724 { 1725 return new FunctionBodyNode(globalData, children, varStack, funcStack, usesEval, needsClosure );1726 } 1727 1728 FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider*, bool usesEval, bool needsClosure )1729 { 1730 return new FunctionBodyNode(globalData, children, varStack, funcStack, usesEval, needsClosure );1724 FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, bool usesEval, bool needsClosure, int numConstants) 1725 { 1726 return new FunctionBodyNode(globalData, children, varStack, funcStack, usesEval, needsClosure, numConstants); 1727 } 1728 1729 FunctionBodyNode* FunctionBodyNode::create(JSGlobalData* globalData, SourceElements* children, VarStack* varStack, FunctionStack* funcStack, SourceProvider*, bool usesEval, bool needsClosure, int numConstants) 1730 { 1731 return new FunctionBodyNode(globalData, children, varStack, funcStack, usesEval, needsClosure, numConstants); 1731 1732 } 1732 1733 … … 1748 1749 statementListEmitCode(m_children, generator); 1749 1750 if (!m_children.size() || !m_children.last()->isReturnNode()) { 1750 RegisterID* r0 = generator.emitLoad( generator.newTemporary(), jsUndefined());1751 RegisterID* r0 = generator.emitLoad(0, jsUndefined()); 1751 1752 generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine()); 1752 1753 generator.emitReturn(r0);
Note:
See TracChangeset
for help on using the changeset viewer.