* The information was there, but hidden in the second part of a somewhat-related paragraph in a generic section. * Including "Executables" in the first page of the table of contents should make the function easier to find, one hopes...
* Old version was basically accessing raw slots with %INSTANCE-REF, and doing EQUALP on the results. This was most obviously wrong for raw slots that were larger than a word (double-floats on 32-bit platforms). Less obviously this is also wrong for some float corner-cases, like negative zeroes. * Add RAW-INSTANCE-SLOTS-EQUALP which instead grovels the layout for the slot definitions and determines the proper accessor functions for each slot from that. * Reported by Vjacheslav Fyodorov.
* Bogus type declarations. * Reported by Gregory Vanuxem on sbcl-devel.
…n mode * Bug introduced in the code coverage commit caused sldb-show-source to highlight the wrong forms in many cases. * Changes in 22.214.171.124 caused branch forms to be not annotated as such in sb-cover. * Add a new annotation mode to sb-cover, which basically uses the source location information of the car of the form instead of using the information for the form itself. This mode shows explicitly which forms have been instrumented. According to a #lisp poll, the old version looks nicer, so it's been retained as the default.
- For MIPS/HPPA, the NaN signalling bit's meaning is inverted. - Implement FLOATING-POINT-MODES and SET-FLOATING-POINT-MODES in C. - Delete the corresponding VOPs. - Document the MIPS special "unimplemented" floating point trap. - Add handling of the floating point control word in C signal handlers. - Mark NAN-COMPARISIONS as expected failure on MIPS. (It still doesn't work due to a kernel bug, siginfo_t's si_code field doesn't get updated properly.)
* Forgot to save the file, so missed from the last commit...
* Grammar and typos. * Remove references to version.lisp-expr now that we have branch-version.lisp-expr. * Better explanation of history cleaning (mostly for the benefit of non-committer hackers, shades of "How to Contribute". * Alias for easy git-cvsexportcommit usage. * Mention git-format-patch. * Add link to Git User Manual.
* Turns out my earlier merging of REAL-MAKE-METHOD-LAMBDA and MAKE-METHOD-LAMBDA-INTERNAL was ill adviced: the split is good to have so that redefining the latter in the final image actually changes the behaviour of the system. * Add an explanatory comment.
* Make the constant slot-name and the possible new-value-form additional return values. * Use CONSTANT-FORM-VALUE instead of EVAL to get the constant slot-name. Also use the environment correctly to CONSTANTP and CONSTANT-FORM-VALUE. * Call CAN-OPTIMIZE-ACCESS in the various instance-access optimizers and not around calls to them, so that they can directly use the slot-name and new-value-form results from CAN-OPTIMIZE-ACCESS instead of having to recompute them.
* EXTRACT-THE, for now only used in PCL.
* First is the only caller of the first, so just move the body to the call site.
* First was the only caller of the latter -- just move the body to the call site.
* The first was the only caller of the latter, so just make the body of the latter the body of the first.
* Add :DONT-SAVE keyword argument to FINALIZE, which causes the finalizer to be removed when core is saved: it is not amusing to have a finalizer that deallocates system memory to fire in a fresh image which happens to have freshly allocated memory in the same address. Also good for finalizers closing FDs. Use where appropiate. * Stream buffing should not use (INCF (BUFFER-FOO BUFFER) N), since if another thread has written to the buffer since we last looked at it this might take eg. the TAIL index beyond the end of the allocated memory area: by doing (let ((foo (buffer-foo buffer))) ... (setf (buffer-foo buffer) (+ foo n)) we might overwrite the data from another thread, but at least we won't trash memory. * Small graces: check that ALLOCATE-SYSTEM-MEMORY actually succeeds, don't accept finalizers for NIL (they would just run immediately on next GC, which is almost certainly not intended), take an extra mile to ensure old buffers from before SAVE-LISP-AND-DIE don't survive to the new image.
* Off by one error in conservative stack scavenging, the top of the stack wasn't pinned. * In the new calling convention there is a small window during which the return address only exists on the top of the stack. If a gc was triggered during that window, the code object could move, and the return address would point to freed memory.
Thanks to David Smith and Andreas Bogkt who diagnosed the memory leaks this patch fixes. * Instead of having FD-STREAM objects directly hold onto input and output buffer SAPs and head/tail indexes, use BUFFER objects which contain the SAP, size of the memory area, head/tail indexes, and are have finalizers to deallocate the system memory assosicated with the SAP. (This fixes system memory leaks when streams are not properly closed.) * Make CLOSE :ABORT release the output queue associated with the stream. (This was another memory leak in the old system: now the finalizers make not doing this safe, but it's still better to recycle the buffers.) * Slightly reduce lock contention by grabbing the *AVAILABLE-BUFFERS* lock only if there is something there right before the lock is taken, and by doing allocation outside the lock. * Rename and refactor FROB-OUTPUT and friends: BUFFER-OUTPUT is the main interface function, which always adds new output to the current buffer / output queue. WRITE-OR-BUFFER-OUTPUT tries to write immediately, falling back to buffering if writing is not possible. WRITE-OUTPUT-FROM-QUEUE is called by the SERVE-EVENT system to deal with output queue. FLUSH-OUTPUT-BUFFER writes the current buffer out if possible, queues it otherwise. Ensures that the output buffer of the stream is empty on return (and returns that buffer). * Deprecate SB-SYS:OUTPUT-RAW-BYTES. There doesn't seem to be any real reason to export this kind of stuff. * Increment the fasl version.
* Git for SBCL Hackers guide. * If branch-version.lisp-expr exists, it's value is concatenated after the contents of version.lisp-expr, separated out by ".". Doing this allows reduces spurious conflicts on branches: otherwise a branch announcing it's name in version.lisp-expr is going to conflict at every turn, which prevents automatic rebasing and merging from doing TRT. * Added .gitignore