Mercurial > cpython-lru_cache-weakref
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 |
| 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 | 6 /* In order to test the support for frozen modules, by default we |
| 7 define a single frozen module, __hello__. Loading it will print | |
| 8 some famous words... */ | |
| 9 | |
| 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 | 17 }; |
| 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 | 25 {0, 0, 0} /* sentinel */ |
| 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; |
