X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/d4ae3ae6fadb6063bb8e9de9aeb79267d13b17cd..9d3903dbedc8c247a04236fa0dbc5caa248dc135:/module/language/r5rs/translate.scm diff --git a/module/language/r5rs/translate.scm b/module/language/r5rs/translate.scm index 6e21ec106..5bf18758b 100644 --- a/module/language/r5rs/translate.scm +++ b/module/language/r5rs/translate.scm @@ -26,6 +26,9 @@ (define (trans x) (if (pair? x) (trans-pair x) x)) +(define *primitive-procedure-list* + '(void car cdr cons + - * / < >)) + (define (trans-pair x) (let ((name (car x)) (args (cdr x))) (let ((il (case name @@ -41,7 +44,11 @@ ((lambda) (cons* '@lambda (trans-formals (car args)) (map trans (cdr args)))) - (else (cons (trans name) (map trans args))))) + (else + (if (memq name *primitive-procedure-list*) + ;; FIXME: Temporary hack for direct optimization + (cons (symbol-append '@ name) (map trans args)) + (cons (trans name) (map trans args)))))) (props (source-properties x))) (if (not (null? props)) (set-source-properties! il props))