* improved performance for fl+, fl-, fl*, fl/, fl=?, fl<?, fl<=?, fl>? and fl>=?

- results in 
    45% reduction in runtime for fpsum
    43% reduction in runtime for fibfp
    29% reduction in runtime for pnpoly
    28% reduction in runtime for mbrot
  - and
    23% increase in compile time for nucleic
    11% increase in compile time for ray
    10% increase in compile time for fft
This commit is contained in:
Abdulaziz Ghuloum
2007-11-08 12:07:48 -05:00
parent df46913530
commit 97d9c4ca42
4 changed files with 3370 additions and 8 deletions
+33 -6
View File
@@ -1,11 +1,31 @@
BUG:
* (exact->inexact (/ (expt 2 3000) (- (expt 2 3000) 1)))
should return 1.0, not +nan.0.
Performance Bugs:
Tail call optimization does not seem to always kick. In this
example, x which comes in (disp -4 %esp) is copied into
(disp -4 %esp) even though it was there to begin with.
> (lambda (x) (quotient x x))
---
(cmpl -4 %eax)
(jne (label L16))
(label L17)
(movl (disp -4 %esp) %edi)
(movl (disp -4 %esp) %eax)
(movl %edi %ebx)
(movl (disp (obj quotient) 7) %edi)
(movl %ebx (disp -4 %esp))
(movl %eax (disp -8 %esp))
(movl -8 %eax)
(jmp (disp -3 %edi))
(label L16)
(jmp (label SL_invalid_args))
(nop)
Other Bugs:
* fxsra does not work for large numbers
* pretty-print goes into infinite loop on cyclic data
* set! on global names is not working.
* Ensure immutable exports
@@ -22,6 +42,14 @@ Unix:unified)
18446744073709551615
======================================================================
FIXED:
* pretty-print goes into infinite loop on cyclic data
* set! on global names is not working.
* (exact->inexact (/ (expt 2 3000) (- (expt 2 3000) 1)))
should return 1.0, not +nan.0.
* FIXED symbol calls are not checking for non-procedure.
@@ -58,4 +86,3 @@ Fixed:
Two displays occurred at the end.