class impl_path_context : public path_context
{
public:
- impl_path_context (const program_state *cur_state)
+ impl_path_context (const program_state *cur_state,
+ logger *logger)
: m_cur_state (cur_state),
+ m_logger (logger),
m_terminate_path (false)
{
}
void
bifurcate (std::unique_ptr<custom_edge_info> info) final override
{
+ if (m_logger)
+ m_logger->log ("bifurcating path");
+
if (m_state_at_bifurcation)
/* Verify that the state at bifurcation is consistent when we
split into multiple out-edges. */
void terminate_path () final override
{
+ if (m_logger)
+ m_logger->log ("terminating path");
m_terminate_path = true;
}
private:
const program_state *m_cur_state;
+ logger *m_logger;
+
/* Lazily-created copy of the state before the split. */
std::unique_ptr<program_state> m_state_at_bifurcation;
exactly one stmt, the one that caused the change. */
program_state next_state (state);
- impl_path_context path_ctxt (&next_state);
+ impl_path_context path_ctxt (&next_state, logger);
uncertainty_t uncertainty;
const supernode *snode = point.get_supernode ();