Commit Graph

338 Commits

Author SHA1 Message Date
Guido van Rossum 16e93a8d59 Changed the lookup algorithm again, based on Reimer Behrends's post.
The table size is now constrained to be a power of two, and we use a
variable increment based on GF(2^n)-{0} (not that I have the faintest
idea what that is :-) which helps avoid the expensive '%' operation.

Some of the entries in the table of polynomials have been modified
according to a post by Tim Peters.
1997-01-28 00:00:11 +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 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 e0e696282f Added PyCObject_Import. 1997-01-22 20:48:48 +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 3bb63a8dbe Bugfix: remove ref to fast before it's defined. 1997-01-20 04:29:16 +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 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 792fd435ec Comment out extend_stack() -- it is no longer needed. 1997-01-17 21:07:57 +00:00
Guido van Rossum 7d18159614 Rewrote lookmapping() according to suggestions by Jyrki Alakuijala. 1997-01-16 21:06:45 +00:00
Guido van Rossum 6f72f97c03 Increased buffer sizes used by hex() and oct() -- on 64-bit or 128-bit
machines, the string may get longer than 20 characters!
1997-01-14 15:43:41 +00:00
Guido van Rossum ebee0256f3 Changed hex() and oct() again, to never emit a '-' sign. 1997-01-12 19:48:03 +00:00
Guido van Rossum 919cf1aff1 New, better hash for floating point and complex 1997-01-11 19:26:21 +00:00
Guido van Rossum 80dd9b6672 Subtle change to hex/oct formatting so the largest negative number
does not receive a minus sign.
1997-01-10 17:39:30 +00:00
Guido van Rossum 541cdd84ac Fix overflow test for multiply to catch some cases it missed.
Added warning about dependency of float/complex hash on int hash.
1997-01-06 22:53:20 +00:00
Guido van Rossum 53756b1097 Added PyLong_FromUnsignedLong() and PyLong_AsUnsignedLong(). 1997-01-03 17:14:46 +00:00
Guido van Rossum babab6869f Removed all traces of accessobject.c. 1996-12-25 19:22:49 +00:00
Barry Warsaw f90eddef5d PySequence_Index(): set exception when object is not found in
sequence, otherwise

operator.indexOf([4, 3, 2, 1], 9) would raise a SystemError!

Note: it might be wise to double check all these functions.  I haven't
done that yet.
1996-12-18 19:32:18 +00:00
Guido van Rossum 0969ad213d Better tuple hash function. 1996-12-16 17:55:46 +00:00
Guido van Rossum cc15b42e59 Change comment about MINSIZE -- 10 is optimal for Python. 1996-12-16 03:32:39 +00:00
Guido van Rossum 3176bb1df2 Some more tuning of quicksort: use pointers instead of indexing. 1996-12-11 23:57:39 +00:00
Guido van Rossum 3f236dee3a Added new quicksort implementation, tailored to sorting arrays of
object pointers.  Should be a bit faster than the C library's qsort(),
and doesn't have the prohibition on recursion that Solaris qsort() has
in the threaded version of their C library.

Thanks to discussions with Tim Peters.
1996-12-10 23:55:39 +00:00
Guido van Rossum 067998f35e Add const to error and newstring functions 1996-12-10 15:33:34 +00:00
Guido van Rossum 9478dd40c2 Fix core dump from pow(x,y,0).
Make gcc -Wall happy.
1996-12-06 20:14:43 +00:00
Guido van Rossum da9c2710c7 Make gcc -Wall happy 1996-12-05 21:58:58 +00:00
Guido van Rossum 472c04f18f Fix newlongobject so it will work for 64-bit as well as 32-bit hardware
(although for 32-bit hardware it's a bit slower than it was).

Make gcc -Wall happy.
1996-12-05 21:57:21 +00:00
Guido van Rossum a0a69b8b42 Experimental new implementation of dictionary comparison. This
defines that a shorter dictionary is always smaller than a longer one.
For dictionaries of the same size, the smallest differing element
determines the outcome (which yields the same results as before,
without explicit sorting).
1996-12-05 21:55:55 +00:00
Guido van Rossum 685a38ea94 Make gcc -Wall happy. 1996-12-05 21:54:17 +00:00
Guido van Rossum 04f95d5238 Better implementation of PyCObject_AsVoidPtr(). 1996-12-05 21:53:15 +00:00
Guido van Rossum cbd1e4eb5f Yet more elaborate message for exception in __del__.
Make gcc -Wall happy.
1996-12-05 21:52:32 +00:00
Guido van Rossum 3c5936afc5 Added missing PySequence_List.
Correct typo in error msg (expec[t]ed).
Make gcc -Wall happy.
1996-12-05 21:51:24 +00:00
Guido van Rossum 052b7e1cfb Make Py_ReturnNullError() statis as it should be. 1996-11-11 15:08:19 +00:00
Guido van Rossum 08ef9d98b2 Only call sq_length in Sequence_GetItem for negative index. 1996-11-09 22:32:05 +00:00
Guido van Rossum 8dbcdd0a4c correct typo in return variable for PySequence_Index() 1996-11-06 15:31:46 +00:00
Guido van Rossum d266eb460e New permission notice, includes CNRI. 1996-10-25 14:44:06 +00:00
Guido van Rossum fde7a75b78 Fixed compare function to do first char comparison in unsigned mode,
for consistency with the way other characters are compared.
1996-10-23 14:19:40 +00:00
Guido van Rossum 8bcf369cf9 Support passing in an empty dictionary of keywords to newinstanceobject. 1996-10-21 15:12:32 +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 336c699236 Fix subtle bug detected by Jim F. 1996-09-30 22:00:50 +00:00
Guido van Rossum 24048580ca Oops... Need to clear c_error before calling c_quot(). 1996-09-12 21:02:02 +00:00
Guido van Rossum 3be12e97cd Properly(?) implemented remainder and divmod (Tim Hochberg) 1996-09-12 20:56:18 +00:00
Guido van Rossum d4ab3cde8e Raise exception instead of dropping imag part for conversion to int,
long, float.

Raise exception instead of dumping core for remainder and divmod.
1996-09-11 22:54:37 +00:00
Guido van Rossum 22a85e5308 More detailed error message about exception in __del__ 1996-09-11 22:51:57 +00:00
Guido van Rossum b7fc304109 Correct typo in setattr: return -1 for error, not NULL 1996-09-11 22:51:25 +00:00
Guido van Rossum eddcb3bae1 Multiply by 1000003 instead of 3 in string hach 1996-09-11 20:22:48 +00:00
Guido van Rossum b23a60fd6e Get rid of bogus MSC_VER undef of CHECK() 1996-09-11 20:21:41 +00:00
Guido van Rossum ee09fc1c30 Don't dump core on complex % or divmod -- raise a TypeError exception. 1996-09-11 13:55:55 +00:00