view Python/frozen.c @ 17104:a488a63cb867 legacy-trunk

Fix PyFrame_FastToLocals() and counterpart to deal with cells and frees. Note there doesn't seem to be any way to test LocalsToFast(), because the instructions that trigger it are illegal in nested scopes with free variables. Fix allocation strategy for cells that are also formal parameters. Instead of emitting LOAD_FAST / STORE_DEREF pairs for each parameter, have the argument handling code in eval_code2() do the right thing. A side-effect of this change is that cell variables that are also arguments are listed at the front of co_cellvars in the order they appear in the argument list.
author Jeremy Hylton <jeremy@alum.mit.edu>
date Wed, 21 Mar 2001 16:43:47 +0000
parents 6f6f965c5e2d
children 1f3c1e831f21
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... */

static unsigned char M___hello__[] = {
	99,0,0,0,0,1,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,
	115,8,0,0,0,104,101,108,108,111,46,112,121,115,1,0,
	0,0,63,1,0,115,0,0,0,0,
};

static struct _frozen _PyImport_FrozenModules[] = {
	/* Test module */
	{"__hello__", M___hello__, 90},
	/* Test package (negative size indicates package-ness) */
	{"__phello__", M___hello__, -90},
	{"__phello__.spam", M___hello__, 90},
	{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;