summaryrefslogtreecommitdiff
path: root/src/backend/utils/assign-stack.scm
blob: dff9fc7c3cc341986877d0a11800510e03ac7ec3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(define-module (backend utils assign-stack)
  #:export (make-location
            get-frame-size))


(define make-location)
(define get-frame-size)
(let ((dict (make-hash-table))
      (ptr 0))
  (set! make-location
        (lambda (id)
          (or (hash-ref dict id)
              (begin (set! ptr (1+ ptr))
                     (hash-set! dict id (get-frame-size))))))
  (set! get-frame-size (lambda () (* -4 ptr))))