| 483 | } |
| 484 | |
| 485 | void Executor::cleanNumericVal(ValVariant &Val, |
| 486 | const ValType &Type) const noexcept { |
| 487 | if (Type.isNumType()) { |
| 488 | switch (Type.getCode()) { |
| 489 | case TypeCode::I32: { |
| 490 | uint32_t V = Val.get<uint32_t>(); |
| 491 | Val.emplace<uint128_t>(static_cast<uint128_t>(0U)); |
| 492 | Val.emplace<uint32_t>(V); |
| 493 | break; |
| 494 | } |
| 495 | case TypeCode::F32: { |
| 496 | float V = Val.get<float>(); |
| 497 | Val.emplace<uint128_t>(static_cast<uint128_t>(0U)); |
| 498 | Val.emplace<float>(V); |
| 499 | break; |
| 500 | } |
| 501 | case TypeCode::I64: { |
| 502 | uint64_t V = Val.get<uint64_t>(); |
| 503 | Val.emplace<uint128_t>(static_cast<uint128_t>(0U)); |
| 504 | Val.emplace<uint64_t>(V); |
| 505 | break; |
| 506 | } |
| 507 | case TypeCode::F64: { |
| 508 | double V = Val.get<double>(); |
| 509 | Val.emplace<uint128_t>(static_cast<uint128_t>(0U)); |
| 510 | Val.emplace<double>(V); |
| 511 | break; |
| 512 | } |
| 513 | default: |
| 514 | break; |
| 515 | } |
| 516 | } |
| 517 | } |
| 518 | |
| 519 | ValVariant Executor::packVal(const ValType &Type, |
| 520 | const ValVariant &Val) const noexcept { |