;;;; Other random VOPs.
-(defknown sb!unix::do-pending-interrupt () (values))
-(define-vop (sb!unix::do-pending-interrupt)
+(defknown sb!unix::receive-pending-interrupt () (values))
+(define-vop (sb!unix::receive-pending-interrupt)
(:policy :fast-safe)
- (:translate sb!unix::do-pending-interrupt)
+ (:translate sb!unix::receive-pending-interrupt)
(:generator 1
(inst unimp pending-interrupt-trap)))
(define-vop (halt)
(:generator 1
(inst unimp halt-trap)))
-
-
\f
;;;; Dynamic vop count collection support
extern void clear_auto_gc_trigger(void);
extern int maybe_gc_pending;
+
+static inline int fixnump(lispobj obj) {
+ return((obj &
+ (LOWTAG_MASK &
+ (~(EVEN_FIXNUM_LOWTAG|ODD_FIXNUM_LOWTAG))))
+ == 0);
+}
+
#endif /* _GC_H_ */
}
}
} else {
- if (thing & 0x3) { /* Skip fixnums. FIXME: There should be an
- * is_fixnum for this. */
-
+ if (!(fixnump(thing))) {
+ /* skip fixnums */
switch(widetag_of(*start)) {
/* boxed objects */
* there's no byte compiler, but I've got
* too much to worry about right now to try
* to make sure. -- WHN 2001-10-06 */
- && !(code->trace_table_offset & 0x3)
+ && fixnump(code->trace_table_offset)
/* Only when enabled */
&& verify_dynamic_code_check) {
FSHOW((stderr,
pscav_later(&new->debug_info, 1);
/* FIXME: why would this be a fixnum? */
- if (!(new->trace_table_offset & (EVEN_FIXNUM_LOWTAG|ODD_FIXNUM_LOWTAG)))
+ /* "why" is a hard word, but apparently for compiled functions the
+ trace_table_offset contains the length of the instructions, as
+ a fixnum. See CODE-INST-AREA-LENGTH in
+ src/compiler/target-disassem.lisp. -- CSR, 2004-01-08 */
+ if (!(fixnump(new->trace_table_offset)))
#if 0
pscav(&new->trace_table_offset, 1, 0);
#else
"(class-predicate foo) documentation"))
(assert (string= (documentation #'(sb-pcl::class-predicate foo) 'function)
"(class-predicate foo) documentation"))
+\f
+;;; DISASSEMBLE shouldn't fail on closures or unpurified functions
+(defun disassemble-fun (x) x)
+(disassemble 'disassemble-fun)
+(let ((x 1)) (defun disassemble-closure (y) (if y (setq x y) x)))
+(disassemble 'disassemble-closure)
\f
;;;; success
(sb-ext:quit :unix-status 104)
(test (* 86400 365) -1/3600 (1 0 0 1 1 1901 1 -1/3600))
(test (* 86400 365) 0 (0 0 0 1 1 1901 1 0))
(test (* 86400 365) 1/3600 (59 59 23 31 12 1900 0 1/3600)))
+
+;;; DISASSEMBLE shouldn't fail on purified functions
+(disassemble 'cl:+)
+(disassemble 'sb-ext:run-program)
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.8.7.9"
+"0.8.7.10"