Mercurial > cpython-lru_cache-weakref
view Python/frozen.c @ 24155:9456a2ccda61 legacy-trunk
The Py_REF_DEBUG/COUNT_ALLOCS/Py_TRACE_REFS macro minefield: added
more trivial lexical helper macros so that uses of these guys expand
to nothing at all when they're not enabled. This should help sub-
standard compilers that can't do a good job of optimizing away the
previous "(void)0" expressions.
Py_DECREF: There's only one definition of this now. Yay! That
was that last one in the family defined multiple times in an #ifdef
maze.
Py_FatalError(): Changed the char* signature to const char*.
_Py_NegativeRefcount(): New helper function for the Py_REF_DEBUG
expansion of Py_DECREF. Calling an external function cuts down on
the volume of generated code. The previous inline expansion of abort()
didn't work as intended on Windows (the program often kept going, and
the error msg scrolled off the screen unseen). _Py_NegativeRefcount
calls Py_FatalError instead, which captures our best knowledge of
how to abort effectively across platforms.
| author | Tim Peters <tim.peters@gmail.com> |
|---|---|
| date | Tue, 09 Jul 2002 02:57:01 +0000 |
| parents | 46275f9e7407 |
| children | cf5928fab108 |
line wrap: on
line source
/* Dummy frozen modules initializer */ #include "Python.h" /* In order to test the support for frozen modules, by default we define a single frozen module, __hello__. Loading it will print some famous words... */ /* To regenerate this data after the bytecode or marshal format has changed, go to ../Tools/freeze/ and freeze the hello.py file; then copy and paste the appropriate bytes from M___main__.c. */ static unsigned char M___hello__[] = { 99,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0, 0,115,15,0,0,0,127,0,0,127,1,0,100,0,0,71, 72,100,1,0,83,40,2,0,0,0,115,14,0,0,0,72, 101,108,108,111,32,119,111,114,108,100,46,46,46,78,40,0, 0,0,0,40,0,0,0,0,40,0,0,0,0,40,0,0, 0,0,115,8,0,0,0,104,101,108,108,111,46,112,121,115, 1,0,0,0,63,1,0,0,0,115,0,0,0,0, }; #define SIZE (int)sizeof(M___hello__) static struct _frozen _PyImport_FrozenModules[] = { /* Test module */ {"__hello__", M___hello__, SIZE}, /* Test package (negative size indicates package-ness) */ {"__phello__", M___hello__, -SIZE}, {"__phello__.spam", M___hello__, SIZE}, {0, 0, 0} /* sentinel */ }; /* Embedding apps may change this pointer to point to their favorite collection of frozen modules: */ struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules;
