service/init-classes/InitClassPruner.h (27 lines of code) (raw):

/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #pragma once #include "ControlFlow.h" #include "InitClassesWithSideEffects.h" namespace init_classes { struct Stats { size_t init_class_instructions{0}; size_t init_class_instructions_removed{0}; size_t init_class_instructions_refined{0}; Stats& operator+=(const Stats&); }; class InitClassPruner { public: InitClassPruner( const InitClassesWithSideEffects& init_classes_with_side_effects, const DexType* declaring_type, cfg::ControlFlowGraph& cfg); const Stats& get_stats() const { return m_stats; } void apply(); private: void apply_forward(); void apply_backward(); const InitClassesWithSideEffects& m_init_classes_with_side_effects; const DexType* m_declaring_type; cfg::ControlFlowGraph& m_cfg; Stats m_stats; }; } // namespace init_classes