6 #include "../../../include/oberon.h"
7 #include "../../oberon-internals.h"
8 #include "generator-libgccjit.h"
11 oberon_generator_init_context(oberon_context_t
* ctx
)
13 gen_context_t
* gen_context
= GC_MALLOC(sizeof *gen_context
);
14 memset(gen_context
, 0, sizeof *gen_context
);
16 ctx
-> gen_context
= gen_context
;
20 oberon_generator_destroy_context(oberon_context_t
* ctx
)
22 ctx
-> gen_context
= NULL
;
26 oberon_generator_init_type(oberon_context_t
* ctx
, oberon_type_t
* type
)
28 type
-> gen_type
= NULL
;
32 oberon_generator_init_record(oberon_context_t
* ctx
, oberon_type_t
* type
)
34 assert(type
-> class == OBERON_TYPE_RECORD
);
39 oberon_generator_init_var(oberon_context_t
* ctx
, oberon_object_t
* var
)
41 var
-> gen_var
= NULL
;
45 oberon_generator_init_proc(oberon_context_t
* ctx
, oberon_object_t
* proc
)
47 proc
-> gen_proc
= NULL
;
50 // =======================================================================
52 // =======================================================================
55 oberon_generate_begin_module(oberon_context_t
* ctx
)
61 oberon_generate_end_module(oberon_context_t
* ctx
)
67 oberon_generate_begin_proc(oberon_context_t
* ctx
, oberon_object_t
* proc
)
73 oberon_generate_call_proc(oberon_context_t
* ctx
, oberon_expr_t
* desig
)
79 oberon_generate_end_proc(oberon_context_t
* ctx
)
85 oberon_generate_return(oberon_context_t
* ctx
, oberon_expr_t
* expr
)
91 oberon_generate_assign(oberon_context_t
* ctx
, oberon_expr_t
* src
, oberon_expr_t
* dst
)
97 oberon_generate_code(oberon_context_t
* ctx
)
103 oberon_generator_dump(oberon_context_t
* ctx
, char * path
)
109 oberon_generator_get_procedure(oberon_context_t
* ctx
, const char * name
)
115 oberon_generator_get_var(oberon_context_t
* ctx
, const char * name
)