typedef struct {
PyObject_HEAD
+ Py_hash_t hash;
mpd_t dec;
mpd_uint_t data[_Py_DEC_MINALLOC];
} PyDecObject;
return NULL;
}
+ dec->hash = -1;
+
MPD(dec)->flags = MPD_STATIC|MPD_STATIC_DATA;
MPD(dec)->exp = 0;
MPD(dec)->digits = 0;
/* Always uses the module context */
static Py_hash_t
-dec_hash(PyObject *v)
+_dec_hash(PyDecObject *v)
{
#if defined(CONFIG_64) && _PyHASH_BITS == 61
/* 2**61 - 1 */
goto finish;
}
+static Py_hash_t
+dec_hash(PyDecObject *self)
+{
+ if (self->hash == -1) {
+ self->hash = _dec_hash(self);
+ }
+
+ return self->hash;
+}
+
/* __reduce__ */
static PyObject *
dec_reduce(PyObject *self, PyObject *dummy UNUSED)