From owner-svn-ports-head@FreeBSD.ORG Sun Jan 18 14:52:29 2015 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3BB9B23D; Sun, 18 Jan 2015 14:52:29 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 265BD7EC; Sun, 18 Jan 2015 14:52:29 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t0IEqTWj074408; Sun, 18 Jan 2015 14:52:29 GMT (envelope-from grembo@FreeBSD.org) Received: (from grembo@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t0IEqSqU074402; Sun, 18 Jan 2015 14:52:28 GMT (envelope-from grembo@FreeBSD.org) Message-Id: <201501181452.t0IEqSqU074402@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: grembo set sender to grembo@FreeBSD.org using -f From: Michael Gmelin Date: Sun, 18 Jan 2015 14:52:28 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r377332 - in head/devel/ice: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 18 Jan 2015 14:52:29 -0000 Author: grembo Date: Sun Jan 18 14:52:27 2015 New Revision: 377332 URL: https://svnweb.freebsd.org/changeset/ports/377332 QAT: https://qat.redports.org/buildarchive/r377332/ Log: Import fix to extremely poor stringify performance in IcePy, see [1]. [1] https://www.zeroc.com/forums/patches/6379-ice-3-5-1-patch-fix-extremely-poor-icepy-stringify-performance.html Approved by: mentors (implicit) Added: head/devel/ice/files/patch-py-modules-IcePy-Types.h (contents, props changed) Modified: head/devel/ice/Makefile head/devel/ice/files/patch-py-modules-IcePy-Types.cpp Modified: head/devel/ice/Makefile ============================================================================== --- head/devel/ice/Makefile Sun Jan 18 14:35:00 2015 (r377331) +++ head/devel/ice/Makefile Sun Jan 18 14:52:27 2015 (r377332) @@ -3,7 +3,7 @@ PORTNAME= Ice PORTVERSION= 3.5.1 -PORTREVISION= 5 +PORTREVISION= 6 CATEGORIES= devel MASTER_SITES= http://download.zeroc.com/Ice/3.5/ Modified: head/devel/ice/files/patch-py-modules-IcePy-Types.cpp ============================================================================== --- head/devel/ice/files/patch-py-modules-IcePy-Types.cpp Sun Jan 18 14:35:00 2015 (r377331) +++ head/devel/ice/files/patch-py-modules-IcePy-Types.cpp Sun Jan 18 14:52:27 2015 (r377332) @@ -1,6 +1,24 @@ ---- py/modules/IcePy/Types.cpp.orig 2013-03-11 15:19:47.000000000 +0000 -+++ py/modules/IcePy/Types.cpp 2014-09-08 14:21:13.335195726 +0000 -@@ -1232,11 +1232,15 @@ IcePy::StructInfo::marshal(PyObject* p, const Ice::OutputStreamPtr& os, ObjectMa +--- py/modules/IcePy/Types.cpp.orig 2015-01-18 15:25:00.277654935 +0100 ++++ py/modules/IcePy/Types.cpp 2015-01-18 15:24:52.737609935 +0100 +@@ -915,7 +915,7 @@ + } + + void +-IcePy::PrimitiveInfo::print(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory*) ++IcePy::PrimitiveInfo::print(PyObject* value, PrintHelper& out, PrintObjectHistory*) + { + if(!validate(value)) + { +@@ -1050,7 +1050,7 @@ + } + + void +-IcePy::EnumInfo::print(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory*) ++IcePy::EnumInfo::print(PyObject* value, PrintHelper& out, PrintObjectHistory*) + { + if(!validate(value)) + { +@@ -1232,11 +1232,15 @@ { assert(PyObject_IsInstance(p, pythonType.get()) == 1); // validate() should have caught this. @@ -17,7 +35,7 @@ } else { -@@ -1266,7 +1270,9 @@ IcePy::StructInfo::marshal(PyObject* p, const Ice::OutputStreamPtr& os, ObjectMa +@@ -1266,7 +1270,9 @@ if(optional && _variableLength) { @@ -28,7 +46,16 @@ } } -@@ -1402,11 +1408,15 @@ IcePy::SequenceInfo::marshal(PyObject* p, const Ice::OutputStreamPtr& os, Object +@@ -1305,7 +1311,7 @@ + } + + void +-IcePy::StructInfo::print(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory* history) ++IcePy::StructInfo::print(PyObject* value, PrintHelper& out, PrintObjectHistory* history) + { + if(!validate(value)) + { +@@ -1402,11 +1408,15 @@ { PrimitiveInfoPtr pi = PrimitiveInfoPtr::dynamicCast(elementType); @@ -45,7 +72,7 @@ } else if(elementType->wireSize() > 1) { -@@ -1490,7 +1500,9 @@ IcePy::SequenceInfo::marshal(PyObject* p, const Ice::OutputStreamPtr& os, Object +@@ -1490,7 +1500,9 @@ if(optional && elementType->variableLength()) { @@ -56,7 +83,25 @@ } } -@@ -2480,11 +2492,15 @@ IcePy::DictionaryInfo::marshal(PyObject* p, const Ice::OutputStreamPtr& os, Obje +@@ -1559,7 +1571,7 @@ + } + + void +-IcePy::SequenceInfo::print(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory* history) ++IcePy::SequenceInfo::print(PyObject* value, PrintHelper& out, PrintObjectHistory* history) + { + if(!validate(value)) + { +@@ -2397,7 +2409,7 @@ + } + + void +-IcePy::CustomInfo::print(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory* history) ++IcePy::CustomInfo::print(PyObject* value, PrintHelper& out, PrintObjectHistory* history) + { + if(!validate(value)) + { +@@ -2480,11 +2492,15 @@ const Ice::Int sz = p == Py_None ? 0 : static_cast(PyDict_Size(p)); @@ -73,7 +118,7 @@ } else { -@@ -2523,7 +2539,9 @@ IcePy::DictionaryInfo::marshal(PyObject* p, const Ice::OutputStreamPtr& os, Obje +@@ -2523,7 +2539,9 @@ if(optional && _variableLength) { @@ -84,7 +129,34 @@ } } -@@ -2958,9 +2976,13 @@ IcePy::ProxyInfo::optionalFormat() const +@@ -2597,7 +2615,7 @@ + } + + void +-IcePy::DictionaryInfo::print(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory* history) ++IcePy::DictionaryInfo::print(PyObject* value, PrintHelper& out, PrintObjectHistory* history) + { + if(!validate(value)) + { +@@ -2798,7 +2816,7 @@ + } + + void +-IcePy::ClassInfo::print(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory* history) ++IcePy::ClassInfo::print(PyObject* value, PrintHelper& out, PrintObjectHistory* history) + { + if(!validate(value)) + { +@@ -2863,7 +2881,7 @@ + } + + void +-IcePy::ClassInfo::printMembers(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory* history) ++IcePy::ClassInfo::printMembers(PyObject* value, PrintHelper& out, PrintObjectHistory* history) + { + if(base) + { +@@ -2958,9 +2976,13 @@ void IcePy::ProxyInfo::marshal(PyObject* p, const Ice::OutputStreamPtr& os, ObjectMap*, bool optional, const Ice::StringSeq*) { @@ -99,7 +171,7 @@ } if(p == Py_None) -@@ -2978,7 +3000,9 @@ IcePy::ProxyInfo::marshal(PyObject* p, const Ice::OutputStreamPtr& os, ObjectMap +@@ -2978,7 +3000,9 @@ if(optional) { @@ -110,3 +182,48 @@ } } +@@ -3011,7 +3035,7 @@ + } + + void +-IcePy::ProxyInfo::print(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory*) ++IcePy::ProxyInfo::print(PyObject* value, PrintHelper& out, PrintObjectHistory*) + { + if(!validate(value)) + { +@@ -3463,7 +3487,7 @@ + } + + void +-IcePy::ExceptionInfo::print(PyObject* value, IceUtilInternal::Output& out) ++IcePy::ExceptionInfo::print(PyObject* value, PrintHelper& out) + { + if(!PyObject_IsInstance(value, pythonType.get())) + { +@@ -3481,7 +3505,7 @@ + } + + void +-IcePy::ExceptionInfo::printMembers(PyObject* value, IceUtilInternal::Output& out, PrintObjectHistory* history) ++IcePy::ExceptionInfo::printMembers(PyObject* value, PrintHelper& out, PrintObjectHistory* history) + { + if(base) + { +@@ -4209,7 +4233,7 @@ + assert(info); + + ostringstream ostr; +- IceUtilInternal::Output out(ostr); ++ PrintHelper out(ostr); + PrintObjectHistory history; + history.index = 0; + info->print(value, out, &history); +@@ -4234,7 +4258,7 @@ + assert(info); + + ostringstream ostr; +- IceUtilInternal::Output out(ostr); ++ PrintHelper out(ostr); + info->print(value, out); + + string str = ostr.str(); Added: head/devel/ice/files/patch-py-modules-IcePy-Types.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/devel/ice/files/patch-py-modules-IcePy-Types.h Sun Jan 18 14:52:27 2015 (r377332) @@ -0,0 +1,150 @@ +--- py/modules/IcePy/Types.h.orig 2015-01-18 15:25:04.917707935 +0100 ++++ py/modules/IcePy/Types.h 2015-01-18 15:24:54.689631935 +0100 +@@ -69,6 +69,50 @@ + std::map objects; + }; + ++struct PrintHelper ++{ ++ std::ostream& os; ++ Ice::Long indent; ++ ++ PrintHelper(std::ostream& o): os(o), indent(0) {} ++ void newline() ++ { ++ os << "\n" << std::string(indent * 4, ' '); ++ os.flush(); ++ } ++ ++ void sb() ++ { ++ newline(); ++ os << "{"; ++ ++indent; ++ } ++ ++ void eb() ++ { ++ --indent; ++ newline(); ++ os << "}"; ++ } ++}; ++ ++template ++inline PrintHelper& ++operator<<(PrintHelper& ph, const T& val) ++{ ++ ph.os << val; ++ return ph; ++} ++ ++template<> ++inline PrintHelper& ++operator<<(PrintHelper& ph, const IceUtilInternal::NextLine&) ++{ ++ ph.newline(); ++ return ph; ++} ++ ++ + // + // The delayed nature of class unmarshaling in the Ice protocol requires us to + // handle unmarshaling using a callback strategy. An instance of UnmarshalCallback +@@ -127,7 +171,7 @@ + virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, PyObject*, void*, bool, + const Ice::StringSeq* = 0) = 0; + +- virtual void print(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*) = 0; ++ virtual void print(PyObject*, PrintHelper&, PrintObjectHistory*) = 0; + }; + typedef IceUtil::Handle TypeInfoPtr; + +@@ -164,7 +208,7 @@ + virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, PyObject*, void*, bool, + const Ice::StringSeq* = 0); + +- virtual void print(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ virtual void print(PyObject*, PrintHelper&, PrintObjectHistory*); + + const Kind kind; + }; +@@ -193,7 +237,7 @@ + virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, PyObject*, void*, bool, + const Ice::StringSeq* = 0); + +- virtual void print(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ virtual void print(PyObject*, PrintHelper&, PrintObjectHistory*); + + const std::string id; + const PyObjectHandle pythonType; +@@ -240,7 +284,7 @@ + virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, PyObject*, void*, bool, + const Ice::StringSeq* = 0); + +- virtual void print(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ virtual void print(PyObject*, PrintHelper&, PrintObjectHistory*); + + virtual void destroy(); + +@@ -278,7 +322,7 @@ + virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, PyObject*, void*, bool, + const Ice::StringSeq* = 0); + +- virtual void print(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ virtual void print(PyObject*, PrintHelper&, PrintObjectHistory*); + + virtual void destroy(); + +@@ -338,7 +382,7 @@ + virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, PyObject*, void*, bool, + const Ice::StringSeq* = 0); + +- virtual void print(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ virtual void print(PyObject*, PrintHelper&, PrintObjectHistory*); + + virtual void destroy(); + +@@ -371,7 +415,7 @@ + const Ice::StringSeq* = 0); + virtual void unmarshaled(PyObject*, PyObject*, void*); + +- virtual void print(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ virtual void print(PyObject*, PrintHelper&, PrintObjectHistory*); + + virtual void destroy(); + +@@ -420,11 +464,11 @@ + virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, PyObject*, void*, bool, + const Ice::StringSeq* = 0); + +- virtual void print(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ virtual void print(PyObject*, PrintHelper&, PrintObjectHistory*); + + virtual void destroy(); + +- void printMembers(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ void printMembers(PyObject*, PrintHelper&, PrintObjectHistory*); + + const std::string id; + const Ice::Int compactId; +@@ -462,7 +506,7 @@ + virtual void unmarshal(const Ice::InputStreamPtr&, const UnmarshalCallbackPtr&, PyObject*, void*, bool, + const Ice::StringSeq* = 0); + +- virtual void print(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ virtual void print(PyObject*, PrintHelper&, PrintObjectHistory*); + + virtual void destroy(); + +@@ -482,8 +526,8 @@ + void marshal(PyObject*, const Ice::OutputStreamPtr&, ObjectMap*); + PyObject* unmarshal(const Ice::InputStreamPtr&); + +- void print(PyObject*, IceUtilInternal::Output&); +- void printMembers(PyObject*, IceUtilInternal::Output&, PrintObjectHistory*); ++ void print(PyObject*, PrintHelper&); ++ void printMembers(PyObject*, PrintHelper&, PrintObjectHistory*); + + std::string id; + bool preserve;