aboutsummaryrefslogtreecommitdiff
path: root/devel/ice
diff options
context:
space:
mode:
authorMichael Gmelin <grembo@FreeBSD.org>2015-01-18 14:52:27 +0000
committerMichael Gmelin <grembo@FreeBSD.org>2015-01-18 14:52:27 +0000
commitde7c788839560f263c1351ab9148986e8d2b5163 (patch)
tree26f81301f5ffed502a182302f81761405d70df24 /devel/ice
parentbfad89828e64406c8ab7d1b65b6cb3a960e06b34 (diff)
downloadports-de7c788839560f263c1351ab9148986e8d2b5163.tar.gz
ports-de7c788839560f263c1351ab9148986e8d2b5163.zip
Import fix to extremely poor stringify performance in IcePy, see [1].
Notes
Notes: svn path=/head/; revision=377332
Diffstat (limited to 'devel/ice')
-rw-r--r--devel/ice/Makefile2
-rw-r--r--devel/ice/files/patch-py-modules-IcePy-Types.cpp137
-rw-r--r--devel/ice/files/patch-py-modules-IcePy-Types.h150
3 files changed, 278 insertions, 11 deletions
diff --git a/devel/ice/Makefile b/devel/ice/Makefile
index de9a8b7aa69c..bdfe21a8e4c6 100644
--- a/devel/ice/Makefile
+++ b/devel/ice/Makefile
@@ -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/
diff --git a/devel/ice/files/patch-py-modules-IcePy-Types.cpp b/devel/ice/files/patch-py-modules-IcePy-Types.cpp
index 160a9cc8a064..35a811e4eb75 100644
--- a/devel/ice/files/patch-py-modules-IcePy-Types.cpp
+++ b/devel/ice/files/patch-py-modules-IcePy-Types.cpp
@@ -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<Ice::Int>(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();
diff --git a/devel/ice/files/patch-py-modules-IcePy-Types.h b/devel/ice/files/patch-py-modules-IcePy-Types.h
new file mode 100644
index 000000000000..6c6d92ed8097
--- /dev/null
+++ b/devel/ice/files/patch-py-modules-IcePy-Types.h
@@ -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<PyObject*, int> 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<typename T>
++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<TypeInfo> 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;