Lines Matching refs:expr2

685 ExpressionNode* ASTBuilder::makeMultNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
688 expr2 = expr2->stripUnaryPlus();
690 if (expr1->isNumber() && expr2->isNumber())
691 return createNumber(static_cast<NumberNode*>(expr1)->value() * static_cast<NumberNode*>(expr2)->value());
694 return new (m_globalData) UnaryPlusNode(m_globalData, expr2);
696 if (expr2->isNumber() && static_cast<NumberNode*>(expr2)->value() == 1)
699 return new (m_globalData) MultNode(m_globalData, expr1, expr2, rightHasAssignments);
702 ExpressionNode* ASTBuilder::makeDivNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
705 expr2 = expr2->stripUnaryPlus();
707 if (expr1->isNumber() && expr2->isNumber())
708 return createNumber(static_cast<NumberNode*>(expr1)->value() / static_cast<NumberNode*>(expr2)->value());
709 return new (m_globalData) DivNode(m_globalData, expr1, expr2, rightHasAssignments);
712 ExpressionNode* ASTBuilder::makeModNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
715 expr2 = expr2->stripUnaryPlus();
717 if (expr1->isNumber() && expr2->isNumber())
718 return createNumber(fmod(static_cast<NumberNode*>(expr1)->value(), static_cast<NumberNode*>(expr2)->value()));
719 return new (m_globalData) ModNode(m_globalData, expr1, expr2, rightHasAssignments);
722 ExpressionNode* ASTBuilder::makeAddNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
724 if (expr1->isNumber() && expr2->isNumber())
725 return createNumber(static_cast<NumberNode*>(expr1)->value() + static_cast<NumberNode*>(expr2)->value());
726 return new (m_globalData) AddNode(m_globalData, expr1, expr2, rightHasAssignments);
729 ExpressionNode* ASTBuilder::makeSubNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
732 expr2 = expr2->stripUnaryPlus();
734 if (expr1->isNumber() && expr2->isNumber())
735 return createNumber(static_cast<NumberNode*>(expr1)->value() - static_cast<NumberNode*>(expr2)->value());
736 return new (m_globalData) SubNode(m_globalData, expr1, expr2, rightHasAssignments);
739 ExpressionNode* ASTBuilder::makeLeftShiftNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
741 if (expr1->isNumber() && expr2->isNumber())
742 return createNumber(toInt32(static_cast<NumberNode*>(expr1)->value()) << (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
743 return new (m_globalData) LeftShiftNode(m_globalData, expr1, expr2, rightHasAssignments);
746 ExpressionNode* ASTBuilder::makeRightShiftNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
748 if (expr1->isNumber() && expr2->isNumber())
749 return createNumber(toInt32(static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
750 return new (m_globalData) RightShiftNode(m_globalData, expr1, expr2, rightHasAssignments);
753 ExpressionNode* ASTBuilder::makeURightShiftNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
755 if (expr1->isNumber() && expr2->isNumber())
756 return createNumber(toUInt32(static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
757 return new (m_globalData) UnsignedRightShiftNode(m_globalData, expr1, expr2, rightHasAssignments);
760 ExpressionNode* ASTBuilder::makeBitOrNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
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) BitOrNode(m_globalData, expr1, expr2, rightHasAssignments);
767 ExpressionNode* ASTBuilder::makeBitAndNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
769 if (expr1->isNumber() && expr2->isNumber())
770 return createNumber(toInt32(static_cast<NumberNode*>(expr1)->value()) & toInt32(static_cast<NumberNode*>(expr2)->value()));
771 return new (m_globalData) BitAndNode(m_globalData, expr1, expr2, rightHasAssignments);
774 ExpressionNode* ASTBuilder::makeBitXOrNode(ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
776 if (expr1->isNumber() && expr2->isNumber())
777 return createNumber(toInt32(static_cast<NumberNode*>(expr1)->value()) ^ toInt32(static_cast<NumberNode*>(expr2)->value()));
778 return new (m_globalData) BitXOrNode(m_globalData, expr1, expr2, rightHasAssignments);