- Mar 27, 2007
-
-
rtoy authored
correctly if the two parts had different signs, which does happen.
-
rtoy authored
MAKE/DOUBLE-DOUBLE-FLOAT.
-
rtoy authored
MAKE-COMPLEX-DOUBLE-DOUBLE-FLOAT and fix up the vop to use the correct TN numbers when the result is on the stack.
-
rtoy authored
was using the wrong TN numbers for the components of the complex double-double.
-
rtoy authored
complex-double-double-reg-sc-number should be 2, not 1. o Oops. Forgot to implement complex-double-double-stack-sc-number.
-
- Mar 26, 2007
-
-
rtoy authored
MAKE/DOUBLE-DOUBLE-FLOAT, so turn it off. Turn it off for MAKE-COMPLEX-DOUBLE-DOUBLE-FLOAT and COMPLEX-DOUBLE-DOUBLE-FLOAT-VALUE too, just in case.
-
- Mar 23, 2007
-
-
rtoy authored
silly bug that (float <neg bignum> 1w0) was returning a positive result instead of negative. o Rename DOUBLE-DOUBLE-FLOAT to DOUBLE-DOUBLE-FLOAT-FROM-BITS to match other functions and to make it separate from the same function in the KERNEL package. o Modify DOUBLE-DOUBLE-FLOAT-FROM-BITS to look at the bignum and extract out the pieces better. Look for a pattern <53 bits> <zeroes> <53 bits> where <zeroes> is a set of consecutive zero bits. We use the 2 53-bit sections to create the double-double-float. o Make DOUBLE-DOUBLE-FLOAT-FROM-BITS honor the sign. o Add BIGNUM-FLOAT-DIGITS to figure out how many bits of the bignum should be used to create the float. o Call BIGNUM-FLOAT-DIGITS from BIGNUM-TO-FLOAT instead of using FLOAT-FORMAT-DIGITS.
-
- Mar 22, 2007
-
-
rtoy authored
-
- Mar 21, 2007
- Mar 20, 2007
-
-
rtoy authored
exception. This was happening when the faulting FP instruction was in the delay slot of a branch. The PC was incremented to the branch target, and hence had the wrong information. The FPQ structure has the right information. code/sparc-svr4-vm.lisp: o Add FPQ structure so we can access the information about the faulting FP instruction. compiler/sparc/float.lisp: o Extract the correct information about the faulting FP instruction instead of from the PC.
-
rtoy authored
-
- Mar 05, 2007
-
-
rtoy authored
Simple tests with rest args and some dynamic-extent closures indicates that this work. Compiling CMUCL with dynamic-extent enabled appears to work as well. I conclude that the implementation here is probably correct. (Yes, I know dynamic-extent is currently disabled, but let's make ppc complete.) compiler/ppc/alloc.lisp: o Implement the vops %DYNAMIC-EXTENT-START and %DYNAMIC-EXTENT-END. o Update the LIST-OR-LIST*, MAKE-CLOSURE, and FIXED-ALLOC vops to support dynamic-extent, by passing ALLOCATION and WITH-FIXED-ALLOCATION macros the extra :STACK-P arg. compiler/ppc/call.lisp: o Update LISTIFY-REST-ARGS vop to support dynamic-extent, by passing the ALLOCATION macro the extra :STACK-P arg. compiler/ppc/macros.lisp: o Update the ALLOCATION macro to support the :STACK-P arg.
-
- Mar 03, 2007
-
-
rtoy authored
o Implement stack clearing stuff for ppc. compiler/ppc/call.lisp: o Implement stack clearing for xep-allocate-frame and allocate-frame, mostly cargo-culting the sparc version.
-
- Feb 21, 2007
-
-
rtoy authored
-
- Feb 03, 2007
-
-
rtoy authored
(defun f (x y) (declare (fixnum x y)) (expt x y)) caused an error because we weren't handling member types correctly.
-
- Feb 01, 2007
-
-
rtoy authored
-
- Jan 26, 2007
- Jan 23, 2007
-
-
rtoy authored
type of: (defun foo3 (x y) (declare (type (double-float (0d0) 1d0) x) (type (double-float (0d0)) y)) (expt x y)) to be (double-float 0d0 1d0), i.e, including -0.0, but that's not possible. With this fix, the result type is (or (member 0d0) (double-float (0d0) 1d0)), which is better.
-
rtoy authored
and two-arg comparision working. They're no longer needed.
-
- Jan 20, 2007
-
-
fgilham authored
source comment associated with change.
-
- Jan 18, 2007
-
-
rtoy authored
-
rtoy authored
-
rtoy authored
Extend LOG2 function to handle more cases, and make LOG call LOG2 appropriately, and add LOG2-DD to handle the double-double-float cases.
-
rtoy authored
sign. This caused (FLOAT -1/9 1w0) to return -0.11111111111111109877529972638715w0 instead of 0.111111111111111111111111111111111w0.
-
- Jan 16, 2007
-
-
rtoy authored
print/read consistency because "foo.~01~ is printed as "foo.~1~". This could be fixed in other places, but it seems best not to allow leading zeroes in the version number. Patch from Madhu, cmucl-imp, 2007-01-14.
-
- Jan 13, 2007
-
-
fgilham authored
-
- Jan 11, 2007
-
-
fgilham authored
return value is discarded. Since (adjust-array) may return a new array, this is wrong.
-
- Jan 02, 2007
-
-
rtoy authored
-
- Jan 01, 2007
-
-
cshapiro authored
-
- Dec 24, 2006
-
-
rtoy authored
branches. compiler/generic/vm-tran.lisp: o On sparc and ppc, make the abs deftransform give up for 32-bit integers, to give the VOP a chance. compiler/ppc/arith.lisp: o Add vop for abs for (signed-byte 32).
-
- Dec 22, 2006
-
-
rtoy authored
another issue with uninitialized &aux variables. (defstruct (foobar (:constructor make-foobar (xxx &key (aaa nil) (bbb nil) &aux (foobar-data xxx) (aaa (or aaa (getf foobar-data :aaa) 1)) (bbb (or bbb (getf foobar-data :bbb) (1+ aaa)))))) (aaa (required-argument) :type fixnum) (bbb (required-argument) :type fixnum)) (make-foobar nil) -> #<foobar :aaa 1 :bbb 2> But CMUCL gives type errors. To fix Albert's issue, modify CREATE-BOA-CONSTRUCTOR to keep track of the &aux vars separately from the other arglist vars. Adjust CREATE-VECTOR-CONSTRUCTOR, CREATE-LIST-CONSTRUCTOR, CREATE-STRUCTURE-CONSTRUCTOR, and CREATE-FIN-CONSTRUCTOR to take an extra arg for the &aux vars. For CREATE-STRUCTURE-CONSTRUCTOR, we only put declarations for the other arglist vars. To make sure we store the right kinds of objects into the slots, we also wrap (the <type> init) for each initial value. Also CLHS 3.4.6 has an example of a boa constructor using an aux variable without an initializer. CMUCL was not handling that right. Modify CREATE-BOA-CONSTRUCTOR to change the initializer to use (or <aux> slot-default-value) to get the correct default value into the slot if the aux variable doesn't.
-
- Dec 21, 2006
-
-
rtoy authored
(defvar $f (open "/etc/passwd" :mapped t :class 'stream:file-simple-stream)) (file-position $f) returns a negative value. I think this happens because of some possible confusion between buffer-ptr and buf-len in a mapped file-simple-stream. I changed the code so that buffer-ptr is initialized to 0, and the various routines that check for eof compare buffpos against buf-len, instead of buffer-ptr. I think this also means buffer-ptr is not used in mapped file-simple-streams. Add a couple of file-position tests too.
-
- Dec 19, 2006
-
-
cshapiro authored
definition, if the symbol is symbol macro, return the expansion. Otherwise, if the symbol is a local definition but not a symbol macro, return the symbol and report no expansion. Previously, the otherwise case was not handled and macroexpand-1 fell through in error to test forms for global cases. Among other things, this caused the expansion of global symbol macros shadowed by lexical variable bindings.
-
- Dec 02, 2006
-
-
rtoy authored
o Need to clear out the individual invalid operation bits when clearing the invalid exception bit. code/exports.lisp: compiler/ppc/parms.lisp: o Export FLOAT-INVALID-OP-1-BYTE. (Needs a better name.)
-
- Nov 30, 2006