#ifdef STATISTICS
/*
 * $Id$
 *
 * [ Description ]
 * 
 */

#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/include/Branch_Target_Buffer.h"

namespace morpheo {
namespace behavioural {
namespace core {
namespace multi_front_end {
namespace front_end {
namespace prediction_unit {
namespace branch_target_buffer {


#undef  FUNCTION
#define FUNCTION "Branch_Target_Buffer::statistics_allocation"
  void Branch_Target_Buffer::statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics)
  {
    log_printf(FUNC,Branch_Target_Buffer,FUNCTION,"Begin");

    _stat = new Stat (static_cast<std::string>(_name),
		      "Branch_Target_Buffer",
		      param_statistics);

    if (_param->_have_component_victim)
      {
	for (uint32_t i=0; i<_param->_nb_inst_predict; i++)
	  _stat->add_stat(_component_sort [i]->_stat);
	_stat->add_stat(_component_victim ->_stat);
      }
    _stat->add_stat(_component_branch_target_buffer_glue    ->_stat);
    _stat->add_stat(_component_branch_target_buffer_register->_stat);

    log_printf(FUNC,Branch_Target_Buffer,FUNCTION,"End");
  };

}; // end namespace branch_target_buffer
}; // end namespace prediction_unit
}; // end namespace front_end
}; // end namespace multi_front_end
}; // end namespace core

}; // end namespace behavioural
}; // end namespace morpheo              
#endif
