| 27 | |
| 28 | namespace { |
| 29 | RunMode parseRunModeArg(std::string_view S) noexcept { |
| 30 | std::string Lower(S); |
| 31 | std::transform(Lower.begin(), Lower.end(), Lower.begin(), |
| 32 | [](unsigned char C) -> char { |
| 33 | return static_cast<char>(std::tolower(C)); |
| 34 | }); |
| 35 | if (Lower == "jit") { |
| 36 | return RunMode::JIT; |
| 37 | } |
| 38 | if (Lower == "aot") { |
| 39 | return RunMode::AOT; |
| 40 | } |
| 41 | // Default to interpreter on any unrecognised value. |
| 42 | return RunMode::Interpreter; |
| 43 | } |
| 44 | |
| 45 | // Helper template to parse numeric arguments and catch conversion exceptions |
| 46 | template <typename Converter, typename ValVec, typename TypeVec, typename TC> |