From 2da37b5efa70c34aa3665c947b0ef10c4e2a3ae7 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 6 Mar 2019 20:43:59 -0800 Subject: [PATCH] python: Change || to && for MessageBuffers in connectPorts. The connectPorts function currently checks if *either* of the peers in a port connection are a MessageBuffer, and if so will ignore the connection. This CL changes that || into a && so that *both* of the peers need to be a Ruby types (either a MessageBuffer or Network) for the connection to be ignored. That makes it easier to contain that abnormal behavior to those types instead of having it apply even when other types of port owners are involved. Unfortunately the number of interesting Ruby types is unbounded, but these are the types with ports as of today. This mechanism will hopefully be replacedall together so this should be a temporary issue. Change-Id: I140498770e5d37eb2abd3d99261d47e111f1c8ab Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/17031 Reviewed-by: Nikos Nikoleris Reviewed-by: Jason Lowe-Power Reviewed-by: Andreas Sandberg Maintainer: Jason Lowe-Power --- src/python/pybind11/pyobject.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/python/pybind11/pyobject.cc b/src/python/pybind11/pyobject.cc index a2da96d3b..bd363a132 100644 --- a/src/python/pybind11/pyobject.cc +++ b/src/python/pybind11/pyobject.cc @@ -50,7 +50,9 @@ #include "dev/net/etherint.hh" #include "dev/net/etherobject.hh" #include "mem/mem_object.hh" +#include "mem/ruby/network/Network.hh" #include "mem/ruby/slicc_interface/AbstractController.hh" +#include "mem/ruby/system/Sequencer.hh" #include "sim/full_system.hh" namespace py = pybind11; @@ -84,8 +86,11 @@ connectPorts(SimObject *o1, const std::string &name1, int i1, MessageBuffer *mb1, *mb2; mb1 = dynamic_cast(o1); mb2 = dynamic_cast(o2); + Network *nw1, *nw2; + nw1 = dynamic_cast(o1); + nw2 = dynamic_cast(o2); - if (mb1 || mb2) { + if ((mb1 || nw1) && (mb2 || nw2)) { // No need to connect anything here currently. MessageBuffer // connections in Python only serve to print the connections in // the config output. -- 2.30.2