(t (values (cdr binding) :variable)))
(case (sb!int:info :variable :kind symbol)
(:macro (values (macroexpand-1 symbol) :expansion))
- (:alien (let ((type (sb!int:info :variable :alien-info symbol)))
- (values (sb!alien::%heap-alien type)
- :variable)))
+ (:alien (values (sb!alien-internals:alien-value symbol) :variable))
(t (values (symbol-value symbol) :variable))))))
;;; Retrieve the function/macro binding of the symbol NAME in
;;; Return true if EXP is a lambda form.
(defun lambdap (exp)
- (case (car exp) ((lambda
- sb!int:named-lambda
- sb!kernel:instance-lambda)
- t)))
+ (case (car exp)
+ ((lambda sb!int:named-lambda) t)))
;;; Split off the declarations (and the docstring, if
;;; DOC-STRING-ALLOWED is true) from the actual forms of BODY.
;;; in the environment ENV.
(defun eval-lambda (exp env)
(case (car exp)
- ((lambda sb!kernel:instance-lambda)
+ ((lambda)
(multiple-value-bind (body documentation declarations)
(parse-lambda-headers (cddr exp) :doc-string-allowed t)
(make-interpreted-function :lambda-list (second exp)
(defun eval-in-native-environment (form lexenv)
(handler-bind
((sb!impl::eval-error
- (lambda (condition)
- (error 'interpreted-program-error
- :condition (sb!int:encapsulated-condition condition)
- :form form)))
- (sb!c:compiler-error
- (lambda (c)
- (if (boundp 'sb!c::*compiler-error-bailout*)
- ;; if we're in the compiler, delegate either to a higher
- ;; authority or, if that's us, back down to the
- ;; outermost compiler handler...
- (progn
- (signal c)
- nil)
- ;; ... if we're not in the compiler, better signal the
- ;; error straight away.
- (invoke-restart 'sb!c::signal-error)))))
- (handler-case
- (let ((env (make-env-from-native-environment lexenv)))
- (%eval form env))
- (compiler-environment-too-complex-error (condition)
- (declare (ignore condition))
- (sb!int:style-warn 'sb!kernel:lexical-environment-too-complex
- :form form :lexenv lexenv)
- (sb!int:simple-eval-in-lexenv form lexenv)))))
+ (lambda (condition)
+ (error 'interpreted-program-error
+ :condition (sb!int:encapsulated-condition condition)
+ :form form))))
+ (sb!c:with-compiler-error-resignalling
+ (handler-case
+ (let ((env (make-env-from-native-environment lexenv)))
+ (%eval form env))
+ (compiler-environment-too-complex-error (condition)
+ (declare (ignore condition))
+ (sb!int:style-warn 'sb!kernel:lexical-environment-too-complex
+ :form form :lexenv lexenv)
+ (sb!int:simple-eval-in-lexenv form lexenv))))))