From cc6bb83fc6778a765321d025e756591ada648a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Bylica?= Date: Thu, 4 Dec 2014 15:39:36 +0100 Subject: [PATCH] Simplify JIT logs --- libevmjit/Compiler.cpp | 4 ++++ libevmjit/ExecutionEngine.cpp | 21 +++++++++------------ libevmjit/Utils.h | 2 +- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/libevmjit/Compiler.cpp b/libevmjit/Compiler.cpp index 1ccd7f74e..cb6eb2541 100644 --- a/libevmjit/Compiler.cpp +++ b/libevmjit/Compiler.cpp @@ -2,6 +2,7 @@ #include "Compiler.h" #include +#include #include @@ -152,6 +153,7 @@ void Compiler::createBasicBlocks(bytes const& _bytecode) std::unique_ptr Compiler::compile(bytes const& _bytecode) { + auto compilationStartTime = std::chrono::high_resolution_clock::now(); auto module = std::unique_ptr(new llvm::Module("main", m_builder.getContext())); // Create main function @@ -242,6 +244,8 @@ std::unique_ptr Compiler::compile(bytes const& _bytecode) fpManager.run(*m_mainFunc); } + auto compilationEndTime = std::chrono::high_resolution_clock::now(); + clog(JIT) << "JIT: " << std::chrono::duration_cast(compilationEndTime - compilationStartTime).count(); return module; } diff --git a/libevmjit/ExecutionEngine.cpp b/libevmjit/ExecutionEngine.cpp index 5236d1d36..ab3f83064 100644 --- a/libevmjit/ExecutionEngine.cpp +++ b/libevmjit/ExecutionEngine.cpp @@ -69,11 +69,12 @@ int ExecutionEngine::run(std::unique_ptr _module, RuntimeData* _da return -1; // FIXME: Handle internal errors _module.release(); // Successfully created llvm::ExecutionEngine takes ownership of the module - auto finalizationStartTime = std::chrono::high_resolution_clock::now(); + auto finalizationStartTime = std::chrono::high_resolution_clock::now(); // FIXME: It's not compilation time exec->finalizeObject(); auto finalizationEndTime = std::chrono::high_resolution_clock::now(); - clog(JIT) << "Module finalization time: " - << std::chrono::duration_cast(finalizationEndTime - finalizationStartTime).count(); + clog(JIT) << " + " << std::chrono::duration_cast(finalizationEndTime - finalizationStartTime).count(); + + auto executionStartTime = std::chrono::high_resolution_clock::now(); auto entryFunc = module->getFunction("main"); if (!entryFunc) @@ -85,21 +86,15 @@ int ExecutionEngine::run(std::unique_ptr _module, RuntimeData* _da auto r = setjmp(buf); if (r == 0) { - - auto executionStartTime = std::chrono::high_resolution_clock::now(); - auto result = exec->runFunction(entryFunc, {{}, llvm::GenericValue(&runtime)}); returnCode = static_cast(result.IntVal.getZExtValue()); - - auto executionEndTime = std::chrono::high_resolution_clock::now(); - clog(JIT) << "Execution time : " - << std::chrono::duration_cast(executionEndTime - executionStartTime).count(); - } else returnCode = static_cast(r); - clog(JIT) << "Max stack size: " << Stack::maxStackSize; + auto executionEndTime = std::chrono::high_resolution_clock::now(); + clog(JIT) << " + " << std::chrono::duration_cast(executionEndTime - executionStartTime).count() << " ms "; + //clog(JIT) << "Max stack size: " << Stack::maxStackSize; if (returnCode == ReturnCode::Return) { @@ -114,6 +109,8 @@ int ExecutionEngine::run(std::unique_ptr _module, RuntimeData* _da else clog(JIT) << "RETURN " << (int)returnCode; + clog(JIT) << "\n"; + return static_cast(returnCode); } diff --git a/libevmjit/Utils.h b/libevmjit/Utils.h index 06ef9af81..73e01d2ee 100644 --- a/libevmjit/Utils.h +++ b/libevmjit/Utils.h @@ -14,7 +14,7 @@ namespace jit struct JIT: public NoteChannel { static const char* name() { return "JIT"; } }; -#define clog(CHANNEL) std::cerr << CHANNEL::name() << ": " +#define clog(CHANNEL) std::cerr /// Representation of 256-bit value binary compatible with LLVM i256 // TODO: Replace with h256