diff --git a/Manifest.json b/Manifest.json index 5d4c099..2745b83 100644 --- a/Manifest.json +++ b/Manifest.json @@ -2,7 +2,7 @@ "manifest_version": 1, "package_name": "saarland.cispa.artist.modules.logtimization", "name": "Logtimization Module", - "description": "This module logs during instrumentation.", + "description": "This module logs during instrumentation bur does not change the target code.", "author": "Sebastian Weisgerber , Oliver Schranz , Parthipan Ramesh ", "version": 1 } diff --git a/src/instrumentation_pass.cc b/src/instrumentation_pass.cc index ca17fc7..2f9df5c 100644 --- a/src/instrumentation_pass.cc +++ b/src/instrumentation_pass.cc @@ -22,8 +22,8 @@ #include -#include -#include +#include +#include #include "instrumentation_pass.h" @@ -31,7 +31,7 @@ using std::string; using std::vector; using std::shared_ptr; -using art::DexFile; + HLogtimization::HLogtimization(const MethodInfo& method_info, #ifdef BUILD_MARSHMALLOW @@ -47,7 +47,7 @@ HLogtimization::HLogtimization(const MethodInfo& method_info, HLogtimization::~HLogtimization() = default; -void HLogtimization::RunModule() { +void HLogtimization::RunPass() { CHECK(graph_ != nullptr); VLOG(artist) << "<##########################################################>"; diff --git a/src/instrumentation_pass.h b/src/instrumentation_pass.h index 4ce7288..7f67745 100644 --- a/src/instrumentation_pass.h +++ b/src/instrumentation_pass.h @@ -23,7 +23,7 @@ #ifndef ART_MODULES_LOGTIMIZATION_LOGTIMIZATION_ARTIST_H_ #define ART_MODULES_LOGTIMIZATION_LOGTIMIZATION_ARTIST_H_ -#include +#include #include #include @@ -31,10 +31,7 @@ using std::string; using std::vector; using std::shared_ptr; -using art::HArtist; -using art::MethodInfo; -using art::DexCompilationUnit; -using art::OptimizingCompilerStats; +using namespace art; class HLogtimization : public HArtist { public: @@ -47,7 +44,7 @@ class HLogtimization : public HArtist { ~HLogtimization() OVERRIDE; - void RunModule() OVERRIDE; + void RunPass() OVERRIDE; }; #endif // ART_MODULES_LOGTIMIZATION_LOGTIMIZATION_ARTIST_H_ diff --git a/src/module.cc b/src/module.cc index 9aecb7e..fd9642d 100644 --- a/src/module.cc +++ b/src/module.cc @@ -19,19 +19,22 @@ * */ -#include +#include #include "module.h" #include "instrumentation_pass.h" using std::make_shared; -using art::WhitelistFilter; +LogtimizationModule::LogtimizationModule(const shared_ptr fs) : Module(fs) {} -shared_ptr LogtimizationModule::createPass(const MethodInfo& method_info) const { - return make_shared(method_info); +HArtist * LogtimizationModule::createPass(const MethodInfo& method_info) const { + return new (method_info.GetGraph()->GetArena()) HLogtimization(method_info); } +/* + * No codelib needed since we do not inject any method calls but only print to logcat at compile-time. + */ shared_ptr LogtimizationModule::createCodeLib() const { return nullptr; } @@ -41,11 +44,15 @@ shared_ptr LogtimizationModule::createCodeLib() const { */ unique_ptr LogtimizationModule::getMethodFilter() const { const vector onCreate = {".onCreate("}; - return unique_ptr(new WhitelistFilter(onCreate, false, true)); + return unique_ptr(new MethodNameWhitelist(onCreate, false, true)); } -// the class factories +// the module factory +extern "C" shared_ptr create(shared_ptr fshelper) { + return make_shared(fshelper); +} -extern "C" shared_ptr create() { - return make_shared(); +extern "C" ModuleId get_id() { + return "saarland.cispa.artist.modules.logtimization"; } + diff --git a/src/module.h b/src/module.h index a6a3426..714a963 100644 --- a/src/module.h +++ b/src/module.h @@ -22,20 +22,18 @@ #ifndef ART_MODULES_LOGTIMIZATION_LOGTIMIZATION_MODULE_H_ #define ART_MODULES_LOGTIMIZATION_LOGTIMIZATION_MODULE_H_ -#include +#include -using art::Module; -using art::MethodInfo; -using art::HArtist; -using art::CodeLib; -using art::Filter; +using namespace art; class LogtimizationModule : public Module { - shared_ptr createPass(const MethodInfo& method_info) const OVERRIDE; + HArtist* createPass(const MethodInfo& method_info) const OVERRIDE; shared_ptr createCodeLib() const OVERRIDE; public: + explicit LogtimizationModule(const shared_ptr fs); + unique_ptr getMethodFilter() const OVERRIDE; };