Commit Graph

5101 Commits

Author SHA1 Message Date
Guido van Rossum d0eb429b88 Plug a leak with calling something other than a function or method is
called with keyword arguments -- the keyword and value were leaked.
This affected for instance with a __call__() method.

Bug reported and fix supplied by Jim Fulton.
1997-01-27 21:30:09 +00:00
Guido van Rossum 950361c6ca Patches for (two forms of) optional dynamic execution profiling --
i.e., counting opcode frequencies, or (with DXPAIRS defined) opcode
pair frequencies.  Define DYNAMIC_EXECUTION_PROFILE on the command
line (for this file and for sysmodule.c) to enable.
1997-01-24 13:49:28 +00:00
Guido van Rossum 8c5df06ec7 Change the control flow for error handling in the function prelude to
jump to the "Kill locals" section at the end.  Add #ifdef macintosh
bandaid to make sure we call sigcheck() on the Mac.
1997-01-24 04:19:24 +00:00
Guido van Rossum 43f1b8d6e4 Added optional interface for dynamic execution profile (to be gathered
in ceval.c).
1997-01-24 04:07:45 +00:00
Guido van Rossum b3f515af64 Get the line number from PyCode_Addr2Line instead of believing
tb_lineno.  Store it in tb_lineno for the user.
1997-01-24 04:02:55 +00:00
Guido van Rossum 747596a491 When a recycled frame has more local+stack slots than needed,
give the extra slots to the stack rather than than forgetting about
them (this reduces the number of reallocs done).
1997-01-24 04:00:21 +00:00
Guido van Rossum 463e55a916 Two more arguments to newcodeobject -- first lineno and lineno table. 1997-01-24 03:58:52 +00:00
Guido van Rossum 99d182550b New magin number (because of linenumber table). 1997-01-24 03:44:53 +00:00
Guido van Rossum d031c89891 Marshal the line number table of code objects. 1997-01-24 03:44:17 +00:00
Guido van Rossum da4eb5c3b5 Instead of emitting SET_LINENO instructions, generate a line number
table which is incorporated in the code object.  This way, the runtime
overhead to keep track of line numbers is only incurred when an
exception has to be reported.
1997-01-24 03:43:35 +00:00
Guido van Rossum 767579854c Add co_firstlineno and co_lnotab, for the line number table generated
by the compiler (in lieu of SET_LINENO instructions).
1997-01-24 03:41:09 +00:00
Guido van Rossum f2b2dac5eb Initialize the ob_type field of PyAST_Type dynamically (in
initparser()) instead of statically (in the initializer).  The static
initialization, using the address of an object in a different DLL, is
too much for the Microsoft VC++ compiler, and we want to be able to
build this module as a separate DLL (it's nice to have but we don't
want to increase the core DLL's size by 25K).  This same trick has
been applied to a number of modules, e.g. NumPy and _tkinter.
1997-01-23 23:29:44 +00:00
Guido van Rossum ca756f2a1d Forget keeping track of whether a dictionary contains all interned
string keys.  Just doing a pointer compare before the string compare
(in fact before the hash compare!) is just as fast.
1997-01-23 19:39:29 +00:00
Guido van Rossum 4462e93259 Various notes added:
- -mt option for Solaris threads with Solaris compiler
- make clean when switching static link status for Linux
- DEC alpha --with-dec-threads option
- SunOS removed unnecessary warnings, mention -Xa for SunPro
- Setup.local file
- warn to try make clean after changing readline option
- mention --with-threads as alias for --with-thread
1997-01-22 21:00:32 +00:00
Guido van Rossum ec2f073a9c The usual 1997-01-22 20:54:01 +00:00
Guido van Rossum 44be35aca4 A number of new symbols have appeared (courtesy autoconf 2.12?) 1997-01-22 20:53:30 +00:00
Guido van Rossum 54d93d446b Add --with-dec-threads, for DEL Alpha, which requires -threads as the
*final* linker argument.  This implies --with-thread.

Reimplemented --with-threads as an alias for --with-thread.
1997-01-22 20:51:58 +00:00
Guido van Rossum e0e696282f Added PyCObject_Import. 1997-01-22 20:48:48 +00:00
Fred Drake 43d287ad73 (libparser.tex): Fix typo found by Mark Hammond. 1997-01-22 14:25:21 +00:00
Guido van Rossum c1ef39f795 Bump version to 1.5a1. 1997-01-22 03:46:13 +00:00
Guido van Rossum f631d13ac7 Bump install version to 1.5. 1997-01-22 03:45:38 +00:00
Guido van Rossum 728a09e0f6 Remove GetOwner, add GetBuildInfo... 1997-01-22 01:41:30 +00:00
Guido van Rossum 4ee5811bd8 Added getbuildinfo.c to the project. 1997-01-22 01:40:35 +00:00
Guido van Rossum 73e122f563 Fix splitext() to go up to the last dot, not the first. 1997-01-22 00:17:26 +00:00
Guido van Rossum 76f587b7f8 Avoid traceback in selection_own_get() when no Tk widget owns the
selection; return None instead.
1997-01-21 23:22:03 +00:00
Guido van Rossum b7cf5bb1c2 Darn. Updated version number for configure.in. 1997-01-21 22:03:53 +00:00
Guido van Rossum f78abae10f Let --with-threads be an alias for --with-thread. 1997-01-21 22:02:36 +00:00
Guido van Rossum a4240132ec Kill all local variables on function return. This closes a gigantic
leak of memory and file descriptors (thanks for Roj for reporting
that!).  Alas, the speed goes down by 5%. :-(
1997-01-21 21:18:36 +00:00
Guido van Rossum a04d47b319 Don't use static buffers internally for formatstring(). 1997-01-21 16:12:09 +00:00
Guido van Rossum 70d44787a3 Only call sigcheck() at the ticker code if we don't have true signals.
This is safe now that both intrcheck() and signalmodule.c schedule a
sigcheck() call via Py_AddPendingCall().

This gives another 7% speedup (never run such a test twice ;-).
1997-01-21 06:15:24 +00:00
Guido van Rossum fcdd0e40a4 Arrange for PyErr_CheckSignals() to be called via Py_AddPendingCall().
This avoids having to call sigcheck() (the same routine by its old
name :-) in the ticker code in ceval.c's main interpreter loop.
1997-01-21 06:13:09 +00:00
Guido van Rossum ad74fa6674 In the Unix version, arrange for sigcheck() to be called via
Py_AddPendingCall().  This avoids having to call sigcheck() in the
ticker code in ceval.c's main interpreter loop.
1997-01-21 06:00:33 +00:00
Guido van Rossum 1aa14838d2 Cleanup:
- fix bug in Py_MakePendingCalls() with threading
- fix return type of do_raise
- remove build_slice (same as PySlice_New)
- remove code inside #if 0
- remove code inside #ifdef CHECK_STACK
- remove code inside #ifdef SUPPORT_OBSOLETE_ACCESS
- comment about newimp.py should refer to ni.py
1997-01-21 05:34:20 +00:00
Guido van Rossum 554fa49500 get build info from elsewhere 1997-01-20 18:34:55 +00:00
Guido van Rossum 2fff2e6b05 work build# into version string 1997-01-20 18:34:26 +00:00
Guido van Rossum 3bb63a8dbe Bugfix: remove ref to fast before it's defined. 1997-01-20 04:29:16 +00:00
Guido van Rossum 768360243a Changes for frame object speedup:
- get fastlocals differently
- call newframeobject() with fewer arguments
- toss getowner(), which was unused anyway
1997-01-20 04:26:20 +00:00
Guido van Rossum f3e85a0356 Changes that appear to give another 12% speedup.
Rather than allocating a list object for the fast locals and another
(extensible one) for the value stack and allocating the block stack
dynamically, allocate the block stack with a fixed size (CO_MAXBLOCKS
from compile.h), and stick the locals and value stack at the end of
the object (this is now possible since the stack size is known
beforehand).  Get rid of the owner field and the nvalues argument --
it is available in the code object, like nlocals.

This requires small changes in ceval.c only.
1997-01-20 04:20:52 +00:00
Guido van Rossum cdf578ebaf New lay-out of frame object, for fewer mallocs.
See frameobject.c checkin message.
1997-01-20 04:16:40 +00:00
Guido van Rossum 7eb883a18e Remove unused variable. 1997-01-18 20:04:05 +00:00
Guido van Rossum 8d75161671 Intern the string "__complex__". 1997-01-18 08:04:16 +00:00
Guido van Rossum 7b89b6a660 Intern all names and varnames in newcodeobject(), plus those string
literals that look like identifiers.  Also intern all strings used as
names during the compilation.
1997-01-18 08:02:57 +00:00
Guido van Rossum a412d24be0 Intern the various string objects created to speed up lookups. 1997-01-18 07:59:12 +00:00
Guido van Rossum b56933ed2e Intern the strings "__builtins__". 1997-01-18 07:58:41 +00:00
Guido van Rossum c6d0670f1b Intern the strings created in getattr() and setattr(). 1997-01-18 07:57:16 +00:00
Guido van Rossum 2a61e7428d String interning. 1997-01-18 07:55:05 +00:00
Guido van Rossum ee5cf9b672 Bump API version due to the various speedup hacks. 1997-01-18 07:54:03 +00:00
Guido van Rossum 1e6e9a2368 Two speedup hacks. Caching the hash saves recalculation of a string's
hash value.  Interning strings (which requires hash caching) tries to
ensure that only one string object with a given value exists, so
equality tests are one pointer comparison.  Together, these can speed
the interpreter up by as much as 20%.  Each costs the size of a long
or pointer per string object.  In addition, interned strings live
until the end of times.  If you are concerned about memory footprint,
simply comment the #define out here (and rebuild everything!).
1997-01-18 07:53:23 +00:00
Guido van Rossum 3dfd53b4c8 Add "if (x != NULL) continue;" (or similar for err==0) before the
break to most cases, as suggested by Tim Peters.  This gives another
8-10% speedup.
1997-01-18 02:46:13 +00:00
Guido van Rossum 04f2b453bb Version 1.1. Fix memory leak and expensive comparison with None. 1997-01-18 02:20:37 +00:00