From: Gunnar Beutner Date: Wed, 23 Sep 2015 08:36:57 +0000 (+0200) Subject: Remove unnecessary MakeLiteral calls in SetExpression::DoEvaluate X-Git-Tag: v2.3.11~22 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=af5c3b03f8f7264dcb996818dddc2e458ccf59bc;p=icinga2 Remove unnecessary MakeLiteral calls in SetExpression::DoEvaluate fixes #10199 --- diff --git a/lib/config/expression.cpp b/lib/config/expression.cpp index 171078289..aec862c3c 100644 --- a/lib/config/expression.cpp +++ b/lib/config/expression.cpp @@ -482,41 +482,30 @@ ExpressionResult SetExpression::DoEvaluate(ScriptFrame& frame, DebugHint *dhint) if (m_Op != OpSetLiteral) { Value object = VMOps::GetField(parent, index, m_DebugInfo); - Expression *lhs = MakeLiteral(object); - Expression *rhs = MakeLiteral(operand2); - switch (m_Op) { case OpSetAdd: - operand2 = AddExpression(lhs, rhs, m_DebugInfo).Evaluate(frame, dhint); - CHECK_RESULT(operand2); + operand2 = object + operand2; break; case OpSetSubtract: - operand2 = SubtractExpression(lhs, rhs, m_DebugInfo).Evaluate(frame, dhint); - CHECK_RESULT(operand2); + operand2 = object - operand2; break; case OpSetMultiply: - operand2 = MultiplyExpression(lhs, rhs, m_DebugInfo).Evaluate(frame, dhint); - CHECK_RESULT(operand2); + operand2 = object * operand2; break; case OpSetDivide: - operand2 = DivideExpression(lhs, rhs, m_DebugInfo).Evaluate(frame, dhint); - CHECK_RESULT(operand2); + operand2 = object / operand2; break; case OpSetModulo: - operand2 = ModuloExpression(lhs, rhs, m_DebugInfo).Evaluate(frame, dhint); - CHECK_RESULT(operand2); + operand2 = object % operand2; break; case OpSetXor: - operand2 = XorExpression(lhs, rhs, m_DebugInfo).Evaluate(frame, dhint); - CHECK_RESULT(operand2); + operand2 = object ^ operand2; break; case OpSetBinaryAnd: - operand2 = BinaryAndExpression(lhs, rhs, m_DebugInfo).Evaluate(frame, dhint); - CHECK_RESULT(operand2); + operand2 = object & operand2; break; case OpSetBinaryOr: - operand2 = BinaryOrExpression(lhs, rhs, m_DebugInfo).Evaluate(frame, dhint); - CHECK_RESULT(operand2); + operand2 = object | operand2; break; default: VERIFY(!"Invalid opcode.");