It brings for example > 1.2 speedup on s4u-dht-kademlia.
"Filtering netzones is only possible for subclasses of kernel::routing::NetZoneImpl");
for (auto const& elem : current->get_children()) {
get_filtered_netzones_recursive(elem, whereto);
"Filtering netzones is only possible for subclasses of kernel::routing::NetZoneImpl");
for (auto const& elem : current->get_children()) {
get_filtered_netzones_recursive(elem, whereto);
- if (elem->get_impl() == dynamic_cast<T*>(elem->get_impl()))
- whereto->push_back(dynamic_cast<T*>(elem->get_impl()));
+ T* elem_impl = dynamic_cast<T*>(elem->get_impl());
+ if (elem_impl != nullptr)
+ whereto->push_back(elem_impl);
StateType* Container::get_state(const std::string& name)
{
StateType* Container::get_state(const std::string& name)
{
- StateType* ret = dynamic_cast<StateType*>(type_->by_name(name));
+ StateType* ret = static_cast<StateType*>(type_->by_name(name));
ret->set_calling_container(this);
return ret;
}
LinkType* Container::get_link(const std::string& name)
{
ret->set_calling_container(this);
return ret;
}
LinkType* Container::get_link(const std::string& name)
{
- LinkType* ret = dynamic_cast<LinkType*>(type_->by_name(name));
+ LinkType* ret = static_cast<LinkType*>(type_->by_name(name));
ret->set_calling_container(this);
return ret;
}
VariableType* Container::get_variable(const std::string& name)
{
ret->set_calling_container(this);
return ret;
}
VariableType* Container::get_variable(const std::string& name)
{
- VariableType* ret = dynamic_cast<VariableType*>(type_->by_name(name));
+ VariableType* ret = static_cast<VariableType*>(type_->by_name(name));
ret->set_calling_container(this);
return ret;
}
ret->set_calling_container(this);
return ret;
}
deque = &comm_queue_;
for (auto it = deque->begin(); it != deque->end(); it++) {
deque = &comm_queue_;
for (auto it = deque->begin(); it != deque->end(); it++) {
- CommImplPtr comm = boost::dynamic_pointer_cast<CommImpl>(std::move(*it));
+ CommImplPtr comm = boost::static_pointer_cast<CommImpl>(std::move(*it));
if (comm->type == CommImpl::Type::SEND) {
other_user_data = comm->src_data_;
if (comm->type == CommImpl::Type::SEND) {
other_user_data = comm->src_data_;
simgrid::kernel::activity::ExecImpl::on_creation.connect([](simgrid::kernel::activity::ExecImplPtr activity){
if (activity->host_ != nullptr) { // We only run on one host
simgrid::s4u::Host* host = activity->host_;
simgrid::kernel::activity::ExecImpl::on_creation.connect([](simgrid::kernel::activity::ExecImplPtr activity){
if (activity->host_ != nullptr) { // We only run on one host
simgrid::s4u::Host* host = activity->host_;
- if (dynamic_cast<simgrid::s4u::VirtualMachine*>(activity->host_))
- host = dynamic_cast<simgrid::s4u::VirtualMachine*>(activity->host_)->get_pm();
+ simgrid::s4u::VirtualMachine* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(host);
+ if (vm != nullptr)
+ host = vm->get_pm();
host->extension<HostEnergy>()->update();
}
host->extension<HostEnergy>()->update();
}
simgrid::kernel::activity::ExecImpl::on_creation.connect([](simgrid::kernel::activity::ExecImplPtr activity){
if (activity->host_ != nullptr) { // We only run on one host
simgrid::s4u::Host* host = activity->host_;
simgrid::kernel::activity::ExecImpl::on_creation.connect([](simgrid::kernel::activity::ExecImplPtr activity){
if (activity->host_ != nullptr) { // We only run on one host
simgrid::s4u::Host* host = activity->host_;
- if (dynamic_cast<simgrid::s4u::VirtualMachine*>(activity->host_))
- host = dynamic_cast<simgrid::s4u::VirtualMachine*>(activity->host_)->get_pm();
+ simgrid::s4u::VirtualMachine* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(host);
+ if (vm != nullptr)
+ host = vm->get_pm();
host->extension<HostLoad>()->add_activity(activity);
host->extension<HostLoad>()->update(); // If the system was idle until now, we need to update *before*
host->extension<HostLoad>()->add_activity(activity);
host->extension<HostLoad>()->update(); // If the system was idle until now, we need to update *before*
simgrid::kernel::activity::ExecImpl::on_completion.connect([](simgrid::kernel::activity::ExecImplPtr activity){
if (activity->host_ != nullptr) { // We only run on one host
simgrid::s4u::Host* host = activity->host_;
simgrid::kernel::activity::ExecImpl::on_completion.connect([](simgrid::kernel::activity::ExecImplPtr activity){
if (activity->host_ != nullptr) { // We only run on one host
simgrid::s4u::Host* host = activity->host_;
- if (dynamic_cast<simgrid::s4u::VirtualMachine*>(activity->host_))
- host = dynamic_cast<simgrid::s4u::VirtualMachine*>(activity->host_)->get_pm();
+ simgrid::s4u::VirtualMachine* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(host);
+ if (vm != nullptr)
+ host = vm->get_pm();
host->extension<HostLoad>()->update();
}
host->extension<HostLoad>()->update();
}
- simgrid::simix::simcall([this] { dynamic_cast<kernel::activity::CommImpl*>(pimpl_.get())->cancel(); });
+ simgrid::simix::simcall([this] { static_cast<kernel::activity::CommImpl*>(pimpl_.get())->cancel(); });
state_ = State::CANCELED;
return this;
}
state_ = State::CANCELED;
return this;
}
- simix::simcall([this] {
- dynamic_cast<kernel::activity::ExecImpl*>(pimpl_.get())->start(flops_amount_, 1. / priority_, bound_);
- });
+ simix::simcall(
+ [this] { static_cast<kernel::activity::ExecImpl*>(pimpl_.get())->start(flops_amount_, 1. / priority_, bound_); });
state_ = State::STARTED;
on_start(Actor::self());
return this;
state_ = State::STARTED;
on_start(Actor::self());
return this;
- simgrid::simix::simcall([this] { dynamic_cast<kernel::activity::ExecImpl*>(pimpl_.get())->cancel(); });
+ simgrid::simix::simcall([this] { static_cast<kernel::activity::ExecImpl*>(pimpl_.get())->cancel(); });
state_ = State::CANCELED;
return this;
}
state_ = State::CANCELED;
return this;
}
- simix::simcall([this] { dynamic_cast<kernel::activity::IoImpl*>(pimpl_.get())->start(size_, type_); });
+ simix::simcall([this] { static_cast<kernel::activity::IoImpl*>(pimpl_.get())->start(size_, type_); });
state_ = State::STARTED;
return this;
}
Io* Io::cancel()
{
state_ = State::STARTED;
return this;
}
Io* Io::cancel()
{
- simgrid::simix::simcall([this] { dynamic_cast<kernel::activity::IoImpl*>(pimpl_.get())->cancel(); });
+ simgrid::simix::simcall([this] { static_cast<kernel::activity::IoImpl*>(pimpl_.get())->cancel(); });
state_ = State::CANCELED;
return this;
}
state_ = State::CANCELED;
return this;
}
{
XBT_DEBUG("Destroy sleep synchro %p", synchro.get());
simgrid::kernel::activity::SleepImplPtr sleep =
{
XBT_DEBUG("Destroy sleep synchro %p", synchro.get());
simgrid::kernel::activity::SleepImplPtr sleep =
- boost::dynamic_pointer_cast<simgrid::kernel::activity::SleepImpl>(synchro);
+ boost::static_pointer_cast<simgrid::kernel::activity::SleepImpl>(synchro);
if (sleep->surf_action_) {
sleep->surf_action_->unref();
if (sleep->surf_action_) {
sleep->surf_action_->unref();
void smpi_comm_copy_buffer_callback(smx_activity_t synchro, void *buff, size_t buff_size)
{
simgrid::kernel::activity::CommImplPtr comm =
void smpi_comm_copy_buffer_callback(smx_activity_t synchro, void *buff, size_t buff_size)
{
simgrid::kernel::activity::CommImplPtr comm =
- boost::dynamic_pointer_cast<simgrid::kernel::activity::CommImpl>(synchro);
+ boost::static_pointer_cast<simgrid::kernel::activity::CommImpl>(synchro);
int src_shared = 0;
int dst_shared = 0;
size_t src_offset = 0;
int src_shared = 0;
int dst_shared = 0;
size_t src_offset = 0;
template <class T> T const& get_value() const
{
template <class T> T const& get_value() const
{
- return dynamic_cast<const TypedConfigurationElement<T>&>(*this).get_value();
+ return static_cast<const TypedConfigurationElement<T>&>(*this).get_value();
}
template <class T> void set_value(T value)
{
}
template <class T> void set_value(T value)
{
- dynamic_cast<TypedConfigurationElement<T>&>(*this).set_value(std::move(value));
+ static_cast<TypedConfigurationElement<T>&>(*this).set_value(std::move(value));
}
template <class T> void set_default_value(T value)
{
}
template <class T> void set_default_value(T value)
{
- dynamic_cast<TypedConfigurationElement<T>&>(*this).set_default_value(std::move(value));
+ static_cast<TypedConfigurationElement<T>&>(*this).set_default_value(std::move(value));
}
void unset_default() { isdefault = false; }
bool is_default() const { return isdefault; }
}
void unset_default() { isdefault = false; }
bool is_default() const { return isdefault; }