| 368 | } |
| 369 | |
| 370 | static PyObject* |
| 371 | NumExpr_print_state(NumExprObject *self, PyObject *args) { |
| 372 | printf( "Sizeof(NumExprObject): %zd\n", sizeof(NumExprObject) ); |
| 373 | printf( "Sizeof(self->ob_base): %zd\n", sizeof(self->ob_base) ); |
| 374 | printf( "Object base pointer: %p\n", &self->ob_base ); |
| 375 | printf( "\nProgram pointer: %p\n", self->program ); |
| 376 | printf( "program_len: %d\n", self->program_len ); |
| 377 | for( int I = 0; I < self->program_len; I++ ) { |
| 378 | printf( " #%d:: OP: %u, RET: %u, ARG1: %u, ARG2: %u, ARG3: %u\n", I, |
| 379 | self->program[I].op, self->program[I].ret, self->program[I].arg1, |
| 380 | self->program[I].arg2, self->program[I].arg3 ); |
| 381 | } |
| 382 | printf( "\nRegisters pointer: %p\n", self->registers ); |
| 383 | printf( "n_reg: %d\n", self->n_reg ); |
| 384 | printf( "n_array: %d\n", self->n_array ); |
| 385 | printf( "n_scalar: %d\n", self->n_scalar ); |
| 386 | printf( "n_temp: %d\n", self->n_temp ); |
| 387 | for( int J = 0; J < self->n_reg; J++ ) { |
| 388 | printf( " #%d:: mem: %p, dchar: %c, kind: %d, itemsize: %Id, stride: %Id\n", |
| 389 | J, self->registers[J].mem, self->registers[J].dchar, |
| 390 | self->registers[J].kind, (int)self->registers[J].itemsize, |
| 391 | (int)self->registers[J].stride ); |
| 392 | } |
| 393 | |
| 394 | printf( "\nScalar memory pointer: %p\n", self->scalar_mem ); |
| 395 | printf( "scalar_mem_size: %ld\n", self->scalar_mem_size ); |
| 396 | |
| 397 | |
| 398 | return Py_BuildValue(""); |
| 399 | } |
| 400 | |
| 401 | // C-api structures: |
| 402 | // https://docs.python.org/3/c-api/structures.html |
nothing calls this directly
no outgoing calls
no test coverage detected
searching dependent graphs…