- Nov 14, 2003
-
-
cracauer authored
From Ed Wang.
-
- Nov 12, 2003
-
-
toy authored
silently revert to initializing to the random state from the current time. From Ole Rohne via cmucl-imp. This works around a problem on one of his machines where /dev/urandom isn't what we think it is. We still lose if /dev/urandom returns words that aren't random enough. Oh well.
-
- Nov 11, 2003
-
-
toy authored
report this page. From Harald Hanche-Olsen on cmucl-imp.
-
- Nov 08, 2003
-
-
gerd authored
(require :gray-streams) (defclass my-in-stream (ext:fundamental-character-input-stream) ((last-char :initarg :last-char))) (let ((string " a ") (i 0)) (defmethod ext:stream-read-char ((s my-in-stream)) (with-input-from-string (s "b") (read s)) (with-slots (last-char) s (cond (last-char (prog1 last-char (setf last-char nil))) (t (prog1 (aref string i) (setq i (mod (1+ i) (length string))))))))) (defmethod ext:stream-unread-char ((s my-in-stream) char) (setf (slot-value s 'last-char) char) nil) (setq x (make-instance 'my-in-stream :last-char nil)) (read x) => b, instead of a * src/code/reader.lisp: Use a new read buffer for each call to read or read-preserving-whitespace, instead of using one global buffer. From Helmut Eller.
-
- Nov 06, 2003
- Nov 05, 2003
-
-
gerd authored
(defmethod name :before ((data data))) (name (make-instance 'data)) => too few args in a call to a method function This is caused by standard-reader/writer methods having a fast-function, but that's not the one that we should funcall if pcl::*inline-methods-in-emfs* is true. Use the fast-method-call mechanism for such methods instead. * src/pcl/combin.lisp (inlinable-method-p): New function. (make-direct-calls): Removed. (memf-test-converter): Add a local function method-key for determining the function generator key. (memf-code-converter): Add local functions make-call and make-calls. Generate direct calls if inlinable-method-p returns true.
-
gerd authored
as last change, which fixed write-char etc. only.
-
toy authored
o Gather some of the sparc-specific symbols into one spot. o Export unix::check to get rid of a warning. (Not exactly sure where this comes from.)
-
toy authored
imaginary part wasn't getting returned, and the real part was actually the imaginary part.
-
- Nov 04, 2003
-
-
gerd authored
dependency, which I don't have to time to debug right now. Redefining a function like this: (defun foo ()) (let ((foo #'foo)) (declare (function foo)) (defun foo () (funcall foo))) leads to infinite recursion because the funcall uses FOO's fdefn object instead of the local variable's value. * src/compiler/ir1tran.lisp (ir1-convert-variable): Don't record DFO dependency.
-
- Nov 03, 2003
-
-
gerd authored
:if-exists :supersede) (format stream "~S ~S ~S~%" 'these 'are 'symbols)) (with-open-file (stream "test.123" :direction :io :if-exists :overwrite) (read stream) (prin1 'insert stream)) (with-open-file (stream "test.123") (loop for line = (read-line stream nil) until (null line) do (write-line line))) Output should be "these insertmbols" Output is "these are symbols\ninsert" * src/code/fd-stream.lisp (def-output-routines): If there is any input read from UNIX but not supplied to the user of the stream, reposition to the real file position as seen from Lisp. Reported by Adam Warner.
-
gerd authored
(let* ((string (symbol-name symbol)) (length (length string))) (if (or (< length 3) (not (char= (elt string 0) #\*)) (not (char= (elt string (1- length)) #\*))) (error "Symbol does not follow dynamic conventions.") (if prefix (intern (cs prefix (subseq string 1 (1- length)))) (intern (subseq string 1 (1- length))))))) => spurious code deletion note that goes away when the local variable length is renamed to something else. * src/compiler/generic/vm-tran.lisp (subseq, copy-seq) <deftransform>: Use len as local variable name instead of cl:length.
-
- Nov 01, 2003
-
-
toy authored
-
- Oct 29, 2003
-
-
toy authored
as the instruction. (Because there are instructions that might match the LRA header type).
-
gerd authored
-
gerd authored
parameters that are being assigned to in the method body. Reported by Hans Chalupsky on cmucl-imp. * src/pcl/boot.lisp (method-parameter): New function, extracted from make-pv-call. (assigned-method-params): New function. (make-method-lambda-internal): Call it to disable optimizations on method parameters being assigned to. * src/pcl/method-slot-access-optimization.lisp (get-param/class-to-optimize): Use new function method-parameter. * src/pcl/gf-call-optimization.lisp (make-pv-call): Ditto. * src/pcl/std-class.lisp (ensure-class-using-class): Don't setq a method parameter.
-
- Oct 27, 2003
- Oct 26, 2003
-
-
gerd authored
unreachable blocks, similar to ir1-optimize, which we don't call. This simplifies things by reducing the differences between "normal" compilation and compiling for interpretation. * src/compiler/ir1util.lisp (block-unreachable-p): New function. (delete-lambda): Mark return blocks for deletion again. * src/compiler/ir1opt.lisp (ir1-optimize): Use block-unreachable-p. Delete unreachable blocks after the loop.
-
gerd authored
Wrap locally around single-element bodies, it can be a declaration. ANSI test HANDLER-CASE.29.
-
gerd authored
(max (return-from b3 1) (if (unwind-protect (unwind-protect 2)) 3 4)))) => nil is not of type c::ref * src/compiler/envanal.lisp (emit-cleanups): Don't generate a %funcall If second arg of :unwind-protect cleanup is unused. Found by Paul Dietz.
-
- Oct 25, 2003
-
-
toy authored
-
- Oct 24, 2003
-
-
toy authored
-
toy authored
-
toy authored
(defvar *s* (open "target:code/scavhook.lisp")) (defvar *buf* (make-array 5000 :element-type 'character)) (read-sequence *buf* *s* :end 3000) => 3000 (read-sequence *buf* *s* :end 3000) => 1096 or 4096 bytes read, when we should have read 4139 (length of scavhook.lisp). Make READ-INTO-SIMPLE-STRING keep trying to READ-N-BYTES until we have enough bytes or until READ-N-BYTES returns 0 bytes read (in which case we return a short read because there's nothing left to read).
-
toy authored
-
toy authored
-
toy authored
* x86-assem.S (multiple_value_return): Add new functions to handle heap overflow warnings and errors. * x86-arch.c (sigtrap_handler): Add cases for the two new heap overflow traps. * interrupt.c (interrupt_handle_space_overflow): Add support for x86. * parms.lisp (static-symbols): Add new static symbols for heap overflow checking. Add new trap types for heap overflow checking.
-
toy authored
-
toy authored
overflow checking. Enable with :heap-overflow-check. We reserve some number of pages on the heap. When the heap reaches the reserved pages, an overflow warning is signalled. The reserved pages are set 0. This allows some additional allocation to happen during debugging, if necessary. If another overflow happens, we throw to top-level. Sparc only right now. * lisp/sparc-assem.S (_do_dynamic_space_overflow_error): New function to handle a heap overflow error. (_do_dynamic_space_overflow_warning): New function to handle heap overflow warning. * lisp/sparc-arch.c (sigill_handler): Handle the two new traps caused by heap overflows. * lisp/interrupt.c (interrupt_handle_space_overflow): New function to handle interrupt caused by heap space overflows. * lisp/gencgc.c (handle_heap_overflow): New function to handle heap overflows. (gc_alloc_new_region): Use handle_heap_overflow. (gc_alloc_large): Use handle_heap_overflow * compiler/sparc/parms.lisp (static-symbols): Add new static symbols for heap overflow checking: dynamic-space-overflow-error-hit and dynamic-space-overflow-warning-hit. * compiler/generic/new-genesis.lisp (finish-symbols): Initialize the new dynamic-space-overflow-error-hit and dynamic-space-overflow-warning-hit static symbols. * code/lispinit.lisp (:heap-overflow-check): Add heap-overflow-check to *runtime-features*, if necessary. ("reserved_heap_pages"): Access to alien variable for heap overflow. (*reserved-heap-pages*): Default number of heap pages to reserve for heap overflow. (%top-level): Set reserved-heap-pages to the default. * code/interr.lisp (dynamic-space-overflow-warning-hit): Add function to handle heap overflow warnings. (dynamic-space-overflow-error-hit): Add function to handle heap overflow error. * code/error.lisp (heap-overflow): Add new condition type for heap overflow
-
- Oct 23, 2003
- Oct 21, 2003
-
-
gerd authored
the return-block for deletion.
-
- Oct 20, 2003