diff options
author | Gav Wood <g@ethdev.com> | 2015-04-05 05:56:07 +0800 |
---|---|---|
committer | Gav Wood <g@ethdev.com> | 2015-04-05 05:56:07 +0800 |
commit | 158fdc17982c983be686fb928595c30076b7acb7 (patch) | |
tree | 922a60c54969886a037ae5d3cd8e308f5154026f | |
parent | 42ef1880271a99a69f6dcc5fbad97290baed8a2a (diff) | |
parent | fc3ea6aa6cc4e7eb740ec0fb1c329b1fca1d372c (diff) | |
download | dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.gz dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.bz2 dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.lz dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.xz dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.tar.zst dexon-solidity-158fdc17982c983be686fb928595c30076b7acb7.zip |
Merge pull request #1466 from imapp-pl/pr/jit_cache
EVM JIT stack limit support
-rw-r--r-- | TestHelper.cpp | 19 | ||||
-rw-r--r-- | TestHelper.h | 4 | ||||
-rw-r--r-- | state.cpp | 5 | ||||
-rw-r--r-- | vm.cpp | 5 |
4 files changed, 21 insertions, 12 deletions
diff --git a/TestHelper.cpp b/TestHelper.cpp index 7dc00149..295b759f 100644 --- a/TestHelper.cpp +++ b/TestHelper.cpp @@ -29,6 +29,7 @@ #include <libethereum/Client.h> #include <liblll/Compiler.h> #include <libevm/VMFactory.h> +#include "Stats.h" using namespace std; using namespace dev::eth; @@ -431,6 +432,9 @@ void executeTests(const string& _name, const string& _testPathAppendix, std::fun string testPath = getTestPath(); testPath += _testPathAppendix; + if (Options::get().stats) + Listener::registerListener(Stats::get()); + if (Options::get().fillTests) { try @@ -462,6 +466,7 @@ void executeTests(const string& _name, const string& _testPathAppendix, std::fun string s = asString(dev::contents(testPath + "/" + _name + ".json")); BOOST_REQUIRE_MESSAGE(s.length() > 0, "Contents of " + testPath + "/" + _name + ".json is empty. Have you cloned the 'tests' repo branch develop and set ETHEREUM_TEST_PATH to its path?"); json_spirit::read_string(s, v); + Listener::notifySuiteStarted(_name); doTests(v, false); } catch (Exception const& _e) @@ -535,10 +540,12 @@ Options::Options() vmtrace = true; else if (arg == "--filltests") fillTests = true; - else if (arg == "--stats") + else if (arg.compare(0, 7, "--stats") == 0) + { stats = true; - else if (arg == "--stats=full") - stats = statsFull = true; + if (arg.size() > 7) + statsOutFile = arg.substr(8); // skip '=' char + } else if (arg == "--performance") performance = true; else if (arg == "--quadratic") @@ -586,6 +593,12 @@ void Listener::registerListener(Listener& _listener) g_listener = &_listener; } +void Listener::notifySuiteStarted(std::string const& _name) +{ + if (g_listener) + g_listener->suiteStarted(_name); +} + void Listener::notifyTestStarted(std::string const& _name) { if (g_listener) diff --git a/TestHelper.h b/TestHelper.h index 022c715f..e5f96f51 100644 --- a/TestHelper.h +++ b/TestHelper.h @@ -164,7 +164,7 @@ public: bool vmtrace = false; ///< Create EVM execution tracer // TODO: Link with log verbosity? bool fillTests = false; ///< Create JSON test files from execution results bool stats = false; ///< Execution time stats - bool statsFull = false; ///< Output full stats - execution times for every test + std::string statsOutFile; ///< Stats output file. "out" for standard output /// Test selection /// @{ @@ -191,10 +191,12 @@ class Listener public: virtual ~Listener() = default; + virtual void suiteStarted(std::string const&) {} virtual void testStarted(std::string const& _name) = 0; virtual void testFinished() = 0; static void registerListener(Listener& _listener); + static void notifySuiteStarted(std::string const& _name); static void notifyTestStarted(std::string const& _name); static void notifyTestFinished(); @@ -31,7 +31,6 @@ #include <libethereum/Defaults.h> #include <libevm/VM.h> #include "TestHelper.h" -#include "Stats.h" using namespace std; using namespace json_spirit; @@ -42,9 +41,6 @@ namespace dev { namespace test { void doStateTests(json_spirit::mValue& v, bool _fillin) { - if (Options::get().stats) - Listener::registerListener(Stats::get()); - for (auto& i: v.get_obj()) { std::cout << " " << i.first << "\n"; @@ -254,6 +250,7 @@ BOOST_AUTO_TEST_CASE(stRandom) string s = asString(dev::contents(path.string())); BOOST_REQUIRE_MESSAGE(s.length() > 0, "Content of " + path.string() + " is empty. Have you cloned the 'tests' repo branch develop and set ETHEREUM_TEST_PATH to its path?"); json_spirit::read_string(s, v); + test::Listener::notifySuiteStarted(path.filename().string()); dev::test::doStateTests(v, false); } catch (Exception const& _e) @@ -25,7 +25,6 @@ #include <libethereum/Executive.h> #include <libevm/VMFactory.h> #include "vm.h" -#include "Stats.h" using namespace std; using namespace json_spirit; @@ -311,9 +310,6 @@ namespace dev { namespace test { void doVMTests(json_spirit::mValue& v, bool _fillin) { - if (Options::get().stats) - Listener::registerListener(Stats::get()); - for (auto& i: v.get_obj()) { std::cout << " " << i.first << "\n"; @@ -549,6 +545,7 @@ BOOST_AUTO_TEST_CASE(vmRandom) string s = asString(dev::contents(path.string())); BOOST_REQUIRE_MESSAGE(s.length() > 0, "Content of " + path.string() + " is empty. Have you cloned the 'tests' repo branch develop and set ETHEREUM_TEST_PATH to its path?"); json_spirit::read_string(s, v); + test::Listener::notifySuiteStarted(path.filename().string()); doVMTests(v, false); } catch (Exception const& _e) |