(in-package "SB!EVAL")
(defparameter *eval-level* -1)
-(defparameter *eval-calls* 0)
(defparameter *eval-verbose* nil)
-(defun !full-eval-cold-init ()
- (setf *eval-level* -1
- *eval-calls* 0
- *eval-verbose* nil
- *evaluator-mode* :compile))
-
;; !defstruct-with-alternate-metaclass is unslammable and the
;; RECOMPILE restart doesn't work on it. This is the main reason why
;; this stuff is split out into its own file. Also, it lets the
;; INTERPRETED-FUNCTION type be declared before it is used in
-;; compiler/main.
+;; compiler/main and code/deftypes-for-target.
(sb!kernel::!defstruct-with-alternate-metaclass
interpreted-function
- :slot-names (name lambda-list env declarations documentation body source-location)
+ ;; DEBUG-NAME and DEBUG-LAMBDA-LIST are initially a copies of the proper
+ ;; ones, but is analogous to SIMPLE-FUN-NAME and ARGLIST in the sense that it
+ ;; is they are there only for debugging, and do not affect behaviour of the
+ ;; function -- so DEFMACRO can set them to more informative values.
+ :slot-names (name debug-name lambda-list debug-lambda-list env
+ declarations documentation body source-location)
:boa-constructor %make-interpreted-function
:superclass-name function
:metaclass-name static-classoid
:dd-type funcallable-structure
:runtime-type-checks-p nil)
-(defun make-interpreted-function
- (&key name lambda-list env declarations documentation body source-location)
- (let ((function (%make-interpreted-function
- name lambda-list env declarations documentation body
- source-location)))
- (setf (sb!kernel:funcallable-instance-fun function)
- #'(lambda (&rest args)
- (interpreted-apply function args)))
- function))
-
-(defun interpreted-function-p (function)
- (typep function 'interpreted-function))
-
-(sb!int:def!method print-object ((obj interpreted-function) stream)
- (print-unreadable-object (obj stream
- :identity (not (interpreted-function-name obj)))
- (format stream "~A ~A" '#:interpreted-function
- (interpreted-function-name obj))))
+#-sb-xc-host
+(progn
+ (defun make-interpreted-function
+ (&key name lambda-list env declarations documentation body source-location)
+ (let ((function (%make-interpreted-function
+ name name lambda-list lambda-list env
+ declarations documentation body source-location)))
+ (setf (sb!kernel:funcallable-instance-fun function)
+ #'(lambda (&rest args)
+ (interpreted-apply function args)))
+ function))
+
+ (defun interpreted-function-p (function)
+ (typep function 'interpreted-function))
+
+ (sb!int:def!method print-object ((obj interpreted-function) stream)
+ (print-unreadable-object (obj stream
+ :identity (not (interpreted-function-name obj)))
+ (format stream "~A ~A" '#:interpreted-function
+ (interpreted-function-name obj)))))