diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c94083..3a6d588 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,12 +35,14 @@ FILE(GLOB TGC_VM_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/vm/interp/vm_*.cpp) set(LIB_SOURCES src/vm/fp_functions.cpp src/plugin/instruction_count.cpp - src/plugin/cycle_estimate.cpp src/plugin/cov.cpp ${TGC_SOURCES} ${TGC_VM_SOURCES} ) +if(TARGET RapidJSON) + list(APPEND LIB_SOURCES src/plugin/cycle_estimate.cpp) +endif() if(WITH_LLVM) FILE(GLOB TGC_LLVM_SOURCES @@ -82,6 +84,10 @@ elseif(TARGET elfio::elfio) else() message(FATAL_ERROR "No elfio library found, maybe a find_package() call is missing") endif() +if(TARGET RapidJSON) + target_link_libraries(${PROJECT_NAME} PUBLIC RapidJSON) +endif() + set_target_properties(${PROJECT_NAME} PROPERTIES VERSION ${PROJECT_VERSION} diff --git a/incl/iss/plugin/cycle_estimate.h b/incl/iss/plugin/cycle_estimate.h index c2c9666..3f35dc7 100644 --- a/incl/iss/plugin/cycle_estimate.h +++ b/incl/iss/plugin/cycle_estimate.h @@ -39,6 +39,7 @@ #include "iss/vm_plugin.h" #include #include +#include namespace iss { diff --git a/src/plugin/cycle_estimate.cpp b/src/plugin/cycle_estimate.cpp index bf642f1..d2bcdad 100644 --- a/src/plugin/cycle_estimate.cpp +++ b/src/plugin/cycle_estimate.cpp @@ -41,6 +41,7 @@ #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" #include +#include #include using namespace rapidjson; @@ -67,13 +68,13 @@ bool iss::plugin::cycle_estimate::registration(const char* const version, vm_if& Document d; ParseResult ok = d.ParseStream(isw); if(ok) { - Value& val = d[core_name]; + Value& val = d[core_name.c_str()]; if(val.IsArray()){ delays.reserve(val.Size()); - for(auto it:val.GetArray()){ - auto name = it["name"]; - auto size = it["size"]; - auto delay = it["delay"]; + for (auto it = val.Begin(); it != val.End(); ++it) { + auto& name = (*it)["name"]; + auto& size = (*it)["size"]; + auto& delay = (*it)["delay"]; if(delay.IsArray()) { delays.push_back(instr_desc{size.Get(), delay[0].Get(), delay[1].Get()}); } else if(delay.Is()) { @@ -86,7 +87,7 @@ bool iss::plugin::cycle_estimate::registration(const char* const version, vm_if& return false; } } else { - LOG(ERR)<<"plugin cycle_estimate: could not parse in JSON file"<