;;; -*- Mode:LISP; Package:(PCL Lisp 1000); Base:10.; Syntax:Common-lisp; Patch-File: Yes -*- ;;; ;;; ************************************************************************* ;;; Copyright (c) 1985, 1986, 1987, 1988, 1989, 1990 Xerox Corporation. ;;; All rights reserved. ;;; ;;; Use and copying of this software and preparation of derivative works ;;; based upon this software are permitted. Any distribution of this ;;; software or derivative works must comply with all applicable United ;;; States export control laws. ;;; ;;; This software is made available AS IS, and Xerox Corporation makes no ;;; warranty about the software, its performance or its conformity to any ;;; specification. ;;; ;;; Any person obtaining a copy of this software is requested to send their ;;; name and post office or electronic mail address to: ;;; CommonLoops Coordinator ;;; Xerox PARC ;;; 3333 Coyote Hill Rd. ;;; Palo Alto, CA 94304 ;;; (or send Arpanet mail to CommonLoops-Coordinator.pa@Xerox.arpa) ;;; ;;; Suggestions, comments and requests for improvements are also welcome. ;;; ************************************************************************* ;;; ;;; This is the 3600 version of the file portable-low. ;;; (in-package 'pcl) #+IMach ;On the I-Machine these are (eval-when (compile load eval) ;faster than the versions ;that use :test #'eq. (defmacro memq (item list) `(member ,item ,list)) (defmacro assq (item list) `(assoc ,item ,list)) (defmacro rassq (item list) `(rassoc ,item ,list)) (defmacro delq (item list) `(delete ,item ,list)) (defmacro posq (item list) `(position ,item ,list)) ) compiler:: (defoptimizer (cl:the the-just-gets-in-the-way-of-optimizers) (form) (matchp form (('cl:the type subform) (ignore type) subform) (* form))) (defmacro %ash (x count) (if (and (constantp count) (zerop (eval count))) x `(the fixnum (ash (the fixnum ,x ) ,count)))) ;;; ;;; ;;; (defmacro without-interrupts (&body body) `(let ((outer-scheduling-state si:inhibit-scheduling-flag) (si:inhibit-scheduling-flag t)) (macrolet ((interrupts-on () '(when (null outer-scheduling-state) (setq si:inhibit-scheduling-flag nil))) (interrupts-off () '(setq si:inhibit-scheduling-flag t))) (progn outer-scheduling-state) ,.body))) ;;; ;;; It would appear that #, does not work properly in Genera. At least I can't get it ;;; to work when I use it inside of std-instance-p (defined later in this file). So, ;;; all of this is just to support that. ;;; ;;; WHEN EXPANDS-TO ;;; compile to a file (#:EVAL-AT-LOAD-TIME-MARKER .