diff --git a/scheme/ikarus.boot.orig b/scheme/ikarus.boot.orig index a760fd5..ba9d3a7 100644 Binary files a/scheme/ikarus.boot.orig and b/scheme/ikarus.boot.orig differ diff --git a/scheme/ikarus.compiler.altcogen.ss b/scheme/ikarus.compiler.altcogen.ss index ad12699..e8f7b2b 100644 --- a/scheme/ikarus.compiler.altcogen.ss +++ b/scheme/ikarus.compiler.altcogen.ss @@ -420,11 +420,9 @@ (make-primcall 'nop '()) (make-funcall (make-primcall 'mref - (list (make-constant - (make-object - (primref->symbol - 'do-overflow))) - (make-constant (- disp-symbol-record-proc symbol-ptag)))) + (list + (make-constant (make-object (primref->symbol 'do-overflow))) + (make-constant (- disp-symbol-record-proc symbol-ptag)))) (list size))))) ;;; impose value (define (V d x) @@ -531,7 +529,8 @@ (lambda (x) (make-seq (make-set return-value-register x) - (make-primcall 'return (list return-value-register)))))) + (make-primcall 'return + (list pcr esp apr return-value-register)))))) ;;; impose effect (define (E x) (struct-case x @@ -1482,6 +1481,7 @@ [(reg? d) (cond [(not (mem-reg? d rs)) + (set-asm-instr-op! x 'nop) (values vs rs fs ns)] [else (let ([rs (rem-reg d rs)]) diff --git a/scheme/ikarus.compiler.ss b/scheme/ikarus.compiler.ss index 2bdff98..448e914 100644 --- a/scheme/ikarus.compiler.ss +++ b/scheme/ikarus.compiler.ss @@ -1467,6 +1467,7 @@ (let f ([fml* (cdr fml*)] [rand* rand*]) (cond [(null? fml*) + ;;; FIXME: construct list afterwards (list (make-funcall (make-primref 'list) rand*))] [else (cons (car rand*)