diff options
author | Mike Frysinger <vapier@gentoo.org> | 2015-06-03 21:24:48 +0800 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2015-06-03 21:24:48 +0800 |
commit | 080e64a6a23b1ca2be9d603bc642c128d413dd7d (patch) | |
tree | 1eb1f66fac3cc1393221b26467f38c381f7558e2 /riscv/interactive.cc | |
parent | c1273bcbaf659f5bb54fb85e1292b21d70503bc4 (diff) | |
download | spike-080e64a6a23b1ca2be9d603bc642c128d413dd7d.zip spike-080e64a6a23b1ca2be9d603bc642c128d413dd7d.tar.gz spike-080e64a6a23b1ca2be9d603bc642c128d413dd7d.tar.bz2 |
move interactive function init out of main loop
These values don't change between runs, so there's no point in recreating
them on every instruction step. Pull it out to the top to simplify.
Diffstat (limited to 'riscv/interactive.cc')
-rw-r--r-- | riscv/interactive.cc | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/riscv/interactive.cc b/riscv/interactive.cc index 2dd1cad..abdcc39 100644 --- a/riscv/interactive.cc +++ b/riscv/interactive.cc @@ -48,6 +48,20 @@ static std::string readline(int fd) void sim_t::interactive() { + typedef void (sim_t::*interactive_func)(const std::string&, const std::vector<std::string>&); + std::map<std::string,interactive_func> funcs; + + funcs["r"] = &sim_t::interactive_run_noisy; + funcs["rs"] = &sim_t::interactive_run_silent; + funcs["reg"] = &sim_t::interactive_reg; + funcs["fregs"] = &sim_t::interactive_fregs; + funcs["fregd"] = &sim_t::interactive_fregd; + funcs["mem"] = &sim_t::interactive_mem; + funcs["str"] = &sim_t::interactive_str; + funcs["until"] = &sim_t::interactive_until; + funcs["while"] = &sim_t::interactive_until; + funcs["q"] = &sim_t::interactive_quit; + while (!htif->done()) { std::cerr << ": " << std::flush; @@ -67,20 +81,6 @@ void sim_t::interactive() while (ss >> tmp) args.push_back(tmp); - typedef void (sim_t::*interactive_func)(const std::string&, const std::vector<std::string>&); - std::map<std::string,interactive_func> funcs; - - funcs["r"] = &sim_t::interactive_run_noisy; - funcs["rs"] = &sim_t::interactive_run_silent; - funcs["reg"] = &sim_t::interactive_reg; - funcs["fregs"] = &sim_t::interactive_fregs; - funcs["fregd"] = &sim_t::interactive_fregd; - funcs["mem"] = &sim_t::interactive_mem; - funcs["str"] = &sim_t::interactive_str; - funcs["until"] = &sim_t::interactive_until; - funcs["while"] = &sim_t::interactive_until; - funcs["q"] = &sim_t::interactive_quit; - try { if(funcs.count(cmd)) |