[PATCH 2 of 3] osutil: use PyLongObject on Python 3 for listdir_slot
Gregory Szorc
gregory.szorc at gmail.com
Sun Oct 9 11:57:23 UTC 2016
# HG changeset patch
# User Gregory Szorc <gregory.szorc at gmail.com>
# Date 1476013666 -7200
# Sun Oct 09 13:47:46 2016 +0200
# Node ID 6bdfe20ea811ac7e873072763d43f29c23edc409
# Parent 0cc68ebd34108cc609328379b46522b81f840851
osutil: use PyLongObject on Python 3 for listdir_slot
This code looks performance sensitive. So let's retain PyIntObject on
Python 2 and use PyLongObject explicitly on Python 3.
diff --git a/mercurial/osutil.c b/mercurial/osutil.c
--- a/mercurial/osutil.c
+++ b/mercurial/osutil.c
@@ -62,13 +62,21 @@ struct listdir_stat {
struct stat st;
};
#endif
+#ifdef IS_PY3K
+#define listdir_slot(name) \
+ static PyObject *listdir_stat_##name(PyObject *self, void *x) \
+ { \
+ return PyLong_FromLong(((struct listdir_stat *)self)->st.name); \
+ }
+#else
#define listdir_slot(name) \
static PyObject *listdir_stat_##name(PyObject *self, void *x) \
{ \
return PyInt_FromLong(((struct listdir_stat *)self)->st.name); \
}
+#endif
listdir_slot(st_dev)
listdir_slot(st_mode)
listdir_slot(st_nlink)
More information about the Mercurial-devel
mailing list