namespace simgrid {
namespace dwarf {
-evaluation_error::~evaluation_error() noexcept(true) {}
-
void execute(
const Dwarf_Op* ops, std::size_t n,
const ExpressionContext& context, ExpressionStack& stack)
for (size_t i = 0; i != n; ++i) {
const Dwarf_Op *op = ops + i;
std::uint8_t atom = op->atom;
+ intptr_t first;
+ intptr_t second;
switch (atom) {
// and replace the top of the stack with the computed value
// (stack.top() += stack.before_top()).
- case DW_OP_plus: {
- intptr_t first = stack.pop();
- intptr_t second = stack.pop();
+ case DW_OP_plus:
+ first = stack.pop();
+ second = stack.pop();
stack.push(first + second);
break;
- }
- case DW_OP_mul: {
- intptr_t first = stack.pop();
- intptr_t second = stack.pop();
+ case DW_OP_mul:
+ first = stack.pop();
+ second = stack.pop();
stack.push(first * second);
break;
- }
case DW_OP_plus_uconst:
stack.top() += op->number;
stack.top() = - (intptr_t) stack.top();
break;
- case DW_OP_minus: {
- intptr_t first = stack.pop();
- intptr_t second = stack.pop();
+ case DW_OP_minus:
+ first = stack.pop();
+ second = stack.pop();
stack.push(second - first);
break;
- }
- case DW_OP_and: {
- intptr_t first = stack.pop();
- intptr_t second = stack.pop();
+ case DW_OP_and:
+ first = stack.pop();
+ second = stack.pop();
stack.push(first & second);
break;
- }
- case DW_OP_or: {
- intptr_t first = stack.pop();
- intptr_t second = stack.pop();
+ case DW_OP_or:
+ first = stack.pop();
+ second = stack.pop();
stack.push(first | second);
break;
- }
- case DW_OP_xor: {
- intptr_t first = stack.pop();
- intptr_t second = stack.pop();
+ case DW_OP_xor:
+ first = stack.pop();
+ second = stack.pop();
stack.push(first ^ second);
break;
- }
case DW_OP_nop:
break;