Fix slot-ref

This commit is contained in:
Justin Ethier 2018-02-01 13:25:19 -05:00
parent f3d2cd8176
commit 1d91ace450

View file

@ -1806,9 +1806,12 @@
(let ((vec obj)) ;; TODO: get actual slots from obj (let ((vec obj)) ;; TODO: get actual slots from obj
(vector-set! (vector-ref vec 2) idx val))) (vector-set! (vector-ref vec 2) idx val)))
(define (slot-ref name obj field) (define (slot-ref name obj field)
;; TODO: type check (let* ((idx (cond
;; TODO: support field as number or symbol ((symbol? field)
(vector-ref (vector-ref obj 2) field)) (type-slot-offset name field))
(else
field)))) ;; Assumes field is a number
(vector-ref (vector-ref obj 2) idx)))
(define (make-getter sym name idx) (define (make-getter sym name idx)
(lambda (obj) (lambda (obj)
(vector-ref (vector-ref obj 2) idx))) (vector-ref (vector-ref obj 2) idx)))