From: Mark Friedman Date: Fri, 22 Apr 1988 16:39:45 +0000 (+0000) Subject: Added support for the open coding of fixnum arithmetic and fixnum predicates. X-Git-Tag: 20090517-FFI~12814 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=cf553622b81461696723bc0aa8ef74a138642a3f;p=mit-scheme.git Added support for the open coding of fixnum arithmetic and fixnum predicates. --- diff --git a/v7/src/compiler/rtlgen/opncod.scm b/v7/src/compiler/rtlgen/opncod.scm index 3a42b8a1b..b4a9cb5db 100644 --- a/v7/src/compiler/rtlgen/opncod.scm +++ b/v7/src/compiler/rtlgen/opncod.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/opncod.scm,v 4.4 1988/03/31 21:35:23 mhwu Exp $ +$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/opncod.scm,v 4.5 1988/04/22 16:39:45 markf Exp $ Copyright (c) 1987 Massachusetts Institute of Technology @@ -367,5 +367,65 @@ MIT in each case. |# (lambda (index) (return-2 (open-code/memory-assignment (1+ index)) '(0 2))))))) +(let ((define-fixnum-2-args + (lambda (fixnum-operator) + (define-open-coder/value fixnum-operator + (lambda (operands) + (return-2 + (lambda (expressions finish) + (finish (rtl:make-fixnum-2-args + fixnum-operator + (rtl:make-object->fixnum (car expressions)) + (rtl:make-object->fixnum (cadr expressions))))) + '(0 1))))))) + (for-each + define-fixnum-2-args + '(PLUS-FIXNUM MINUS-FIXNUM MULTIPLY-FIXNUM + ;; DIVIDE-FIXNUM GCD-FIXNUM + ))) + +(let ((define-fixnum-1-arg + (lambda (fixnum-operator) + (define-open-coder/value fixnum-operator + (lambda (operand) + (return-2 + (lambda (expressions finish) + (finish (rtl:make-fixnum-1-arg + fixnum-operator + (rtl:make-object->fixnum (car expressions))))) + '(0))))))) + (for-each + define-fixnum-1-arg + '(ONE-PLUS-FIXNUM MINUS-ONE-PLUS-FIXNUM))) + +(let ((define-fixnum-pred-2-args + (lambda (fixnum-pred) + (define-open-coder/predicate fixnum-pred + (lambda (operands) + (return-2 + (lambda (expressions finish) + (finish (rtl:make-fixnum-pred-2-args + fixnum-pred + (rtl:make-object->fixnum (car expressions)) + (rtl:make-object->fixnum (cadr expressions))))) + '(0 1))))))) + (for-each + define-fixnum-pred-2-args + '(EQUAL-FIXNUM? LESS-THAN-FIXNUM? GREATER-THAN-FIXNUM?))) + +(let ((define-fixnum-pred-1-arg + (lambda (fixnum-pred) + (define-open-coder/predicate fixnum-pred + (lambda (operand) + (return-2 + (lambda (expressions finish) + (finish (rtl:make-fixnum-pred-1-arg + fixnum-pred + (rtl:make-object->fixnum (car expressions))))) + '(0))))))) + (for-each + define-fixnum-pred-1-arg + '(ZERO-FIXNUM? POSITIVE-FIXNUM? NEGATIVE-FIXNUM?))) + ;;; end COMBINATION/INLINE ) \ No newline at end of file