Merge branch 'master' of http://www.iro.umontreal.ca/~gambit/repo/gambit
[gambit-c.git] / gsc / _codegen.scm
blobe8a69bc392151d74118952ecd9c8841d4f2ed093
1 ;;;============================================================================
3 ;;; File: "_codegen.scm"
5 ;;; Copyright (c) 2010-2012 by Marc Feeley, All Rights Reserved.
7 ;;;============================================================================
9 ;;; This module implements the code generation infrastructure.
11 (namespace ("_codegen#") ("" include))
12 (include "~~lib/gambit#.scm")
14 (include "_asm#.scm")
15 (include "_codegen#.scm")
17 (codegen-implement)
19 ;;;============================================================================
21 (define (make-codegen-context)
22   (let ((cgc (make-vector (+ (asm-code-block-size) 3) 'codegen-context)))
23     (codegen-context-listing-format-set! cgc #f)
24     (codegen-context-arch-set!           cgc #f)
25     (codegen-context-fixup-list-set!     cgc '())
26     cgc))
28 (define (codegen-context-listing-format cgc)
29   (vector-ref cgc (+ (asm-code-block-size) 0)))
31 (define (codegen-context-listing-format-set! cgc x)
32   (vector-set! cgc (+ (asm-code-block-size) 0) x))
34 (define (codegen-context-arch cgc)
35   (vector-ref cgc (+ (asm-code-block-size) 1)))
37 (define (codegen-context-arch-set! cgc x)
38   (vector-set! cgc (+ (asm-code-block-size) 1) x))
40 (define (codegen-context-fixup-list cgc)
41   (vector-ref cgc (+ (asm-code-block-size) 2)))
43 (define (codegen-context-fixup-list-set! cgc x)
44   (vector-set! cgc (+ (asm-code-block-size) 2) x))
46 ;;;============================================================================