Changeset 147658 in webkit for trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
- Timestamp:
- Apr 4, 2013, 11:31:37 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r147234 r147658 625 625 RegisterID* PostfixNode::emitResolve(BytecodeGenerator& generator, RegisterID* dst) 626 626 { 627 if (dst == generator.ignoredResult()) 628 return PrefixNode::emitResolve(generator, dst); 629 627 630 ASSERT(m_expr->isResolveNode()); 628 631 ResolveNode* resolve = static_cast<ResolveNode*>(m_expr); … … 636 639 return generator.emitToJSNumber(generator.finalDestination(dst), local); 637 640 } 638 if (dst == generator.ignoredResult())639 return emitPreIncOrDec(generator, local, m_operator);640 641 return emitPostIncOrDec(generator, generator.finalDestination(dst), local, m_operator); 641 642 } … … 643 644 if (resolveResult.isStatic() && !resolveResult.isReadOnly()) { 644 645 RefPtr<RegisterID> value = generator.emitGetStaticVar(generator.newTemporary(), resolveResult, ident); 645 RegisterID* oldValue; 646 if (dst == generator.ignoredResult()) { 647 oldValue = 0; 648 emitPreIncOrDec(generator, value.get(), m_operator); 649 } else 650 oldValue = emitPostIncOrDec(generator, generator.finalDestination(dst), value.get(), m_operator); 646 RefPtr<RegisterID> oldValue = emitPostIncOrDec(generator, generator.finalDestination(dst), value.get(), m_operator); 651 647 generator.emitPutStaticVar(resolveResult, ident, value.get()); 652 return oldValue ;648 return oldValue.get(); 653 649 } 654 650 … … 657 653 NonlocalResolveInfo resolveInfo; 658 654 RefPtr<RegisterID> base = generator.emitResolveWithBaseForPut(generator.newTemporary(), value.get(), resolveResult, ident, resolveInfo); 659 RegisterID* oldValue; 660 if (dst == generator.ignoredResult()) { 661 oldValue = 0; 662 emitPreIncOrDec(generator, value.get(), m_operator); 663 } else 664 oldValue = emitPostIncOrDec(generator, generator.finalDestination(dst), value.get(), m_operator); 655 RefPtr<RegisterID> oldValue = emitPostIncOrDec(generator, generator.finalDestination(dst), value.get(), m_operator); 665 656 generator.emitPutToBase(base.get(), ident, value.get(), resolveInfo); 666 return oldValue ;657 return oldValue.get(); 667 658 } 668 659 669 660 RegisterID* PostfixNode::emitBracket(BytecodeGenerator& generator, RegisterID* dst) 670 661 { 662 if (dst == generator.ignoredResult()) 663 return PrefixNode::emitBracket(generator, dst); 664 671 665 ASSERT(m_expr->isBracketAccessorNode()); 672 666 BracketAccessorNode* bracketAccessor = static_cast<BracketAccessorNode*>(m_expr); … … 679 673 generator.emitExpressionInfo(bracketAccessor->divot(), bracketAccessor->startOffset(), bracketAccessor->endOffset()); 680 674 RefPtr<RegisterID> value = generator.emitGetByVal(generator.newTemporary(), base.get(), property.get()); 681 if (dst == generator.ignoredResult()) {682 emitPreIncOrDec(generator, value.get(), m_operator);683 generator.emitExpressionInfo(divot(), startOffset(), endOffset());684 generator.emitPutByVal(base.get(), property.get(), value.get());685 return 0;686 }687 675 RegisterID* oldValue = emitPostIncOrDec(generator, generator.tempDestination(dst), value.get(), m_operator); 688 676 generator.emitExpressionInfo(divot(), startOffset(), endOffset()); … … 693 681 RegisterID* PostfixNode::emitDot(BytecodeGenerator& generator, RegisterID* dst) 694 682 { 683 if (dst == generator.ignoredResult()) 684 return PrefixNode::emitDot(generator, dst); 685 695 686 ASSERT(m_expr->isDotAccessorNode()); 696 687 DotAccessorNode* dotAccessor = static_cast<DotAccessorNode*>(m_expr); … … 702 693 generator.emitExpressionInfo(dotAccessor->divot(), dotAccessor->startOffset(), dotAccessor->endOffset()); 703 694 RefPtr<RegisterID> value = generator.emitGetById(generator.newTemporary(), base.get(), ident); 704 if (dst == generator.ignoredResult()) {705 emitPreIncOrDec(generator, value.get(), m_operator);706 generator.emitExpressionInfo(divot(), startOffset(), endOffset());707 generator.emitPutById(base.get(), ident, value.get());708 return 0;709 }710 695 RegisterID* oldValue = emitPostIncOrDec(generator, generator.tempDestination(dst), value.get(), m_operator); 711 696 generator.emitExpressionInfo(divot(), startOffset(), endOffset());
Note:
See TracChangeset
for help on using the changeset viewer.