1. 10 Sep, 2002 2 commits
    • Guido van Rossum's avatar
      Rewrite the simple free list allocator using Tim's suggestion of · 60185c00
      Guido van Rossum authored
      keeping track of the beginning and end address of all free blocks, to
      make merging of adjacent blocks a breeze.  The free list is no longer
      kept sorted order.
      
      Unfortunately, this still performs poorly.  It has a higher hit rate
      (with the 38 minute trace I'm using; the longer traces take too long)
      than the buddy system allocator with the same arena size, it is *much*
      slower, the memory usage is under 20% (!!!), and despite a roving
      pointer, the allocation loop is taken an average of 692 times per
      allocation.  At the end of the simulation the free list contains 1039
      blocks; I presume this is a steady state approximating the average
      behavior.  (There are 2280 allocated blocks at that point, roughly
      confirming Knuth's "50% rule" and suggesting that the block merge code
      works properly.)
      
      I guess the next idea is separate free lists per size.
      60185c00
    • Guido van Rossum's avatar
  2. 09 Sep, 2002 6 commits
  3. 08 Sep, 2002 5 commits
  4. 07 Sep, 2002 6 commits
    • Jeremy Hylton's avatar
      Reflow comment. · fdd1d394
      Jeremy Hylton authored
      fdd1d394
    • Jeremy Hylton's avatar
      Whitespace. · a87e64a9
      Jeremy Hylton authored
      a87e64a9
    • Jeremy Hylton's avatar
      Rename _do_async_loop() and _do_async_poll() to wait() and poll(). · bf5f5ec4
      Jeremy Hylton authored
      Repair comments in _call() about how wait() handles reply lock.
      bf5f5ec4
    • Jeremy Hylton's avatar
      Handle empty transactions without touching the storage. · d7a558d1
      Jeremy Hylton authored
      # NB: commit() is responsible for calling tpc_begin() on the storage.
      # It uses self._begun to track whether it has been called.  When
      # self._begun is None, it has not been called.
      
      # This arrangement allows us to handle the special case of a
      # transaction with no modified objects.  It is possible for
      # registration to be occur unintentionally and for a persistent
      # object to compensate by making itself as unchanged.  When this
      # happens, it's possible to commit a transaction with no modified
      # objects.
      
      # Since tpc_begin() may raise a ReadOnlyError, don't call it if there
      # are no objects.  This avoids spurious (?) errors when working with
      # a read-only storage.
      
      Add code to handle this in Connection's tpc_begin() and commit()
      methods.
      
      Add two tests in testZODB.
      d7a558d1
    • Jeremy Hylton's avatar
      Remove code looking for None in self._invalidated. · 38646258
      Jeremy Hylton authored
      An earlier revision (1.68) fixed invalidation code when an object had
      no oid (oid == None).  There is no longer anyway to get None in
      _invalidated, and it has been a long time since a None there meant
      "invalidate everything."
      
      At long last, then, remove all the code deal with the invalidate
      everything behavior.
      38646258
    • Jeremy Hylton's avatar
      Add a little whitespace. · 8e5fa55e
      Jeremy Hylton authored
      8e5fa55e
  5. 06 Sep, 2002 9 commits
  6. 05 Sep, 2002 6 commits
  7. 04 Sep, 2002 6 commits