summaryrefslogtreecommitdiffstats
path: root/Python/ceval.c
Commit message (Collapse)AuthorAgeFilesLines
* Renamed a local label that was accidentally grandly renamed toGuido van Rossum1997-08-051-3/+3
| | | | 'Py_Cleanup' back to 'cleanup'.
* The last of the mass checkins for separate (sub)interpreters.Guido van Rossum1997-08-021-9/+20
| | | | | | | Everything should now work again. See the comments for the .h files mass checkin (e.g. pystate.h) for more detail.
* Extend the "Don Beaudry hack" with "Guido's corollary" -- if the baseGuido van Rossum1997-07-311-10/+27
| | | | | class has a __class__ attribute, call that to create the new class. This allows us to write metaclasses purely in C!
* Moved PyEval_{Acquire,Release}Thread() to within the same #ifdefGuido van Rossum1997-07-191-21/+23
| | | | | | WITH_THREAD as PyEval_InitThreads(). Removed use of Py_SuppressPrintingFlag.
* PyEval_SaveThread() and PyEval_RestoreThread() now return/take aGuido van Rossum1997-07-181-6/+28
| | | | | | | | | | | | | | | | PyThreadState pointer instead of a (frame) PyObject pointer. This makes much more sense. It is backward incompatible, but that's no problem, because (a) the heaviest users are the Py_{BEGIN,END}_ ALLOW_THREADS macros here, which have been fixed too; (b) there are very few direct users; (c) those who use it are there will probably appreciate the change. Also, added new functions PyEval_AcquireThread() and PyEval_ReleaseThread() which allows the threads created by the thread module as well threads created by others (!) to set/reset the current thread, and at the same time acquire/release the interpreter lock. Much saner.
* Huge speedup by inlining some common integer operations:Guido van Rossum1997-07-171-5/+75
| | | | | | | int+int, int-int, int <compareop> int, and list[int]. (Unfortunately, int*int is way too much code to inline.) Also corrected a NULL that should have been a zero.
* PyObject_Compare can raise an exception now.Guido van Rossum1997-05-231-0/+7
|
* Py_FlushLine and PyFile_WriteString now return error indicatorsGuido van Rossum1997-05-221-12/+24
| | | | instead of calling PyErr_Clear(). Add checking of those errors.
* Plug leak of stack frame object in exception handling code.Guido van Rossum1997-05-201-9/+26
| | | | | Also delay DECREF calls until after the structures have been updated (for reentrancy awareness).
* Logic for enabling mac-specific signal handling fixed (Jack)Guido van Rossum1997-05-201-1/+1
|
* (int) cast for strlen() to keep picky compilers happy.Guido van Rossum1997-05-131-1/+1
|
* Instead of importing graminit.h whenever one of the three grammar 'root'Guido van Rossum1997-05-071-3/+3
| | | | symbols is needed, define these in Python.h with a Py_ prefix.
* Used operators from abstract.h where possible (arithmetic operators,Guido van Rossum1997-05-061-420/+30
| | | | | | get/set/del item). This removes a pile of duplication. There's no abstract operator for 'not' but I removed the function call for it anyway -- it's a little faster in-line.
* Massive changes for separate thread state management.Guido van Rossum1997-05-051-151/+263
| | | | | All per-thread globals are moved into a struct which is manipulated separately.
* Quickly renamed.Guido van Rossum1997-04-291-799/+798
|
* Clarify error message for unexpected keyword parameter.Guido van Rossum1997-03-101-1/+4
|
* *Don't* kill all local variables on function exit. This will be doneGuido van Rossum1997-02-141-12/+0
| | | | | | | | by the frameobject dealloc when it is time for the locals to go. When there's still a traceback object referencing this stack frame, we don't want the local variables to disappear yet. (Hmm... Shouldn't they be copied to the f_locals dictionary?)
* Two small changes:Guido van Rossum1997-01-271-5/+3
| | | | | | | | | - Use co->... instead of f->f_code->...; save an extra lookup of what we already have in a local variable). - Remove test for nlocals > 0 before setting fastlocals to f->f_localsplus; 0 is a rare case and the assignment is safe even then.
* Plug a leak with calling something other than a function or method isGuido van Rossum1997-01-271-4/+3
| | | | | | | 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.
* Patches for (two forms of) optional dynamic execution profiling --Guido van Rossum1997-01-241-0/+68
| | | | | | 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.
* Change the control flow for error handling in the function prelude toGuido van Rossum1997-01-241-23/+17
| | | | | jump to the "Kill locals" section at the end. Add #ifdef macintosh bandaid to make sure we call sigcheck() on the Mac.
* Kill all local variables on function return. This closes a giganticGuido van Rossum1997-01-211-0/+12
| | | | | leak of memory and file descriptors (thanks for Roj for reporting that!). Alas, the speed goes down by 5%. :-(
* Only call sigcheck() at the ticker code if we don't have true signals.Guido van Rossum1997-01-211-2/+6
| | | | | | | 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 ;-).
* Cleanup:Guido van Rossum1997-01-211-222/+10
| | | | | | | | | | - 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
* Changes for frame object speedup:Guido van Rossum1997-01-201-14/+2
| | | | | | - get fastlocals differently - call newframeobject() with fewer arguments - toss getowner(), which was unused anyway
* Add "if (x != NULL) continue;" (or similar for err==0) before theGuido van Rossum1997-01-181-18/+60
| | | | | break to most cases, as suggested by Tim Peters. This gives another 8-10% speedup.
* Use the stack size from the code object and the CO_MAXBLOCKS constantGuido van Rossum1997-01-171-2/+10
| | | | from compile.h. Remove all eval stack overflow checks.
* Rename DEBUG macro to Py_DEBUGGuido van Rossum1996-12-301-3/+3
|
* Moved the raise logic out of the main interpreter loop to a separate function.Guido van Rossum1996-12-101-60/+127
| | | | | | | | | | | | | | | The raise logic has one additional feature: if you raise <class>, <value> where <value> is not an instance, it will construct an instance using <value> as argument. If <value> is None, <class> is instantiated without arguments. If <value> is a tuple, it is used as the argument list. This feature is intended to make it easier to upgrade code from using string exceptions to using class exceptions; without this feature, you'd have to change every raise statement from ``raise X'' to ``raise X()'' and from ``raise X, y'' to ``raise X(y)''. The latter is still the recommended form (because it has no ambiguities about the number of arguments), but this change makes the transition less painful.
* Change the Don Beaudry hack into the Don B + Jim F hack; now, if *any*Guido van Rossum1996-12-051-28/+26
| | | | | | base class is special it gets invoked. Make gcc -Wall happy.
* New permission notice, includes CNRI.Guido van Rossum1996-10-251-13/+20
|
* Raise TypeError, not KeyError, on unknown keyword argument.Guido van Rossum1996-08-191-2/+1
|
* Don't test here for negative number to float power; that belongs inGuido van Rossum1996-08-161-9/+0
| | | | floatobject.c.
* Disable support for access statementGuido van Rossum1996-08-121-0/+28
|
* Better error message if stride used on normal sequence objectGuido van Rossum1996-07-301-2/+10
|
* Changes for slice and ellipsesGuido van Rossum1996-07-301-13/+67
|
* Renamed static pow() to powerop() to avoid name conflict in some compilers.Guido van Rossum1996-06-191-4/+4
|
* Removed some done "to do" items.Guido van Rossum1996-05-241-9/+3
| | | | Changed #ifdef DEBUG slightly.
* removed sime redundant header includes and decls.Guido van Rossum1996-05-231-8/+0
|
* changes for complex and power (**) operatorGuido van Rossum1996-01-121-0/+38
|
* don't return from main loop when error occursGuido van Rossum1995-12-101-1/+2
|
* spell TraceBack with capital BGuido van Rossum1995-09-181-1/+1
|
* empty kw dict is ok for builtinsGuido van Rossum1995-08-041-1/+6
|
* fix bogus DECREF in finally clauseGuido van Rossum1995-07-281-0/+1
|
* changes for keyword args to built-in functions and classesGuido van Rossum1995-07-261-19/+43
|
* keyword arguments and faster callsGuido van Rossum1995-07-181-364/+459
|
* 3rd arg for raise; INCOMPLETE keyword parameter passing (currently ↵Guido van Rossum1995-07-071-30/+151
| | | | f(kw=value) is seen as f('kw', value))
* fix dusty debugging macrosGuido van Rossum1995-03-291-1/+1
|
* remove unused code for tp_callGuido van Rossum1995-03-221-13/+1
|
* various tuple related optimizations; remove unused b/w compat code from ceval.cGuido van Rossum1995-03-091-74/+26
|