* the fasl-reader in the binary handles 'Q' tags (thunks) now.
This commit is contained in:
parent
24aa0fffb3
commit
3ba89a0638
BIN
bin/ikarus
BIN
bin/ikarus
Binary file not shown.
|
@ -358,7 +358,7 @@ static ikp do_read(ikpcb* pcb, fasl_port* p){
|
||||||
}
|
}
|
||||||
return rtd;
|
return rtd;
|
||||||
}
|
}
|
||||||
else if(c == 'T'){ /* thunk */
|
else if(c == 'Q'){ /* thunk */
|
||||||
fprintf(stderr, "THUNK\n");
|
fprintf(stderr, "THUNK\n");
|
||||||
ikp proc = ik_alloc(pcb, align(disp_closure_data)) + closure_tag;
|
ikp proc = ik_alloc(pcb, align(disp_closure_data)) + closure_tag;
|
||||||
if(put_mark_index){
|
if(put_mark_index){
|
||||||
|
|
BIN
lib/ikarus.boot
BIN
lib/ikarus.boot
Binary file not shown.
|
@ -234,6 +234,7 @@
|
||||||
(define-record clambda (cases))
|
(define-record clambda (cases))
|
||||||
(define-record clambda-code (label cases free))
|
(define-record clambda-code (label cases free))
|
||||||
(define-record closure (code free*))
|
(define-record closure (code free*))
|
||||||
|
(define-record thunk (code))
|
||||||
(define-record funcall (op rand*))
|
(define-record funcall (op rand*))
|
||||||
(define-record appcall (op rand*))
|
(define-record appcall (op rand*))
|
||||||
(define-record forcall (op rand*))
|
(define-record forcall (op rand*))
|
||||||
|
@ -3892,7 +3893,12 @@
|
||||||
(lambda (ls)
|
(lambda (ls)
|
||||||
(for-each (lambda (x) (printf " ~s\n" x)) ls))
|
(for-each (lambda (x) (printf " ~s\n" x)) ls))
|
||||||
ls*))
|
ls*))
|
||||||
(let ([code* (list*->code* (lambda (x) #f) ls*)])
|
(let ([code* (list*->code*
|
||||||
|
(lambda (x)
|
||||||
|
(if (thunk? x)
|
||||||
|
(thunk-code x)
|
||||||
|
#f))
|
||||||
|
ls*)])
|
||||||
(car code*)))))
|
(car code*)))))
|
||||||
|
|
||||||
(define compile-file
|
(define compile-file
|
||||||
|
|
Loading…
Reference in New Issue