#pragma once // // This file is distributed under the MIT License. See LICENSE.md for details. // #include #include "revng/TupleTree/TupleTreePath.h" /// Struct returned by Tracking::collect. /// The field Read is the set of paths of fields that were accessed. /// The exact vectors contains the paths of all vectors that were marked as /// requiring being identical. /// /// We divide into read and exact vectors because when we will introduce the /// cold start invalidation based on the hash, the hash will be different /// depending if they are just read or if they are vectors required to be exact. struct ReadFields { std::set Read; std::set ExactVectors; }; namespace revng { struct Tracking { template static ReadFields collect(const M &LHS); template static void clearAndResume(const M &LHS); template static void push(const M &LHS); template static void pop(const M &LHS); template static void stop(const M &LHS); }; } // namespace revng