0
0
mirror of https://github.com/python/cpython.git synced 2024-12-01 11:15:56 +01:00
Commit Graph

844 Commits

Author SHA1 Message Date
Barry Warsaw
e42b18f9d1 eval_code2(): collapsed the implementations of UNPACK_TUPLE and
UNPACK_LIST byte codes and added a third code path that allows
generalized sequence unpacking.  Now both syntaxes:

    a, b, c = seq
    [a, b, c] = seq

can be used to unpack any sequence with the exact right number of
items.

unpack_sequence(): out-lined implementation of generalized sequence
unpacking.  tuple and list unpacking are still inlined.
1997-08-25 22:13:04 +00:00
Barry Warsaw
4249f54b28 cmp_exception gets promoted (essentially) to the C API function
PyErr_GivenExceptionMatches().

set_exc_info(): make sure to normalize exceptions.

do_raise(): Use PyErr_NormalizeException() if type is a class.

loop_subscript(): Use PyErr_ExceptionMatches() instead of raw pointer
compare for PyExc_IndexError.
1997-08-22 21:26:19 +00:00
Barry Warsaw
c0dc92af7d Three new C API functions:
- int PyErr_GivenExceptionMatches(obj1, obj2)

  Returns 1 if obj1 and obj2 are the same object, or if obj1 is an
  instance of type obj2, or of a class derived from obj2

- int PyErr_ExceptionMatches(obj)

  Higher level wrapper around PyErr_GivenExceptionMatches() which uses
  PyErr_Occurred() as obj1.  This will be the more commonly called
  function.

- void PyErr_NormalizeException(typeptr, valptr, tbptr)

  Normalizes exceptions, and places the normalized values in the
  arguments.  If type is not a class, this does nothing.  If type is a
  class, then it makes sure that value is an instance of the class by:

  1. if instance is of the type, or a class derived from type, it does
     nothing.

  2. otherwise it instantiates the class, using the value as an
     argument.  If value is None, it uses an empty arg tuple, and if
     the value is a tuple, it uses just that.
1997-08-22 21:22:58 +00:00
Barry Warsaw
cde8b1ba0c Two new built-in functions: issubclass() and isinstance(). Both take
classes as their second arguments.  The former takes a class as the
first argument and returns true iff first is second, or is a subclass
of second.

The latter takes any object as the first argument and returns true iff
first is an instance of the second, or any subclass of second.

Also, change all occurances of pointer compares against
PyExc_IndexError with PyErr_ExceptionMatches() calls.
1997-08-22 21:14:38 +00:00
Guido van Rossum
cd649654d7 Reverse the search order for the Don Beaudry hook so that the first
class wins.  Makes more sense.
1997-08-22 16:56:16 +00:00
Guido van Rossum
e3c0d5eb34 Added new Py_IsInitalized() API function to test the 'initialized' flag. 1997-08-22 04:20:13 +00:00
Guido van Rossum
5f896a4de0 Added missing newline to warning msg 1997-08-21 02:28:19 +00:00
Guido van Rossum
aa61505fd2 Use a counter instead of a Boolean to check for initialized; n calls
to Py_Initialize will be undone by n calls to Py_Uninitialize.
1997-08-20 22:40:18 +00:00
Guido van Rossum
54dec59b56 set sharedlib extensions properly for NeXT (Ted Horst) 1997-08-16 14:38:09 +00:00
Guido van Rossum
7c14103d77 Keep gcc -Wall happy 1997-08-15 02:52:08 +00:00
Guido van Rossum
49b1226781 Use _beginthread() and _endthread() in favor of CreateThread() and
ExitThread().  As discussed in c.l.p, this takes care of
initialization and finalization of thread-local storage allocated by
the C runtime system.  Not sure whether non-MS compilers grok this
though (but who cares :-).
1997-08-14 20:12:58 +00:00
Guido van Rossum
d47a0a86b4 Added Jim Fulton's PyImport_Import(), which calls whatever
__import__() hook is currently installed.
1997-08-14 20:11:26 +00:00
Guido van Rossum
741689d5f3 Use string interning and caching to get speedups on the mac (Jack). 1997-08-12 14:53:39 +00:00
Guido van Rossum
e5b4026881 Use strerror on the mac if using MSL (Jack). 1997-08-12 14:51:52 +00:00
Guido van Rossum
622f73f188 Remove unised variable 1997-08-07 19:22:48 +00:00
Guido van Rossum
cc283f56a7 Merge Py_Cleanup() into Py_Finalize(). Call the various small Fini()
functions.
1997-08-05 02:22:03 +00:00
Guido van Rossum
085d269f1d New rules for deleting modules. Rather than having an elaborate
scheme based on object's types, have a simple two-phase scheme based
on object's *names*:

	/* To make the execution order of destructors for global
	   objects a bit more predictable, we first zap all objects
	   whose name starts with a single underscore, before we clear
	   the entire dictionary.  We zap them by replacing them with
	   None, rather than deleting them from the dictionary, to
	   avoid rehashing the dictionary (to some extent). */
1997-08-05 02:20:51 +00:00
Guido van Rossum
f9c90c533e Renamed a local label that was accidentally grandly renamed to
'Py_Cleanup' back to 'cleanup'.
1997-08-05 02:18:01 +00:00
Guido van Rossum
25ce566661 The last of the mass checkins for separate (sub)interpreters.
Everything should now work again.

See the comments for the .h files mass checkin (e.g. pystate.h) for
more detail.
1997-08-02 03:10:38 +00:00
Guido van Rossum
40b33c648a Removed fatal errors from Py_Initmodule4() (and thus from
Py_Initmodule(), which is a macro wrapper around it).

The return value is now a NULL pointer if the initialization failed.
This may make old modules fail with a SEGFAULT, since they don't
expect this kind of failure.  That's OK, since (a) it "never" happens,
and (b) they would fail with a fatal error otherwise, anyway.

Tons of extension modules should now check the return value of
Py_Initmodule*() -- that's on my TODO list.
1997-08-02 03:07:46 +00:00
Guido van Rossum
55b9ab5bdb Extend the "Don Beaudry hack" with "Guido's corollary" -- if the base
class has a __class__ attribute, call that to create the new class.
This allows us to write metaclasses purely in C!
1997-07-31 03:54:02 +00:00
Guido van Rossum
6fc06e770f Plugged a leak. (The same as the one plugged in compile.c -- forgot
to free lnotab).
1997-07-26 23:30:18 +00:00
Guido van Rossum
275558cb9f Plug a leak in code_dealloc() (and reordered the deallocs to match the
order of the variables in the declarations).

Also removed an entry in the TODO list that's done.
1997-07-25 20:13:49 +00:00
Guido van Rossum
ef3d02ebb9 Removed some variables that are used to exchange data between import.c and
importdl.c: the MAXSUFFIXSIZE macro is now defined in importdl.h, and
the modules dictionary is now passed using PyImport_GetModuleDict().

Also undefine USE_SHLIB for AIX -- in AIX 4.2 and up, dlfcn.h exists
but we don't want to use it.
1997-07-21 14:54:36 +00:00
Guido van Rossum
a94145118a frozenmain.c is now also in the library,
with entry point Py_FrozenMain().
1997-07-19 21:59:47 +00:00
Guido van Rossum
019db5d73e Oops -- this contains frozen bytecode, but it was Python 1.4 bytecode! 1997-07-19 21:54:24 +00:00
Guido van Rossum
9cc8a20cd2 Moved PyEval_{Acquire,Release}Thread() to within the same #ifdef
WITH_THREAD as PyEval_InitThreads().

Removed use of Py_SuppressPrintingFlag.
1997-07-19 19:55:50 +00:00
Guido van Rossum
534ac094f9 Removed a bunch of extern declarations of functions that are now
properly declared in Python.h.
1997-07-19 19:51:43 +00:00
Guido van Rossum
8fb26ede51 Make it return a _const_ char*. 1997-07-19 19:48:41 +00:00
Guido van Rossum
f6ca6aa869 New build procedure. 1997-07-19 19:39:57 +00:00
Guido van Rossum
3768fb1097 Tracking changes to Py_Main():
- Got rid of inspection of some environment variables.

- Got rid of Py_GetProgramName() and related logic.

- Print the version header *after* successful initialization.
1997-07-19 19:24:41 +00:00
Guido van Rossum
ad6dfda9af Moved some stuff here from main.c (part of a big restructuring - wait
for more!).

- The global flags that can be set from environment variables are now
set in Py_Initialize (except the silly Py_SuppressPrint, which no
longer exists).  This saves duplicate code in frozenmain.c and main.c.

- Py_GetProgramName() is now here; added Py_SetProgramName().  An
embedding program should no longer provide Py_GetProgramName(),
instead it should call Py_SetProgramName() *before* calling
Py_Initialize().
1997-07-19 19:17:22 +00:00
Guido van Rossum
0c88e1fd96 Remove confusing usage comments at end. 1997-07-19 00:02:22 +00:00
Guido van Rossum
2fca21f762 PyEval_SaveThread() and PyEval_RestoreThread() now return/take a
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.
1997-07-18 23:56:58 +00:00
Guido van Rossum
c12da6980f Huge speedup by inlining some common integer operations:
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.
1997-07-17 23:12:42 +00:00
Guido van Rossum
b65e85cb73 Fix problem discovered by Greg McFarlane: when an imported module
replaces its own entry in sys.module, reference count errors ensue;
even if there is no reference count problem, it would be preferable
for the import to yield the new thing in sys.modules anyway (if only
because that's what later imports will yield).  This opens the road to
an official hack to implement a __getattr__ like feature for modules:
stick an instance in sys.modules[__name__].
1997-07-10 18:00:45 +00:00
Guido van Rossum
db9e20f418 Fix bug reported by Just: anonymous arguments used for tuples should
have a unique name, otherwise they get squished by locals2fast (or
fast2locals, I dunno) when the debugger is invoked before they have
been transferred to real locals.
1997-07-10 01:06:53 +00:00
Guido van Rossum
46ff1903a3 Add default case (standard conformance) to avoid piling up
system specific #ifdefs.
1997-06-02 22:25:45 +00:00
Guido van Rossum
296b4751e1 Can't return 0 from void function... 1997-05-23 00:19:20 +00:00
Guido van Rossum
c8b6df9004 PyObject_Compare can raise an exception now. 1997-05-23 00:06:51 +00:00
Guido van Rossum
7e8d26d78c PyFile_WriteString now returns an error indicator instead of calling
PyErr_Clear().  Add checking of those errors.
1997-05-22 22:35:47 +00:00
Guido van Rossum
78a1ed3d70 Py_FlushLine and PyFile_WriteString now return error indicators
instead of calling PyErr_Clear().  Add checking of those errors.
1997-05-22 22:35:04 +00:00
Guido van Rossum
be27026c09 Py_FlushLine and PyFile_WriteString now return error indicators
instead of calling PyErr_Clear().  Add checking of those errors.
1997-05-22 22:26:18 +00:00
Guido van Rossum
64f9105fb7 DG/UX thread patches (Ross Andrus) 1997-05-22 20:41:59 +00:00
Guido van Rossum
b2c8ec4b75 Set sys.executable to full path of python (from argv[0]). 1997-05-22 20:41:20 +00:00
Guido van Rossum
23c9446d9a Added a space in an error message 1997-05-22 20:21:30 +00:00
Guido van Rossum
f9cba090f9 Don't use function prototypes in function definition headers. 1997-05-20 22:23:34 +00:00
Guido van Rossum
2f75b29630 Indent the #error directives so a classic K&R cpp doesn't see them. 1997-05-20 22:18:48 +00:00
Guido van Rossum
df4c308f5a Plug leak of stack frame object in exception handling code.
Also delay DECREF calls until after the structures have been updated
(for reentrancy awareness).
1997-05-20 17:06:11 +00:00
Guido van Rossum
df0d00e29b Logic for enabling mac-specific signal handling fixed (Jack) 1997-05-20 15:57:49 +00:00
Guido van Rossum
1254d79dfa Use #ifdef in stead of #if (Jack) 1997-05-20 15:57:25 +00:00
Guido van Rossum
c8fba8ee14 Add pthred-std define for Linux. 1997-05-15 12:24:53 +00:00
Guido van Rossum
af5dfb4ceb One last rename glitch: import_modules -> _PyImport_Modules. 1997-05-14 17:36:12 +00:00
Guido van Rossum
d6353e2c0e Support for various versions of the pthread draft. 1997-05-13 17:51:13 +00:00
Guido van Rossum
5f15b96c36 (int) cast for strlen() to keep picky compilers happy. 1997-05-13 17:50:01 +00:00
Guido van Rossum
b6a7f77c9f Oops -- missed FloatingPointError in renaming. 1997-05-09 03:03:23 +00:00
Guido van Rossum
9a0f04d4cd Get rid of obsolete support for access statement. 1997-05-09 00:58:02 +00:00
Guido van Rossum
ee2373b930 Oops, missed some renamings. 1997-05-07 23:51:07 +00:00
Guido van Rossum
b05a5c7698 Instead of importing graminit.h whenever one of the three grammar 'root'
symbols is needed, define these in Python.h with a Py_ prefix.
1997-05-07 17:46:13 +00:00
Guido van Rossum
666b17a280 New dir() function --
- uses abstract interface where possible
- uses __members__ and __methods__
- returns [] when an object has no info available
1997-05-06 16:36:57 +00:00
Guido van Rossum
478e718aca Keep MS compiler happy: use (int)strlen() when comparing; make sure
not to use kill().
1997-05-06 15:24:59 +00:00
Guido van Rossum
fc49073cd0 Used operators from abstract.h where possible (arithmetic operators,
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.
1997-05-06 15:06:49 +00:00
Guido van Rossum
fdf95dd525 Checkin of Jack's buffer mods.
Not really checked, but didn't fail any tests either...
1997-05-05 22:15:02 +00:00
Guido van Rossum
13454c3f9c Fix old typo PyArgs_VaParse -> PyArg_VaParse.
(Redoing the checking without merging in Jack's buffer mods.)
1997-05-05 21:57:29 +00:00
Guido van Rossum
a027efa5bf Massive changes for separate thread state management.
All per-thread globals are moved into a struct which is manipulated
separately.
1997-05-05 20:56:21 +00:00
Guido van Rossum
73237c54b4 Only use PyCode_Addr2Line to get tb_lineno when Py_OptimizeFlag is set. 1997-05-05 20:53:25 +00:00
Guido van Rossum
9218b70bdc Remove 2 out of 3 __FreeBSD__ tests.
These are no longer needed as of FreeBSD 2.0.5, according to
Thomas Gellekum <tg@ihf.rwth-aachen.de>.
1997-05-05 15:03:26 +00:00
Guido van Rossum
f4806c2a85 Add detach call so threads are GC'ed. 1997-04-30 19:59:22 +00:00
Guido van Rossum
bc2472db8e Avoid some potential (though unlikely) sprintf buffer overflows. 1997-04-30 19:07:54 +00:00
Guido van Rossum
15e33a4c42 Avoid sprintf buffer overflow if more than 9999 arguments. 1997-04-30 19:00:27 +00:00
Guido van Rossum
d11bfdd9f5 Ugly hack for SGI IRIX 6.2. Apparently _POSIX_THREADS is defined even
when the pthread package is not installed.  configure knows better, so
#undef _POSIX_THREADS when pthread.h does not exist.
1997-04-29 21:48:34 +00:00
Guido van Rossum
bb5c6f8529 Oops, forgot one: inittab. 1997-04-29 20:42:30 +00:00
Guido van Rossum
0bac33b420 Oops, forgot one: inittab. 1997-04-29 20:24:10 +00:00
Guido van Rossum
79f25d9a7b Quickly renamed the remaining files -- this directory is done. 1997-04-29 20:08:16 +00:00
Guido van Rossum
65bf9f265e Quickly renamed. 1997-04-29 18:33:38 +00:00
Guido van Rossum
373c869a6a Quickly renamed. Also removed the long comment explaining why this is
better than the old error API.
1997-04-29 18:22:47 +00:00
Guido van Rossum
b209a116cf Quickly renamed. 1997-04-29 18:18:01 +00:00
Guido van Rossum
62cb0bafe2 Moved to ../Modules. 1997-04-29 15:50:32 +00:00
Guido van Rossum
58a6ac55d2 Removed cgensupport.[co] (to ../Modules). 1997-04-29 15:42:53 +00:00
Guido van Rossum
c474deaaf6 Expand one level of symbolic link in sys.argv[0] before inserting its
dirname in sys.path.  This means that you can create a symbolic link
foo in /usr/local/bin pointing to /usr/yourname/src/foo/foo.py, and
then invoking foo will insert /usr/yourname/src/foo in sys.path, not
/usr/local/bin.  This makes it easier to have multifile programs
(before, the program would have to do an os.readlink(sys.argv[0])
itself and insert the resulting directory in sys.path -- Grail does
this).

Note that the expansion is only used for sys.path; sys.argv[0] is
still the original, unadorned filename (/usr/local/bin/foo in the
example).
1997-04-25 15:38:31 +00:00
Guido van Rossum
03a7466b8f OK, ready to make 'assert' a keyword (instead of '__assert__'). 1997-04-16 00:34:46 +00:00
Guido van Rossum
7844e38a98 Keep Microsoft VC happy. 1997-04-11 20:44:04 +00:00
Guido van Rossum
6bf62dad9e Keep gcc -Wall and Microsoft VC happy. 1997-04-11 20:37:35 +00:00
Guido van Rossum
1d2e240954 (Jack:) On the Mac, don't automatically enable dynamic loading. 1997-04-11 19:22:06 +00:00
Guido van Rossum
62bf108392 (Jack:) Don't define TRUE and FALSE if already defined. 1997-04-11 19:19:46 +00:00
Guido van Rossum
6976a52099 (Jack:) On the Mac, use standard strerror() if using MSL C-library. 1997-04-11 19:18:23 +00:00
Guido van Rossum
644a12b00c Tweaks to keep the Microsoft compiler quier. 1997-04-09 19:24:53 +00:00
Guido van Rossum
5f5e817e00 Support for alternative string quotes (a"xx", b"xx", c"xx", ...).
In interactive mode, do generate code for single-string statements.
1997-04-06 03:41:40 +00:00
Guido van Rossum
2a7f58de1c Allow passing a .pyo file.
Print correct name in fatal error from PyErr_Print.
1997-04-02 05:28:38 +00:00
Guido van Rossum
228d7f3f67 Added assert statement. 1997-04-02 05:24:36 +00:00
Guido van Rossum
8ecd1ad785 Added assert grammar. 1997-04-02 05:24:08 +00:00
Guido van Rossum
c6472e9ee1 1. Add string conversions to int(), long(), float(). (Not to complex()!)
2. Fix two bugs in complex():

   - Memory leak when using complex(classinstance) -- r was never
   DECREF'ed.

   - Conversion of the second argument, if not complex, was done using
   the type vector of the 1st.
1997-03-31 17:15:43 +00:00
Guido van Rossum
45b83915f8 New form of PyFPE_END_PROTECT macro. 1997-03-14 04:32:50 +00:00
Guido van Rossum
6af0c00ab6 Fix dumb bug calling parsestrplus with wrong node as argument.
Add prototypes for parsestr() and parsestrplus() (unrelated, but
seemed to make sense.)
1997-03-11 21:25:55 +00:00
Guido van Rossum
1c6a459921 Define __debug__ as 0 if -O is given, 1 otherwise. Also test for
errors in initializing the dictionary.
1997-03-11 18:43:26 +00:00
Guido van Rossum
7c53111d5b Added support for ``if __debug__:'' -- if -O is given, this form is
recognized by the code generator and code generation for the test and
the subsequent suite is suppressed.

One must write *exactly* ``if __debug__:'' or ``elif __debug__:'' --
no parentheses or operators must be present, or the optimization is
not carried through.  Whitespace doesn't matter.  Other uses of
__debug__ will find __debug__ defined as 0 or 1 in the __builtin__
module.
1997-03-11 18:42:21 +00:00
Guido van Rossum
0824f63cfc When -O is given, use ".pyo" instead of ".pyc". 1997-03-11 18:37:35 +00:00
Guido van Rossum
c43b685054 Clarify error message for unexpected keyword parameter. 1997-03-10 22:58:23 +00:00
Guido van Rossum
82598051e6 Greatly renamed. Not a very thorough job -- I'm going to restructure
it anyway.
1997-03-05 00:20:32 +00:00
Guido van Rossum
8e793d925c Add global Py_OptimizeFlag. SET_LINENO is omitted again unless this is
nonzero.
1997-03-03 19:13:14 +00:00
Guido van Rossum
0ae748d3c4 Changes for Lee Busby's SIGFPE patch set.
New file pyfpe.c and exception FloatingPointError.
Surround some f.p. operations with PyFPE macro brackets.
1997-02-14 22:58:07 +00:00
Guido van Rossum
0f4bbd2f34 Keep gcc -Wall happy. 1997-02-14 21:12:56 +00:00
Guido van Rossum
2dc466169e Oops, remove an unused variable from PyErr_Format(). 1997-02-14 20:57:31 +00:00
Guido van Rossum
7433b12a5c Added new global flag variable Py_InteractiveFlag and new function
Py_FdIsInteractive().  The flag is supposed to be set by the -i
command line option.  The function is supposed to be called instead of
isatty().  This is used for Lee Busby's wish #1, to have an option
that pretends stdin is interactive even when it really isn't.
1997-02-14 19:45:36 +00:00
Guido van Rossum
1548bacb14 Added convenience function PyErr_Format(exception, formatstring, ...) -> NULL. 1997-02-14 17:09:47 +00:00
Guido van Rossum
0d85be19e2 *Don't* kill all local variables on function exit. This will be done
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?)
1997-02-14 16:32:14 +00:00
Guido van Rossum
e8811f85ed Added intern() function. 1997-02-14 15:48:05 +00:00
Guido van Rossum
deb0c5e66c Two small changes:
- 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.
1997-01-27 23:42:36 +00:00
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
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
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
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
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
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
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
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
98a9b312e8 Marshal the new stacksize item in code objects. 1997-01-17 21:07:08 +00:00
Guido van Rossum
7af8130857 Working semaphore implementation by Sjoerd. 1997-01-17 21:06:41 +00:00
Guido van Rossum
dd5db43905 New MAGIC number (code objects have one more item when marshalled). 1997-01-17 21:06:11 +00:00
Guido van Rossum
62f7d15d0b Use the stack size from the code object and the CO_MAXBLOCKS constant
from compile.h.  Remove all eval stack overflow checks.
1997-01-17 21:05:28 +00:00
Guido van Rossum
8b993a98db Add co_stacksize field to codeobject structure, and stacksize argument
to PyCode_New() argument list.  Move MAXBLOCKS constant to conpile.h.

Added accurate calculation of the actual stack size needed by the
generated code.

Also commented out all fprintf statements (except for a new one to
diagnose stack underflow, and one in #ifdef'ed out code), and added
some new TO DO suggestions (now that the stacksize is taken of the TO
DO list).
1997-01-17 21:04:03 +00:00
Guido van Rossum
635abd24f0 Check for duplicate keyword arguments at compile time. 1997-01-06 22:56:52 +00:00
Guido van Rossum
8f49e12a0e Make builtin_module_names a tuple instead of a list. 1997-01-06 22:55:54 +00:00
Guido van Rossum
408027ea46 Rename DEBUG macro to Py_DEBUG 1996-12-30 16:17:54 +00:00
Guido van Rossum
0aa9ee65ab Moved the raise logic out of the main interpreter loop to a separate function.
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.
1996-12-10 18:07:35 +00:00
Guido van Rossum
c1547d930f Better way to handle 64-bit ints, keeping gcc -Wall happy.
Tested with AMK's help.
1996-12-10 15:39:04 +00:00
Guido van Rossum
1a2c5cbcc4 Add unistd.h to make gcc -Wall happy. 1996-12-10 15:37:36 +00:00
Guido van Rossum
067998f35e Add const to error and newstring functions 1996-12-10 15:33:34 +00:00
Guido van Rossum
80bb9655f0 Keep gcc -Wall happy. 1996-12-05 23:27:02 +00:00
Guido van Rossum
ed0af8fe70 Support __complex__ method on instances, for complex() conversion.
Keep gcc -Wall happy.
1996-12-05 23:18:18 +00:00
Guido van Rossum
150b2df682 Change the Don Beaudry hack into the Don B + Jim F hack; now, if *any*
base class is special it gets invoked.

Make gcc -Wall happy.
1996-12-05 23:17:11 +00:00
Guido van Rossum
3afb5959aa Some extra flags that an HPUX user wants me to add. 1996-12-05 23:15:35 +00:00
Guido van Rossum
b0c168cbe8 Tentative changes to make this work better on 64-bit machines.
A plain int that doesn't fit in 32 bits will be marshalled using a new
type.  32 bits machines can't handle this and will issue a warning.
1996-12-05 23:15:02 +00:00
Guido van Rossum
d266eb460e New permission notice, includes CNRI. 1996-10-25 14:44:06 +00:00
Guido van Rossum
b75fba04c7 Forget about Ellipses b/w compatibility. 1996-10-16 04:18:36 +00:00
Guido van Rossum
e449af7da9 Ellipses -> Ellipsis rename (the dictionary really says that it should
be Ellipsis!).
Bumped the API version because a linker-visible symbol is affected.
Old C code will still compile -- there's a b/w compat macro.
Similarly, old Python code will still run, builtin exports both
Ellipses and Ellipsis.
1996-10-11 16:25:41 +00:00
Guido van Rossum
cf1474b73a Sjoerd's thread changes (including down_sema typo fix).
Note: waitflag not supported on NT.
1996-10-08 14:17:53 +00:00
Guido van Rossum
452a9833c9 Added line number to most compile-time error messages. 1996-09-17 14:32:04 +00:00
Guido van Rossum
9b38a145e2 Rationalized MS ifdefs 1996-09-11 23:12:24 +00:00
Guido van Rossum
cc88341e6d Changes to setpythonpath():
Test for / as well as for SEP for MS filenames.
Drop trailing separator from sys.path[0] for MS and Unix filenames.
1996-09-10 14:44:21 +00:00
Guido van Rossum
b072150d7f Stupid bug: complex(x,y) would yield x+xj 1996-09-07 15:55:27 +00:00
Guido van Rossum
57b1822459 *** empty log message *** 1996-08-29 18:10:41 +00:00
Guido van Rossum
927f6e68fb Needed more includes... 1996-08-29 18:10:30 +00:00
Guido van Rossum
bae29713ec *** empty log message *** 1996-08-29 17:48:26 +00:00
Guido van Rossum
6eea32622c typo (#indef -> #undef) 1996-08-26 14:58:54 +00:00
Guido van Rossum
d8a6d1c2e7 Afterthough: leave both leading underscores in,
so __spam becomes _ClassName__spam.
1996-08-24 07:54:27 +00:00
Guido van Rossum
fe2236f3c8 Oops need to mangle global statement separately 1996-08-24 07:29:04 +00:00
Guido van Rossum
8ff077b094 Name mangling, what the heck! 1996-08-24 06:21:31 +00:00
Guido van Rossum
8b9ea873ad Use MS_DLL_ID as sys.winver 1996-08-23 18:14:47 +00:00
Guido van Rossum
ac279109d4 PYTHONWIN -> MS_COREDLL 1996-08-22 23:10:58 +00:00
Guido van Rossum
c1d5053882 Add needed #include <ctype.h> 1996-08-21 23:38:24 +00:00
Guido van Rossum
f1d7413445 Add explicit #undef _POSIX_THREADS for use on Solaris 2.5 (Sjoerd). 1996-08-21 14:39:29 +00:00
Guido van Rossum
504f4a9901 Don't require <dlfcn.h> -- rely on existence of dlopen(). 1996-08-20 19:59:07 +00:00
Guido van Rossum
7cf1fcf347 Always include config.h 1996-08-19 22:12:39 +00:00
Guido van Rossum
1e6124902a Many little fixes:
- support for SCO_SV dynamic loading
- on Mac, auto-detect dynamic loading by __CFM68K__ or _powerc)
- on Mac, long shared library extension is .cfm68k.slb or .ppc.slb
- on hp, don't redefine hpux if already defined
- add __file__ property to successfully loaded module
1996-08-19 22:12:10 +00:00
Guido van Rossum
71bd363d9c getprogramname -> Py_GetProgramName. 1996-08-19 22:09:38 +00:00
Guido van Rossum
6d43c5de5a Raise TypeError, not KeyError, on unknown keyword argument. 1996-08-19 22:09:16 +00:00
Guido van Rossum
3f3bb3d3c9 Added *PyMarshal_WriteObjectToString() (moved the relevant code there
from marshal_loads()).
1996-08-19 22:07:17 +00:00
Guido van Rossum
aa35465ccf Support for keyword arguments (PyArg_ParseTupleAndKeywords) donated by
Geoff Philbrick <philbric@delphi.hks.com> (slightly changed by me).

Also a little change to make the file acceptable to K&R C compilers
(HPUX, SunOS 4.x).
1996-08-19 19:32:04 +00:00
Guido van Rossum
bf51afa049 Don't test here for negative number to float power; that belongs in
floatobject.c.
1996-08-16 20:49:17 +00:00
Guido van Rossum
79d96d6bff Don't die in resizestring() on filter(<func>, ""). 1996-08-16 20:44:34 +00:00
Guido van Rossum
0dfcf753ad Disable support for access statement 1996-08-12 22:00:53 +00:00
Guido van Rossum
0bbf253e97 Insert "./" in front of pathname when it contains no '/' (if USE_SHLIB) 1996-08-09 20:55:05 +00:00
Guido van Rossum
1a62311cfb Changes necessary for AIX. 1996-08-08 18:53:41 +00:00
Guido van Rossum
1741d60725 Added casts from unsigned char to char when calling rds_object() on
frozen code.
1996-08-08 18:52:59 +00:00
Guido van Rossum
15cc9a0a76 Removed unused var; added error check for ``lambda: x=1''. 1996-08-08 18:51:04 +00:00
Guido van Rossum
fe4b6ee775 Include mymath.h instead of declaring prototypes for math functions.
Fix leak and unchecked error in complex().
1996-08-08 18:49:41 +00:00
Guido van Rossum
9caf77a485 Put definition of _REENTRANT in config.h 1996-08-01 00:52:26 +00:00
Guido van Rossum
d5962adb44 Changes for AIX sharedlibs. 1996-07-31 22:44:53 +00:00
Guido van Rossum
3823420ca4 If NO_DYNAMIC_LINK is defined, load_dynamic_module() will always fail. 1996-07-31 17:55:19 +00:00
Guido van Rossum
5e41644ddd Added _REENTRANT definition 1996-07-31 17:52:04 +00:00
Guido van Rossum
94a9667f1a Always insert script directory in front of sys.path -- if there's no
sys.argv, insert "".  Note that "." is removed as a default component
of the path (see changes to getpath.c and Setup.in).
1996-07-30 20:35:50 +00:00
Guido van Rossum
3b9c6677f8 Better error message if stride used on normal sequence object 1996-07-30 18:40:29 +00:00
Guido van Rossum
6ffd553899 Add 'Ellipses' object. 1996-07-30 18:37:55 +00:00
Guido van Rossum
8861b74445 Changes for slice and ellipses 1996-07-30 16:49:37 +00:00
Guido van Rossum
3ecebf1732 Changes needed by NeXT (the only platform that seems to use this). 1996-07-30 16:48:31 +00:00
Guido van Rossum
a63d9f4d9f As a side effect of calling PySys_SetArgv (setpythonargv), the
directory containing argv[0] is inserted in front of sys.path.
If argv[0] contains no directory, an empty string is inserted.
If argv is empty, nothing happens.
1996-07-24 01:31:37 +00:00
Guido van Rossum
42cd305b25 new .pyc magic number (** operator) 1996-07-21 02:28:18 +00:00
Guido van Rossum
7cffd1322b added 1996 1996-07-21 02:28:11 +00:00
Guido van Rossum
530956d247 Py_complex; and WITHOUT_COMPLEX added to getargs.c 1996-07-21 02:27:43 +00:00
Guido van Rossum
6f489d989d Slightly different Windows ifdefs 1996-06-28 20:15:15 +00:00
Guido van Rossum
236f62da7a Corrections to aix_loaderror(), by Manus Hand. 1996-06-26 21:07:08 +00:00
Guido van Rossum
f21506076d Jeremy's patches for more robust handling of unmarshallable types. 1996-06-26 20:41:23 +00:00
Guido van Rossum
0e41c8c848 Cosmetic change to the dox_8x3 hack. 1996-06-20 14:18:34 +00:00
Guido van Rossum
3b4da59cd6 Renamed static pow() to powerop() to avoid name conflict in some compilers. 1996-06-19 21:49:17 +00:00
Guido van Rossum
7c46a920ae New style interface via pointer variable. 1996-06-17 17:07:23 +00:00
Guido van Rossum
cfd0a22252 struct frozen is now struct _frozen and comes from import.h. 1996-06-17 17:06:34 +00:00
Guido van Rossum
8fa9b6f932 Define sys.prefix and sys.exec_prefix (see Modules/getpath.c; from Makefile). 1996-06-17 17:02:48 +00:00
Guido van Rossum
6602099e7c Got rid of florida hack and made it work with Solaris 2.5 pthreads.
Wonder if this will break it on all other platforms :-)
1996-06-11 18:32:18 +00:00
Guido van Rossum
582646aecc grand renaming; added copyright to some files 1996-05-28 22:30:17 +00:00
Guido van Rossum
0a8626eb88 Plug memory leak (variable names in code objects were being leaked!) 1996-05-28 22:28:12 +00:00
Guido van Rossum
8c1e150215 Removed some done "to do" items.
Changed #ifdef DEBUG slightly.
1996-05-24 20:49:24 +00:00
Guido van Rossum
ded690fc35 rename printrefs, getobjects to _Py_ prefix 1996-05-24 20:48:31 +00:00
Guido van Rossum
dadc824c6e removed verbose decl; added win3.1 dynamic linking. 1996-05-23 22:51:40 +00:00
Guido van Rossum
40f470f7e0 moved verbose decl to pydebug.h; added dos_8x3 feature 1996-05-23 22:51:04 +00:00
Guido van Rossum
f857a6becb Added copyright.
Include config.h which may define COMPILER.
1996-05-23 22:50:26 +00:00
Guido van Rossum
5e3e426961 removed sime redundant header includes and decls. 1996-05-23 22:49:38 +00:00
Guido van Rossum
795ba583f2 Removed some redundant header includes.
dir(object) now returns object.__dict__.keys() even if __dict__ is not
a dictionary.
1996-05-23 22:49:07 +00:00
Guido van Rossum
7f3f2c1819 TRACE_REFS -> Py_TRACE_REFS 1996-05-23 22:45:41 +00:00
Guido van Rossum
aae0d32f66 Use new names for debug macros. Don't include pythonrun.h. 1996-05-22 16:35:33 +00:00
Guido van Rossum
9c9a07c9c9 Remember source filename as <module>.__file__. 1996-05-16 20:43:40 +00:00
Guido van Rossum
d17057745c Add list() method, analogous to tuple(). 1996-04-09 02:41:06 +00:00
Guido van Rossum
a5a3db70d4 Under NT, interface to mysterious module registry. (Mark H.) 1996-04-09 02:39:59 +00:00
Guido van Rossum
e71a947f8e Under NT, change "long" sharedlib extension to ".dll". (Mark H.) 1996-04-09 02:39:15 +00:00
Guido van Rossum
c606fe186f Under NT, define sys.dllhandle and sys.winver (Mark H.). 1996-04-09 02:37:57 +00:00
Guido van Rossum
4f1c59b818 Add'l change for NT (Mark H.). 1996-04-09 02:37:03 +00:00
Guido van Rossum
25e852985f __FreeBSD__ shared libraries 1996-02-25 05:02:29 +00:00
Guido van Rossum
be1a6e29e3 Change Mac creator from 'PYTH' to 'Pyth' -- 'PYTH' was already taken
by someone else, 'Pyth' is now officially registered by the PSA.
1996-02-21 15:29:20 +00:00
Guido van Rossum
15ad9a6e52 only use 'j' for imaginary constants 1996-01-26 20:53:56 +00:00
Guido van Rossum
c96ef6ab9e properly initialize optional arguments to apply() 1996-01-26 20:44:30 +00:00
Jack Jansen
1e7b2aa5d6 Removed unused var 1996-01-25 16:11:19 +00:00
Sjoerd Mullender
996e6dc959 Corrected format string in api_version_warning. 1996-01-23 16:07:29 +00:00
Guido van Rossum
ff4af06735 __hpux -> hpux equivalence 1996-01-12 01:17:50 +00:00
Guido van Rossum
b0352fa3fc fix args options for setcheckinterval 1996-01-12 01:15:01 +00:00
Guido van Rossum
beeda8a7ba changes for power (**) operator 1996-01-12 01:13:38 +00:00
Guido van Rossum
50564e8dae changes for complex and power (**) operator 1996-01-12 01:13:16 +00:00
Guido van Rossum
8a5c5d277e changes for complex numbers 1996-01-12 01:09:56 +00:00
Guido van Rossum
72b56e831f don't return from main loop when error occurs 1995-12-10 04:57:42 +00:00
Jack Jansen
66a8977b0e Moved mac-specific exit handling to macmain.c 1995-10-27 13:22:14 +00:00
Jack Jansen
9513f2c95a Made a bit more robust against out-of-memory situations 1995-10-27 13:21:28 +00:00
Jack Jansen
0a72e8d4d2 Added missing include for <Aliases.h> 1995-10-23 13:54:01 +00:00
Guido van Rossum
6c066885f1 set date to oct 13 1995-10-12 00:48:18 +00:00
Guido van Rossum
53f4524a92 disable code generation for access statement 1995-10-08 00:42:46 +00:00
Guido van Rossum
1c45ca310b keep exitfunc alive while calling it 1995-10-07 19:14:01 +00:00
Jack Jansen
95ffa23597 Removed unused variables 1995-10-03 14:38:41 +00:00
Guido van Rossum
a1e7e62893 fix bug with missing default for last arg (discovered by Tommy Burnette) 1995-09-18 21:44:04 +00:00
Guido van Rossum
befa14f1b9 #undef argument, for the Mac 1995-09-18 21:42:42 +00:00
Guido van Rossum
020dfe7f2e include Python.h 1995-09-18 21:40:19 +00:00
Guido van Rossum
650ae0ab06 remove unwanted fatal() from err_badcall() 1995-09-18 21:31:16 +00:00
Guido van Rossum
9d78d8d2fb spell TraceBack with capital B 1995-09-18 21:29:36 +00:00
Sjoerd Mullender
6ec3c653da Implemented two new functions in sys:
getcounts() returns a list of counts of allocations and
		deallocations for all different object types.
	getobjects(n [, type ]) returns a list of recently allocated
		and not-yet-freed objects of the given type (all
		objects if no type given).  Only the n most recent
		(all if n==0) objects are returned.
getcounts is only available if compiled with -DCOUNT_ALLOCS,
getobjects is only available if compiled with -DTRACE_REFS.  Note that
everything must be compiled with these options!
1995-08-29 09:18:14 +00:00
Guido van Rossum
05870115fc rd_object() with exception is fatal error 1995-08-28 02:56:20 +00:00
Guido van Rossum
69f6ee6a9d err_badcall() is fatal error 1995-08-28 02:55:48 +00:00
Guido van Rossum
667d704997 Initial revision 1995-08-04 04:20:48 +00:00
Guido van Rossum
e3e61c1642 empty kw dict is ok for builtins 1995-08-04 04:14:47 +00:00
Guido van Rossum
a1633cd993 split cofnfig.c in 1000 little files :-) 1995-08-04 04:13:00 +00:00
Guido van Rossum
47ad5e7d81 moved stuff around to resemble main.c 1995-08-04 04:10:43 +00:00
Guido van Rossum
6ec1efb645 add imp.get_frozen_object() 1995-08-04 04:08:57 +00:00
Guido van Rossum
b7b45627e8 avoid resize of 0-length tuple 1995-08-04 04:07:45 +00:00
Jack Jansen
21eb0b56a8 mac CW-only fix for messy windows upon exit 1995-07-29 13:55:06 +00:00
Jack Jansen
b7d0df4a91 Allow mac user to set "command line flags" by option-starting python. 1995-07-29 13:53:59 +00:00