(apply #'!expand-destructuring-bind lambda-list expression body))
 
 #+jscl
-(eval-when-compile
+(eval-when (:compile-toplevel)
   (let ((macroexpander
          '#'(lambda (form &optional environment)
               (declare (ignore environment))
 
 (defvar *package* *common-lisp-package*)
 
 (defmacro in-package (string-designator)
-  `(eval-when-compile
+  `(eval-when (:compile-toplevel :load-toplevel :execute)
      (setq *package* (find-package-or-fail ',string-designator))))
 
 ;; This function is used internally to initialize the CL package