Changeset 38330 in webkit for trunk/JavaScriptCore/parser/Nodes.cpp
- Timestamp:
- Nov 12, 2008, 1:34:22 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/parser/Nodes.cpp
r38322 r38330 586 586 RegisterID* EvalFunctionCallNode::emitCode(CodeGenerator& generator, RegisterID* dst) 587 587 { 588 RefPtr<RegisterID> func= generator.tempDestination(dst);589 RefPtr<RegisterID> thisRegister= generator.newTemporary();590 generator.emitResolveWithBase( thisRegister.get(), func.get(), generator.propertyNames().eval);591 return generator.emitCallEval(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset());588 RefPtr<RegisterID> base = generator.tempDestination(dst); 589 RefPtr<RegisterID> func = generator.newTemporary(); 590 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(), divot(), startOffset(), endOffset()); 592 592 } 593 593 … … 608 608 { 609 609 RefPtr<RegisterID> func = generator.emitNode(m_expr.get()); 610 RefPtr<RegisterID> thisRegister = generator.emitLoad(generator.newTemporary(), jsNull()); 611 return generator.emitCall(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset()); 610 return generator.emitCall(generator.finalDestination(dst), func.get(), 0, m_args.get(), divot(), startOffset(), endOffset()); 612 611 } 613 612 … … 626 625 RegisterID* FunctionCallResolveNode::emitCode(CodeGenerator& generator, RegisterID* dst) 627 626 { 628 if (RefPtr<RegisterID> local = generator.registerFor(m_ident)) { 629 RefPtr<RegisterID> thisRegister = generator.emitLoad(generator.newTemporary(), jsNull()); 630 return generator.emitCall(generator.finalDestination(dst, thisRegister.get()), local.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset()); 631 } 627 if (RefPtr<RegisterID> local = generator.registerFor(m_ident)) 628 return generator.emitCall(generator.finalDestination(dst), local.get(), 0, m_args.get(), divot(), startOffset(), endOffset()); 632 629 633 630 int index = 0; … … 636 633 if (generator.findScopedProperty(m_ident, index, depth, false, globalObject) && index != missingSymbolMarker()) { 637 634 RefPtr<RegisterID> func = generator.emitGetScopedVar(generator.newTemporary(), depth, index, globalObject); 638 RefPtr<RegisterID> thisRegister = generator.emitLoad(generator.newTemporary(), jsNull()); 639 return generator.emitCall(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset()); 640 } 641 642 RefPtr<RegisterID> func = generator.tempDestination(dst); 643 RefPtr<RegisterID> thisRegister = generator.newTemporary(); 635 return generator.emitCall(generator.finalDestination(dst), func.get(), 0, m_args.get(), divot(), startOffset(), endOffset()); 636 } 637 638 RefPtr<RegisterID> base = generator.tempDestination(dst); 639 RefPtr<RegisterID> func = generator.newTemporary(); 644 640 int identifierStart = divot() - startOffset(); 645 641 generator.emitExpressionInfo(identifierStart + m_ident.size(), m_ident.size(), 0); 646 generator.emitResolveFunction( thisRegister.get(), func.get(), m_ident);647 return generator.emitCall(generator.finalDestination(dst, func.get()), func.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset());642 generator.emitResolveFunction(base.get(), func.get(), m_ident); 643 return generator.emitCall(generator.finalDestination(dst, base.get()), func.get(), base.get(), m_args.get(), divot(), startOffset(), endOffset()); 648 644 } 649 645 … … 667 663 RegisterID* property = generator.emitNode(m_subscript.get()); 668 664 generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset); 669 RefPtr<RegisterID> function = generator.emitGetByVal(generator.tempDestination(dst), base.get(), property); 670 RefPtr<RegisterID> thisRegister = generator.emitMove(generator.newTemporary(), base.get()); 671 return generator.emitCall(generator.finalDestination(dst, function.get()), function.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset()); 665 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(), divot(), startOffset(), endOffset()); 672 667 } 673 668 … … 689 684 RefPtr<RegisterID> base = generator.emitNode(m_base.get()); 690 685 generator.emitExpressionInfo(divot() - m_subexpressionDivotOffset, startOffset() - m_subexpressionDivotOffset, m_subexpressionEndOffset); 691 RefPtr<RegisterID> function = generator.emitGetById(generator.tempDestination(dst), base.get(), m_ident); 692 RefPtr<RegisterID> thisRegister = generator.emitMove(generator.newTemporary(), base.get()); 693 return generator.emitCall(generator.finalDestination(dst, function.get()), function.get(), thisRegister.get(), m_args.get(), divot(), startOffset(), endOffset()); 686 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(), divot(), startOffset(), endOffset()); 694 688 } 695 689
Note:
See TracChangeset
for help on using the changeset viewer.