Ignore:
Timestamp:
Nov 9, 2008, 5:28:10 PM (17 years ago)
Author:
Darin Adler
Message:

2008-11-09 Darin Adler <Darin Adler>

Reviewed by Tim Hatcher.

  • VM/CodeBlock.h: Added include.
  • VM/Machine.cpp: (JSC::Machine::execute): Use the types from
DeclarationStacks as DeclarationStacks
rather than Node:: since "Node" really has little to do with it.
  • bytecompiler/CodeGenerator.cpp: (JSC::CodeGenerator::CodeGenerator): Ditto.
  • jsc.cpp: (Options::Options): Removed prettyPrint option. (runWithScripts): Ditto. (printUsageStatement): Ditto. (parseArguments): Ditto. (jscmain): Ditto.
  • parser/Grammar.y: Removed use of obsolete ImmediateNumberNode.
  • parser/Nodes.cpp: (JSC::ThrowableExpressionData::emitThrowError): Use inline functions instead of direct member access for ThrowableExpressionData values. (JSC::BracketAccessorNode::emitCode): Ditto. (JSC::DotAccessorNode::emitCode): Ditto. (JSC::NewExprNode::emitCode): Ditto. (JSC::EvalFunctionCallNode::emitCode): Ditto. (JSC::FunctionCallValueNode::emitCode): Ditto. (JSC::FunctionCallResolveNode::emitCode): Ditto. (JSC::FunctionCallBracketNode::emitCode): Ditto. (JSC::FunctionCallDotNode::emitCode): Ditto. (JSC::PostfixResolveNode::emitCode): Ditto. (JSC::PostfixBracketNode::emitCode): Ditto. (JSC::PostfixDotNode::emitCode): Ditto. (JSC::DeleteResolveNode::emitCode): Ditto. (JSC::DeleteBracketNode::emitCode): Ditto. (JSC::DeleteDotNode::emitCode): Ditto. (JSC::PrefixResolveNode::emitCode): Ditto. (JSC::PrefixBracketNode::emitCode): Ditto. (JSC::PrefixDotNode::emitCode): Ditto. (JSC::ThrowableBinaryOpNode::emitCode): Ditto. (JSC::InstanceOfNode::emitCode): Ditto. (JSC::ReadModifyResolveNode::emitCode): Ditto. (JSC::AssignResolveNode::emitCode): Ditto. (JSC::AssignDotNode::emitCode): Ditto. (JSC::ReadModifyDotNode::emitCode): Ditto. (JSC::AssignBracketNode::emitCode): Ditto. (JSC::ReadModifyBracketNode::emitCode): Ditto. (JSC::statementListEmitCode): Take a const StatementVector instead of a non-const one. Also removed unused statementListPushFIFO. (JSC::ForInNode::emitCode): Inline functions instead of member access. (JSC::ThrowNode::emitCode): Ditto. (JSC::EvalNode::emitCode): Ditto. (JSC::FunctionBodyNode::emitCode): Ditto. (JSC::ProgramNode::emitCode): Ditto.
  • parser/Nodes.h: Removed unused includes and forward declarations. Removed Precedence enum. Made many more members private instead of protected or public. Removed unused NodeStack typedef. Moved the VarStack and FunctionStack typedefs from Node to ScopeNode. Made Node::emitCode pure virtual and changed classes that don't emit any code to inherit from ParserRefCounted rather than Node. Moved isReturnNode from Node to StatementNode. Removed the streamTo, precedence, and needsParensIfLeftmost functions from all classes. Removed the ImmediateNumberNode class and make NumberNode::setValue nonvirtual.
  • parser/nodes2string.cpp: Removed.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/parser/Nodes.cpp

    r38247 r38249  
    233233RegisterID* ThrowableExpressionData::emitThrowError(CodeGenerator& generator, ErrorType e, const char* msg)
    234234{
    235     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     235    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    236236    RegisterID* exception = generator.emitNewError(generator.newTemporary(), e, jsString(generator.globalData(), msg));
    237237    generator.emitThrow(exception);
     
    243243    UString message = msg;
    244244    substitute(message, label.ustring());
    245     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     245    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    246246    RegisterID* exception = generator.emitNewError(generator.newTemporary(), e, jsString(generator.globalData(), message));
    247247    generator.emitThrow(exception);
     
    499499    RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_subscriptHasAssignments, m_subscript->isPure(generator));
    500500    RegisterID* property = generator.emitNode(m_subscript.get());
    501     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     501    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    502502    return generator.emitGetByVal(generator.finalDestination(dst), base.get(), property);
    503503}
     
    518518{
    519519    RegisterID* base = generator.emitNode(m_base.get());
    520     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     520    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    521521    return generator.emitGetById(generator.finalDestination(dst), base, m_ident);
    522522}
     
    569569{
    570570    RefPtr<RegisterID> func = generator.emitNode(m_expr.get());
    571     return generator.emitConstruct(generator.finalDestination(dst), func.get(), m_args.get(), m_divot, m_startOffset, m_endOffset);
     571    return generator.emitConstruct(generator.finalDestination(dst), func.get(), m_args.get(), divot(), startOffset(), endOffset());
    572572}
    573573
     
    589589    RefPtr<RegisterID> func = generator.newTemporary();
    590590    generator.emitResolveWithBase(base.get(), func.get(), generator.propertyNames().eval);
    591     return generator.emitCallEval(generator.finalDestination(dst, base.get()), func.get(), base.get(), m_args.get(), m_divot, m_startOffset, m_endOffset);
     591    return generator.emitCallEval(generator.finalDestination(dst, base.get()), func.get(), base.get(), m_args.get(), divot(), startOffset(), endOffset());
    592592}
    593593
     
    608608{
    609609    RefPtr<RegisterID> func = generator.emitNode(m_expr.get());
    610     return generator.emitCall(generator.finalDestination(dst), func.get(), 0, m_args.get(), m_divot, m_startOffset, m_endOffset);
     610    return generator.emitCall(generator.finalDestination(dst), func.get(), 0, m_args.get(), divot(), startOffset(), endOffset());
    611611}
    612612
     
    626626{
    627627    if (RefPtr<RegisterID> local = generator.registerFor(m_ident))
    628         return generator.emitCall(generator.finalDestination(dst), local.get(), 0, m_args.get(), m_divot, m_startOffset, m_endOffset);
     628        return generator.emitCall(generator.finalDestination(dst), local.get(), 0, m_args.get(), divot(), startOffset(), endOffset());
    629629
    630630    int index = 0;
     
    633633    if (generator.findScopedProperty(m_ident, index, depth, false, globalObject) && index != missingSymbolMarker()) {
    634634        RefPtr<RegisterID> func = generator.emitGetScopedVar(generator.newTemporary(), depth, index, globalObject);
    635         return generator.emitCall(generator.finalDestination(dst), func.get(), 0, m_args.get(), m_divot, m_startOffset, m_endOffset);
     635        return generator.emitCall(generator.finalDestination(dst), func.get(), 0, m_args.get(), divot(), startOffset(), endOffset());
    636636    }
    637637
    638638    RefPtr<RegisterID> base = generator.tempDestination(dst);
    639639    RefPtr<RegisterID> func = generator.newTemporary();
    640     int identifierStart = m_divot - m_startOffset;
     640    int identifierStart = divot() - startOffset();
    641641    generator.emitExpressionInfo(identifierStart + m_ident.size(), m_ident.size(), 0);
    642642    generator.emitResolveFunction(base.get(), func.get(), m_ident);
    643     return generator.emitCall(generator.finalDestination(dst, base.get()), func.get(), base.get(), m_args.get(), m_divot, m_startOffset, m_endOffset);
     643    return generator.emitCall(generator.finalDestination(dst, base.get()), func.get(), base.get(), m_args.get(), divot(), startOffset(), endOffset());
    644644}
    645645
     
    662662    RefPtr<RegisterID> base = generator.emitNode(m_base.get());
    663663    RegisterID* property = generator.emitNode(m_subscript.get());
    664     generator.emitExpressionInfo(m_divot - m_subexpressionDivotOffset, m_startOffset - m_subexpressionDivotOffset, m_subexpressionEndOffset);
     664    generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
    665665    RefPtr<RegisterID> function = generator.emitGetByVal(generator.newTemporary(), base.get(), property);
    666     return generator.emitCall(generator.finalDestination(dst, base.get()), function.get(), base.get(), m_args.get(), m_divot, m_startOffset, m_endOffset);
     666    return generator.emitCall(generator.finalDestination(dst, base.get()), function.get(), base.get(), m_args.get(), divot(), startOffset(), endOffset());
    667667}
    668668
     
    683683{
    684684    RefPtr<RegisterID> base = generator.emitNode(m_base.get());
    685     generator.emitExpressionInfo(m_divot - m_subexpressionDivotOffset, m_startOffset - m_subexpressionDivotOffset, m_subexpressionEndOffset);
     685    generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
    686686    RefPtr<RegisterID> function = generator.emitGetById(generator.newTemporary(), base.get(), m_ident);
    687     return generator.emitCall(generator.finalDestination(dst, base.get()), function.get(), base.get(), m_args.get(), m_divot, m_startOffset, m_endOffset);
     687    return generator.emitCall(generator.finalDestination(dst, base.get()), function.get(), base.get(), m_args.get(), divot(), startOffset(), endOffset());
    688688}
    689689
     
    730730    }
    731731
    732     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     732    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    733733    RefPtr<RegisterID> value = generator.newTemporary();
    734734    RefPtr<RegisterID> base = generator.emitResolveWithBase(generator.newTemporary(), value.get(), m_ident);
     
    762762    RefPtr<RegisterID> property = generator.emitNode(m_subscript.get());
    763763
    764     generator.emitExpressionInfo(m_divot - m_subexpressionDivotOffset, m_startOffset - m_subexpressionDivotOffset, m_subexpressionEndOffset);
     764    generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
    765765    RefPtr<RegisterID> value = generator.emitGetByVal(generator.newTemporary(), base.get(), property.get());
    766766    RegisterID* oldValue;
     
    774774        oldValue = (m_operator == OpPlusPlus) ? generator.emitPostInc(generator.finalDestination(dst), value.get()) : generator.emitPostDec(generator.finalDestination(dst), value.get());
    775775    }
    776     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     776    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    777777    generator.emitPutByVal(base.get(), property.get(), value.get());
    778778    return oldValue;
     
    795795    RefPtr<RegisterID> base = generator.emitNode(m_base.get());
    796796
    797     generator.emitExpressionInfo(m_divot - m_subexpressionDivotOffset, m_startOffset - m_subexpressionDivotOffset, m_subexpressionEndOffset);
     797    generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
    798798    RefPtr<RegisterID> value = generator.emitGetById(generator.newTemporary(), base.get(), m_ident);
    799799    RegisterID* oldValue;
     
    807807        oldValue = (m_operator == OpPlusPlus) ? generator.emitPostInc(generator.finalDestination(dst), value.get()) : generator.emitPostDec(generator.finalDestination(dst), value.get());
    808808    }
    809     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     809    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    810810    generator.emitPutById(base.get(), m_ident, value.get());
    811811    return oldValue;
     
    836836        return generator.emitUnexpectedLoad(generator.finalDestination(dst), false);
    837837
    838     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     838    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    839839    RegisterID* base = generator.emitResolveBase(generator.tempDestination(dst), m_ident);
    840840    return generator.emitDeleteById(generator.finalDestination(dst, base), base, m_ident);
     
    859859    RegisterID* r1 = generator.emitNode(m_subscript.get());
    860860
    861     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     861    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    862862    return generator.emitDeleteByVal(generator.finalDestination(dst), r0.get(), r1);
    863863}
     
    879879    RegisterID* r0 = generator.emitNode(m_base.get());
    880880
    881     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     881    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    882882    return generator.emitDeleteById(generator.finalDestination(dst), r0, m_ident);
    883883}
     
    990990    }
    991991
    992     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     992    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    993993    RefPtr<RegisterID> propDst = generator.tempDestination(dst);
    994994    RefPtr<RegisterID> base = generator.emitResolveWithBase(generator.newTemporary(), propDst.get(), m_ident);
     
    10171017    RefPtr<RegisterID> propDst = generator.tempDestination(dst);
    10181018
    1019     generator.emitExpressionInfo(m_divot + m_subexpressionDivotOffset, m_subexpressionStartOffset, m_endOffset - m_subexpressionDivotOffset);
     1019    generator.emitExpressionInfo(divot() + m_subexpressionDivotOffset, m_subexpressionStartOffset, endOffset() - m_subexpressionDivotOffset);
    10201020    RegisterID* value = generator.emitGetByVal(propDst.get(), base.get(), property.get());
    10211021    if (m_operator == OpPlusPlus)
     
    10231023    else
    10241024        generator.emitPreDec(value);
    1025     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1025    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    10261026    generator.emitPutByVal(base.get(), property.get(), value);
    10271027    return generator.moveToDestinationIfNeeded(dst, propDst.get());
     
    10451045    RefPtr<RegisterID> propDst = generator.tempDestination(dst);
    10461046
    1047     generator.emitExpressionInfo(m_divot + m_subexpressionDivotOffset, m_subexpressionStartOffset, m_endOffset - m_subexpressionDivotOffset);
     1047    generator.emitExpressionInfo(divot() + m_subexpressionDivotOffset, m_subexpressionStartOffset, endOffset() - m_subexpressionDivotOffset);
    10481048    RegisterID* value = generator.emitGetById(propDst.get(), base.get(), m_ident);
    10491049    if (m_operator == OpPlusPlus)
     
    10511051    else
    10521052        generator.emitPreDec(value);
    1053     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1053    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    10541054    generator.emitPutById(base.get(), m_ident, value);
    10551055    return generator.moveToDestinationIfNeeded(dst, propDst.get());
     
    11491149    RefPtr<RegisterID> src1 = generator.emitNodeForLeftHandSide(m_expr1.get(), m_rightHasAssignments, m_expr2->isPure(generator));
    11501150    RegisterID* src2 = generator.emitNode(m_expr2.get());
    1151     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1151    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    11521152    return generator.emitBinaryOp(opcode(), generator.finalDestination(dst, src1.get()), src1.get(), src2, OperandTypes(m_expr1->resultDescriptor(), m_expr2->resultDescriptor()));
    11531153}
     
    11581158    RefPtr<RegisterID> src2 = generator.emitNode(m_expr2.get());
    11591159
    1160     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1160    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    11611161    RegisterID* src2Prototype = generator.emitGetById(generator.newTemporary(), src2.get(), generator.globalData()->propertyNames->prototype);
    11621162
    1163     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1163    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    11641164    return generator.emitInstanceOf(generator.finalDestination(dst, src1.get()), src1.get(), src2.get(), src2Prototype);
    11651165}
     
    13201320
    13211321    RefPtr<RegisterID> src1 = generator.tempDestination(dst);
    1322     generator.emitExpressionInfo(m_divot - m_startOffset + m_ident.size(), m_ident.size(), 0);
     1322    generator.emitExpressionInfo(divot() - startOffset() + m_ident.size(), m_ident.size(), 0);
    13231323    RefPtr<RegisterID> base = generator.emitResolveWithBase(generator.newTemporary(), src1.get(), m_ident);
    13241324    RegisterID* src2 = generator.emitNode(m_right.get());
    1325     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1325    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    13261326    RegisterID* result = emitReadModifyAssignment(generator, generator.finalDestination(dst, src1.get()), src1.get(), src2, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
    13271327    return generator.emitPutById(base.get(), m_ident, result);
     
    13651365        dst = 0;
    13661366    RegisterID* value = generator.emitNode(dst, m_right.get());
    1367     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1367    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    13681368    return generator.emitPutById(base.get(), m_ident, value);
    13691369}
     
    13871387    RefPtr<RegisterID> value = generator.destinationForAssignResult(dst);
    13881388    RegisterID* result = generator.emitNode(value.get(), m_right.get());
    1389     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1389    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    13901390    generator.emitPutById(base.get(), m_ident, result);
    13911391    return generator.moveToDestinationIfNeeded(dst, result);
     
    14091409    RefPtr<RegisterID> base = generator.emitNodeForLeftHandSide(m_base.get(), m_rightHasAssignments, m_right->isPure(generator));
    14101410
    1411     generator.emitExpressionInfo(m_divot - m_subexpressionDivotOffset, m_startOffset - m_subexpressionDivotOffset, m_subexpressionEndOffset);
     1411    generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
    14121412    RefPtr<RegisterID> value = generator.emitGetById(generator.tempDestination(dst), base.get(), m_ident);
    14131413    RegisterID* change = generator.emitNode(m_right.get());
    14141414    RegisterID* updatedValue = emitReadModifyAssignment(generator, generator.finalDestination(dst, value.get()), value.get(), change, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
    14151415
    1416     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1416    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    14171417    return generator.emitPutById(base.get(), m_ident, updatedValue);
    14181418}
     
    14571457    RegisterID* result = generator.emitNode(value.get(), m_right.get());
    14581458
    1459     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1459    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    14601460    generator.emitPutByVal(base.get(), property.get(), result);
    14611461    return generator.moveToDestinationIfNeeded(dst, result);
     
    14811481    RefPtr<RegisterID> property = generator.emitNodeForLeftHandSide(m_subscript.get(), m_rightHasAssignments, m_right->isPure(generator));
    14821482
    1483     generator.emitExpressionInfo(m_divot - m_subexpressionDivotOffset, m_startOffset - m_subexpressionDivotOffset, m_subexpressionEndOffset);
     1483    generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset);
    14841484    RefPtr<RegisterID> value = generator.emitGetByVal(generator.tempDestination(dst), base.get(), property.get());
    14851485    RegisterID* change = generator.emitNode(m_right.get());
    14861486    RegisterID* updatedValue = emitReadModifyAssignment(generator, generator.finalDestination(dst, value.get()), value.get(), change, m_operator, OperandTypes(ResultType::unknown(), m_right->resultDescriptor()));
    14871487
    1488     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1488    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    14891489    generator.emitPutByVal(base.get(), property.get(), updatedValue);
    14901490
     
    15751575// ------------------------------ Helper functions for handling Vectors of StatementNode -------------------------------
    15761576
    1577 static inline RegisterID* statementListEmitCode(StatementVector& statements, CodeGenerator& generator, RegisterID* dst)
    1578 {
    1579     StatementVector::iterator end = statements.end();
    1580     for (StatementVector::iterator it = statements.begin(); it != end; ++it) {
     1577static inline RegisterID* statementListEmitCode(const StatementVector& statements, CodeGenerator& generator, RegisterID* dst)
     1578{
     1579    StatementVector::const_iterator end = statements.end();
     1580    for (StatementVector::const_iterator it = statements.begin(); it != end; ++it) {
    15811581        StatementNode* n = it->get();
    15821582        if (!n->isLoop())
     
    15851585    }
    15861586    return 0;
    1587 }
    1588 
    1589 static inline void statementListPushFIFO(StatementVector& statements, DeclarationStacks::NodeStack& stack)
    1590 {
    1591     StatementVector::iterator it = statements.end();
    1592     StatementVector::iterator begin = statements.begin();
    1593     while (it != begin) {
    1594         --it;
    1595         stack.append((*it).get());
    1596     }
    15971587}
    15981588
     
    19301920            RegisterID* base = generator.emitResolveBase(generator.newTemporary(), ident);
    19311921
    1932             generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     1922            generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    19331923            generator.emitPutById(base, ident, propertyName);
    19341924        }
     
    22932283        dst = 0;
    22942284    RefPtr<RegisterID> expr = generator.emitNode(dst, m_expr.get());
    2295     generator.emitExpressionInfo(m_divot, m_startOffset, m_endOffset);
     2285    generator.emitExpressionInfo(divot(), startOffset(), endOffset());
    22962286    generator.emitThrow(expr.get());
    22972287    return dst;
     
    24242414    RefPtr<RegisterID> dstRegister = generator.newTemporary();
    24252415    generator.emitLoad(dstRegister.get(), jsUndefined());
    2426     statementListEmitCode(m_children, generator, dstRegister.get());
     2416    statementListEmitCode(children(), generator, dstRegister.get());
    24272417
    24282418    generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine());
     
    25122502{
    25132503    generator.emitDebugHook(DidEnterCallFrame, firstLine(), lastLine());
    2514     statementListEmitCode(m_children, generator, ignoredResult());
    2515     if (!m_children.size() || !m_children.last()->isReturnNode()) {
     2504    statementListEmitCode(children(), generator, ignoredResult());
     2505    if (!children().size() || !children().last()->isReturnNode()) {
    25162506        RegisterID* r0 = generator.emitLoad(0, jsUndefined());
    25172507        generator.emitDebugHook(WillLeaveCallFrame, firstLine(), lastLine());
     
    25272517    RefPtr<RegisterID> dstRegister = generator.newTemporary();
    25282518    generator.emitLoad(dstRegister.get(), jsUndefined());
    2529     statementListEmitCode(m_children, generator, dstRegister.get());
     2519    statementListEmitCode(children(), generator, dstRegister.get());
    25302520
    25312521    generator.emitDebugHook(DidExecuteProgram, firstLine(), lastLine());
Note: See TracChangeset for help on using the changeset viewer.