Changeset 63946 in webkit for trunk/JavaScriptCore/parser/ASTBuilder.h
- Timestamp:
- Jul 22, 2010, 8:24:53 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/parser/ASTBuilder.h
r63024 r63946 125 125 ExpressionNode* makeMultNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 126 126 ExpressionNode* makeDivNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 127 ExpressionNode* makeModNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 127 128 ExpressionNode* makeAddNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 128 129 ExpressionNode* makeSubNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 130 ExpressionNode* makeBitXOrNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 131 ExpressionNode* makeBitAndNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 132 ExpressionNode* makeBitOrNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 129 133 ExpressionNode* makeLeftShiftNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 130 134 ExpressionNode* makeRightShiftNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 135 ExpressionNode* makeURightShiftNode(ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments); 131 136 132 137 ExpressionNode* createLogicalNot(ExpressionNode* expr) { return new (m_globalData) LogicalNotNode(m_globalData, expr); } … … 691 696 } 692 697 698 ExpressionNode* ASTBuilder::makeModNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) 699 { 700 expr1 = expr1->stripUnaryPlus(); 701 expr2 = expr2->stripUnaryPlus(); 702 703 if (expr1->isNumber() && expr2->isNumber()) 704 return createNumber(fmod(static_cast<NumberNode*>(expr1)->value(), static_cast<NumberNode*>(expr2)->value())); 705 return new (m_globalData) ModNode(m_globalData, expr1, expr2, rightHasAssignments); 706 } 707 693 708 ExpressionNode* ASTBuilder::makeAddNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) 694 709 { … … 720 735 return createNumber(toInt32(static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f)); 721 736 return new (m_globalData) RightShiftNode(m_globalData, expr1, expr2, rightHasAssignments); 737 } 738 739 ExpressionNode* ASTBuilder::makeURightShiftNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) 740 { 741 if (expr1->isNumber() && expr2->isNumber()) 742 return createNumber(toUInt32(static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f)); 743 return new (m_globalData) UnsignedRightShiftNode(m_globalData, expr1, expr2, rightHasAssignments); 744 } 745 746 ExpressionNode* ASTBuilder::makeBitOrNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) 747 { 748 if (expr1->isNumber() && expr2->isNumber()) 749 return createNumber(toInt32(static_cast<NumberNode*>(expr1)->value()) | toInt32(static_cast<NumberNode*>(expr2)->value())); 750 return new (m_globalData) BitOrNode(m_globalData, expr1, expr2, rightHasAssignments); 751 } 752 753 ExpressionNode* ASTBuilder::makeBitAndNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) 754 { 755 if (expr1->isNumber() && expr2->isNumber()) 756 return createNumber(toInt32(static_cast<NumberNode*>(expr1)->value()) & toInt32(static_cast<NumberNode*>(expr2)->value())); 757 return new (m_globalData) BitAndNode(m_globalData, expr1, expr2, rightHasAssignments); 758 } 759 760 ExpressionNode* ASTBuilder::makeBitXOrNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments) 761 { 762 if (expr1->isNumber() && expr2->isNumber()) 763 return createNumber(toInt32(static_cast<NumberNode*>(expr1)->value()) ^ toInt32(static_cast<NumberNode*>(expr2)->value())); 764 return new (m_globalData) BitXOrNode(m_globalData, expr1, expr2, rightHasAssignments); 722 765 } 723 766 … … 764 807 765 808 case BITOR: 766 return new (m_globalData) BitOrNode(m_globalData,lhs.first, rhs.first, rhs.second.hasAssignment);809 return makeBitOrNode(lhs.first, rhs.first, rhs.second.hasAssignment); 767 810 768 811 case BITXOR: 769 return new (m_globalData) BitXOrNode(m_globalData,lhs.first, rhs.first, rhs.second.hasAssignment);812 return makeBitXOrNode(lhs.first, rhs.first, rhs.second.hasAssignment); 770 813 771 814 case BITAND: 772 return new (m_globalData) BitAndNode(m_globalData,lhs.first, rhs.first, rhs.second.hasAssignment);815 return makeBitAndNode(lhs.first, rhs.first, rhs.second.hasAssignment); 773 816 774 817 case EQEQ: … … 815 858 816 859 case URSHIFT: 817 return new (m_globalData) UnsignedRightShiftNode(m_globalData,lhs.first, rhs.first, rhs.second.hasAssignment);860 return makeURightShiftNode(lhs.first, rhs.first, rhs.second.hasAssignment); 818 861 819 862 case PLUS: … … 830 873 831 874 case MOD: 832 return new (m_globalData) ModNode(m_globalData,lhs.first, rhs.first, rhs.second.hasAssignment);875 return makeModNode(lhs.first, rhs.first, rhs.second.hasAssignment); 833 876 } 834 877 CRASH();
Note:
See TracChangeset
for help on using the changeset viewer.