In 64-bit, ikarus now passes all tests, can recompile itself,

and runs all benchmarks (inefficiently but correctly).
This commit is contained in:
Abdulaziz Ghuloum 2008-07-20 00:14:09 -07:00
parent 4f48c55bfc
commit 78d9fa1f42
5 changed files with 17 additions and 13 deletions

View File

@ -2896,7 +2896,9 @@
(addl eax eax) ; double the number of args (addl eax eax) ; double the number of args
(movl eax (mem (fx* -2 wordsize) fpr)) ; pass it as first arg (movl eax (mem (fx* -2 wordsize) fpr)) ; pass it as first arg
(movl (int (argc-convention 1)) eax) ; setup argc (movl (int (argc-convention 1)) eax) ; setup argc
(movl (primref-loc 'do-vararg-overflow) cpr) ; load handler (movl (obj (primref->symbol 'do-vararg-overflow)) cpr)
(movl (mem (- disp-symbol-record-proc record-tag) cpr) cpr)
;(movl (primref-loc 'do-vararg-overflow) cpr) ; load handler
(compile-call-frame 0 '#() '(int 0) (indirect-cpr-call)) (compile-call-frame 0 '#() '(int 0) (indirect-cpr-call))
(popl eax) ; pop framesize and drop it (popl eax) ; pop framesize and drop it
(popl eax) ; reload argc (popl eax) ; reload argc

View File

@ -2097,9 +2097,9 @@
"https://bugs.launchpad.net/ikarus/+filebug") "https://bugs.launchpad.net/ikarus/+filebug")
(make-irritants-condition (list op)))))])) (make-irritants-condition (list op)))))]))
(define (primref-loc op) ;(define (primref-loc op)
(mem (fx- disp-symbol-record-proc record-tag) ; (mem (fx- disp-symbol-record-proc record-tag)
(obj (primref->symbol op)))) ; (obj (primref->symbol op))))
@ -2210,7 +2210,9 @@
(movl cpr (mem (fx- 0 wordsize) fpr)) ; first arg (movl cpr (mem (fx- 0 wordsize) fpr)) ; first arg
(negl eax) (negl eax)
(movl eax (mem (fx- 0 (fx* 2 wordsize)) fpr)) (movl eax (mem (fx- 0 (fx* 2 wordsize)) fpr))
(movl (primref-loc '$incorrect-args-error-handler) cpr) (movl (obj (primref->symbol '$incorrect-args-error-handler)) cpr)
(movl (mem (- disp-symbol-record-proc record-tag) cpr) cpr)
;(movl (primref-loc '$incorrect-args-error-handler) cpr)
(movl (int (argc-convention 2)) eax) (movl (int (argc-convention 2)) eax)
(tail-indirect-cpr-call)))) (tail-indirect-cpr-call))))
SL_invalid_args] SL_invalid_args]
@ -2228,7 +2230,9 @@
(list (list
(list 0 (list 0
(label SL_multiple_values_error_rp) (label SL_multiple_values_error_rp)
(movl (primref-loc '$multiple-values-error) cpr) (movl (obj (primref->symbol '$multiple-values-error)) cpr)
(movl (mem (- disp-symbol-record-proc record-tag) cpr) cpr)
;(movl (primref-loc '$multiple-values-error) cpr)
(tail-indirect-cpr-call)))) (tail-indirect-cpr-call))))
SL_multiple_values_error_rp] SL_multiple_values_error_rp]
[(sl-values-label) [(sl-values-label)
@ -2256,7 +2260,9 @@
(list 0 (list 0
(label SL_nonprocedure) (label SL_nonprocedure)
(movl cpr (mem (fx- 0 wordsize) fpr)) ; first arg (movl cpr (mem (fx- 0 wordsize) fpr)) ; first arg
(movl (primref-loc '$apply-nonprocedure-error-handler) cpr) (movl (obj (primref->symbol '$apply-nonprocedure-error-handler)) cpr)
(movl (mem (- disp-symbol-record-proc record-tag) cpr) cpr)
;(movl (primref-loc '$apply-nonprocedure-error-handler) cpr)
(movl (int (argc-convention 1)) eax) (movl (int (argc-convention 1)) eax)
(tail-indirect-cpr-call)))) (tail-indirect-cpr-call))))
SL_nonprocedure] SL_nonprocedure]

View File

@ -1 +1 @@
1543 1544

View File

@ -374,7 +374,6 @@ extern void verify_integrity(ikpcb* pcb, char*);
ikpcb* ikpcb*
ik_collect(unsigned long int mem_req, ikpcb* pcb){ ik_collect(unsigned long int mem_req, ikpcb* pcb){
// fprintf(stderr, "ik_collect ...\n");
#ifndef NDEBUG #ifndef NDEBUG
verify_integrity(pcb, "entry"); verify_integrity(pcb, "entry");
#endif #endif
@ -561,9 +560,6 @@ ik_collect(unsigned long int mem_req, ikpcb* pcb){
pcb->collect_rtime.tv_usec += 1000000; pcb->collect_rtime.tv_usec += 1000000;
pcb->collect_rtime.tv_sec -= 1; pcb->collect_rtime.tv_sec -= 1;
} }
//fprintf(stderr, "ik_collect done\n");
return pcb; return pcb;
} }

View File

@ -206,7 +206,7 @@ ikptr ik_unsafe_alloc(ikpcb* pcb, int size);
ikptr ik_safe_alloc(ikpcb* pcb, int size); ikptr ik_safe_alloc(ikpcb* pcb, int size);
#define IK_HEAP_EXT_SIZE (32 * 4096) #define IK_HEAP_EXT_SIZE (32 * 4096)
#define IK_HEAPSIZE (1024 * ((wordsize==4)?1:32) * 4096) /* 4/8 MB */ #define IK_HEAPSIZE (1024 * ((wordsize==4)?1:2) * 4096) /* 4/8 MB */
#define wordsize ((int)(sizeof(ikptr))) #define wordsize ((int)(sizeof(ikptr)))
#define wordshift ((wordsize == 4)?2:3) #define wordshift ((wordsize == 4)?2:3)