diff --git a/scheme/ikarus.boot.8.prebuilt b/scheme/ikarus.boot.8.prebuilt index 479a36d..53ee6bf 100644 Binary files a/scheme/ikarus.boot.8.prebuilt and b/scheme/ikarus.boot.8.prebuilt differ diff --git a/scheme/ikarus.compiler.altcogen.ss b/scheme/ikarus.compiler.altcogen.ss index a66421a..31012b2 100644 --- a/scheme/ikarus.compiler.altcogen.ss +++ b/scheme/ikarus.compiler.altcogen.ss @@ -325,7 +325,15 @@ (define return-value-register '%eax) (define cp-register '%edi) (define all-registers - '(%eax %edi %ebx %edx %ecx)) + (case wordsize + [(4) '(%eax %edi %ebx %edx %ecx)] + [else '(%eax %edi %ebx %edx %ecx %r8 %r9 %r10 %r11)])) + +(define non-8bit-registers + (case wordsize + [(4) '(%edi)] + [else '(%edi %r8 %r9 %r10 %r11)])) + (define argc-register '%eax) ;;; apr = %ebp @@ -340,10 +348,6 @@ => cadr] [else (error 'register-index "not a register" x)])) - -(define non-8bit-registers - '(%edi)) - (define (impose-calling-convention/evaluation-order x) (define who 'impose-calling-convention/evaluation-order) ;;; diff --git a/scheme/ikarus.intel-assembler.ss b/scheme/ikarus.intel-assembler.ss index bfdfc25..5d50940 100644 --- a/scheme/ikarus.intel-assembler.ss +++ b/scheme/ikarus.intel-assembler.ss @@ -449,12 +449,10 @@ (lambda (a0 a1) (cond [(and (imm? a0) (reg32? a1)) - (error 'REC+RM "not here 1") (if (reg-requires-REX? a1) (REX.R #b101 ac) (REX.R #b100 ac))] [(and (imm? a1) (reg32? a0)) - (error 'REC+RM "not here 2") (if (reg-requires-REX? a0) (REX.R #b101 ac) (REX.R #b100 ac))] diff --git a/scheme/last-revision b/scheme/last-revision index f64a277..4d9ebf8 100644 --- a/scheme/last-revision +++ b/scheme/last-revision @@ -1 +1 @@ -1561 +1562