Skip to content

Commit 29a2af9

Browse files
committed
set priorities to fix initialization order of constructors
1 parent 3d4a3fd commit 29a2af9

File tree

1 file changed

+8
-3
lines changed
  • graalpython/com.oracle.graal.python.cext/src

1 file changed

+8
-3
lines changed

graalpython/com.oracle.graal.python.cext/src/capi.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,14 @@ static void initialize_type_structure(PyTypeObject* structure, const char* typna
6565
type_handle->tp_basicsize = basicsize;
6666
}
6767

68+
#define ctor_hidden(a) __attribute__((constructor (10 ## a
69+
#define ctor(a) ctor_hidden(a))))
70+
#define init_hidden(a, b) initialize ## a ## _ ## b ## _gen
71+
#define init(a, b) init_hidden(a, b)
72+
6873
#define initialize_type(typeobject, typename, struct) \
69-
__attribute__((constructor)) \
70-
static void initialize_ ## typeobject ## _gen(void) { \
74+
ctor(__COUNTER__) \
75+
static void init(__COUNTER__, typeobject)(void) { \
7176
initialize_type_structure(&typeobject, \
7277
#typename, \
7378
polyglot_ ## struct ## _typeid()); \
@@ -158,7 +163,7 @@ static void initialize_bufferprocs() {
158163
polyglot_invoke(PY_TRUFFLE_CEXT, "PyTruffle_SetBufferProcs", native_to_java((PyObject*)&PyBuffer_Type), (getbufferproc)bufferdecorator_getbuffer, (releasebufferproc)NULL);
159164
}
160165

161-
__attribute__((constructor))
166+
__attribute__((constructor (20000)))
162167
static void initialize_capi() {
163168
// initialize global variables like '_Py_NoneStruct', etc.
164169
initialize_globals();

0 commit comments

Comments
 (0)