annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3621
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
1
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
2 /* Dummy frozen modules initializer */
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
3
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
4 #include "Python.h"
f158edccc72c grand renaming; added copyright to some files
Guido van Rossum <guido@python.org>
parents: 2896
diff changeset
5
2896
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6 /* In order to test the support for frozen modules, by default we
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 define a single frozen module, __hello__. Loading it will print
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 some famous words... */
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
9
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 static unsigned char M___hello__[] = {
5885
76b1da21f3a8 Oops -- this contains frozen bytecode, but it was Python 1.4 bytecode!
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
11 99,0,0,0,0,1,0,0,0,115,15,0,0,0,127,0,
76b1da21f3a8 Oops -- this contains frozen bytecode, but it was Python 1.4 bytecode!
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
12 0,127,1,0,100,0,0,71,72,100,1,0,83,40,2,0,
76b1da21f3a8 Oops -- this contains frozen bytecode, but it was Python 1.4 bytecode!
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
13 0,0,115,14,0,0,0,72,101,108,108,111,32,119,111,114,
76b1da21f3a8 Oops -- this contains frozen bytecode, but it was Python 1.4 bytecode!
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
14 108,100,46,46,46,78,40,0,0,0,0,40,0,0,0,0,
76b1da21f3a8 Oops -- this contains frozen bytecode, but it was Python 1.4 bytecode!
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
15 115,8,0,0,0,104,101,108,108,111,46,112,121,115,1,0,
76b1da21f3a8 Oops -- this contains frozen bytecode, but it was Python 1.4 bytecode!
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
16 0,0,63,1,0,115,0,0,0,0,
2896
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 };
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18
3684
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
19 static struct _frozen _PyImport_FrozenModules[] = {
7845
949b59820185 Add primitive test for frozen package.
Guido van Rossum <guido@python.org>
parents: 5885
diff changeset
20 /* Test module */
5885
76b1da21f3a8 Oops -- this contains frozen bytecode, but it was Python 1.4 bytecode!
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
21 {"__hello__", M___hello__, 90},
7845
949b59820185 Add primitive test for frozen package.
Guido van Rossum <guido@python.org>
parents: 5885
diff changeset
22 /* Test package (negative size indicates package-ness) */
949b59820185 Add primitive test for frozen package.
Guido van Rossum <guido@python.org>
parents: 5885
diff changeset
23 {"__phello__", M___hello__, -90},
949b59820185 Add primitive test for frozen package.
Guido van Rossum <guido@python.org>
parents: 5885
diff changeset
24 {"__phello__.spam", M___hello__, 90},
2896
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 {0, 0, 0} /* sentinel */
f0d9f800a4aa Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 };
3684
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
27
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
28 /* Embedding apps may change this pointer to point to their favorite
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
29 collection of frozen modules: */
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
30
606c38535f30 New style interface via pointer variable.
Guido van Rossum <guido@python.org>
parents: 3621
diff changeset
31 struct _frozen *PyImport_FrozenModules = _PyImport_FrozenModules;