(define make (lambda (c . svsv) (check-instance c 'make) (let* ((slotnames (fast-standard-class-slot c +standard-class-slotnames-slot+)) (sv (make-vector (length slotnames) uninitialized)) (i (make-coops-instance c sv))) (define (slot-index name) (or (position name slotnames) (error "no such slot in instances of given class" name c))) (let loop ((svsv svsv)) (cond ((null? svsv) (unless bootstrapping (initialize-instance i)) i) ((null? (cdr svsv)) (error 'make "missing slot value" (car svsv) i)) (else (##sys#setslot sv (slot-index (car svsv)) (cadr svsv)) (loop (cddr svsv))))))))