Line | Branch | Exec | Source |
---|---|---|---|
1 | #include "gwion_util.h" | ||
2 | #include "gwion_ast.h" | ||
3 | #include "gwion_env.h" | ||
4 | #include "plug.h" | ||
5 | #include "gwiondata.h" | ||
6 | #include "vm.h" | ||
7 | #include "instr.h" | ||
8 | #include "emit.h" | ||
9 | #include "gwion.h" | ||
10 | #include "specialid.h" | ||
11 | #include "pass.h" | ||
12 | |||
13 | 712 | ANN static inline GwionData *gwiondata(MemPool mp) { | |
14 | 712 | struct GwionData_ *data = mp_calloc(mp, GwionData); | |
15 | 712 | MUTEX_SETUP(data->mutex); | |
16 | 712 | return data; | |
17 | } | ||
18 | |||
19 | 707 | ANN GwionData *new_gwiondata(const MemPool mp) { | |
20 | 707 | GwionData *data = gwiondata(mp); | |
21 | 707 | map_init(&data->freearg); | |
22 | 707 | map_init(&data->id); | |
23 | 707 | return data; | |
24 | } | ||
25 | |||
26 | 5 | ANN GwionData *cpy_gwiondata(MemPool mp, const GwionData *src) { | |
27 | 5 | GwionData *data = gwiondata(mp); | |
28 | 5 | data->freearg = src->freearg; | |
29 | 5 | data->id = src->id; | |
30 | 5 | data->plugs = src->plugs; | |
31 | 5 | data->passes = src->passes; | |
32 | 5 | return data; | |
33 | } | ||
34 | |||
35 | 708 | ANN void free_gwiondata_cpy(const MemPool mp, GwionData *data) { | |
36 | 708 | MUTEX_CLEANUP(data->mutex); | |
37 | 708 | mp_free(mp, GwionData, data); | |
38 | 708 | } | |
39 | |||
40 | 707 | ANN void free_gwiondata(const Gwion gwion) { | |
41 | 707 | GwionData *data = gwion->data; | |
42 | 707 | map_release(&data->freearg); | |
43 |
2/2✓ Branch 1 taken 6380 times.
✓ Branch 2 taken 707 times.
|
7087 | for (m_uint i = 0; i < map_size(&data->id); ++i) |
44 | 6380 | mp_free(gwion->mp, SpecialId, (struct SpecialId_ *)map_at(&data->id, i)); | |
45 | 707 | map_release(&data->id); | |
46 | 707 | free_passes(gwion->mp, data->passes); | |
47 | 707 | free_gwiondata_cpy(gwion->mp, data); | |
48 | 707 | } | |
49 |