In 64-bit, ikarus now passes all tests, can recompile itself,
and runs all benchmarks (inefficiently but correctly).
This commit is contained in:
parent
4f48c55bfc
commit
78d9fa1f42
|
@ -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
|
||||||
|
|
|
@ -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]
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
1543
|
1544
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue