Linux GNU 11.4.0 Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 96.8% 30 / 0 / 31
Functions: 100.0% 2 / 4 / 6
Branches: 42.3% 353 / 0 / 835

OMCompiler/SimulationRuntime/c/meta/meta_modelica.h
Line Branch Exec Source
1 /*
2 * This file belongs to the OpenModelica Run-Time System
3 *
4 * Copyright (c) 1998-2026, Open Source Modelica Consortium (OSMC), c/o Linköpings
5 * universitet, Department of Computer and Information Science, SE-58183 Linköping, Sweden. All rights
6 * reserved.
7 *
8 * THIS PROGRAM IS PROVIDED UNDER THE TERMS OF THE BSD NEW LICENSE OR THE
9 * AGPL VERSION 3 LICENSE OR THE OSMC PUBLIC LICENSE (OSMC-PL) VERSION 1.8. ANY
10 * USE, REPRODUCTION OR DISTRIBUTION OF THIS PROGRAM CONSTITUTES RECIPIENT'S
11 * ACCEPTANCE OF THE BSD NEW LICENSE OR THE OSMC PUBLIC LICENSE OR THE AGPL
12 * VERSION 3, ACCORDING TO RECIPIENTS CHOICE.
13 *
14 * The OpenModelica software and the OSMC (Open Source Modelica Consortium) Public License
15 * (OSMC-PL) are obtained from OSMC, either from the above address, from the URLs:
16 * http://www.openmodelica.org or https://github.com/OpenModelica/ or
17 * http://www.ida.liu.se/projects/OpenModelica, and in the OpenModelica distribution. GNU
18 * AGPL version 3 is obtained from: https://www.gnu.org/licenses/licenses.html#GPL. The BSD NEW
19 * License is obtained from: http://www.opensource.org/licenses/BSD-3-Clause.
20 *
21 * This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, EXCEPT AS EXPRESSLY
23 * SET FORTH IN THE BY RECIPIENT SELECTED SUBSIDIARY LICENSE CONDITIONS OF
24 * OSMC-PL.
25 *
26 */
27
28 /* File: meta_modelica.h
29 * Description: This is the C header file for the C code generated from
30 * Modelica. It includes e.g. the C object representation of the builtin types
31 * and arrays, etc.
32 */
33
34 /* Including this header makes the translation unit MetaModelica. Generated
35 code compiled with plain flags (-d=gen, bootstrapping) gets the define here,
36 before util/modelica.h picks the counted vocabulary. */
37 #ifndef OMC_METAMODELICA_RUNTIME
38 #define OMC_METAMODELICA_RUNTIME 1
39 #endif
40
41 #ifndef META_MODELICA_H_
42 #define META_MODELICA_H_
43
44 #if defined(__cplusplus)
45 extern "C" {
46 #endif
47
48 #include <stdio.h>
49 #include <stdlib.h>
50 #include <stdarg.h>
51 #include <string.h>
52 #include <errno.h>
53 #include "../gc/omc_gc.h"
54 #include "../omc_inline.h"
55 #include "../openmodelica.h"
56 #include "meta_modelica_string.h"
57
58 /* gc/omc_gc.h was included first and bound the counted allocator: boxes built
59 here would be invisible to the collector. */
60 #if defined(OMC_NO_BOEHM_GC)
61 #error "MetaModelica translation unit built against the counted runtime: add -DOMC_METAMODELICA_RUNTIME=1"
62 #endif
63
64 /* The box vocabulary of generated code. The literal macros differ per runtime,
65 so the code generator names them directly (litDefBox and friends). */
66 #define OMC_BOX_FIELD(X, I) MMC_FETCH(MMC_OFFSET(MMC_UNTAGPTR(X), I))
67 #define omc_mk_rcon mmc_mk_rcon
68 #define omc_mk_real mmc_mk_real
69 #define omc_mk_integer mmc_mk_integer
70 #define omc_mk_boolean mmc_mk_boolean
71 #define omc_mk_enumeration mmc_mk_integer
72 #define omc_mk_icon mmc_mk_icon
73 #define omc_mk_bcon mmc_mk_bcon
74 #define omc_mk_string mmc_mk_string
75 #define omc_mk_modelica_array mmc_mk_modelica_array
76 #define omc_unbox_real mmc_unbox_real
77 #define omc_unbox_integer mmc_unbox_integer
78 #define omc_unbox_boolean mmc_unbox_boolean
79 #define omc_unbox_string mmc_unbox_string
80 #define omc_unbox_array mmc_unbox_array
81 #define omc_mk_box mmc_mk_box
82 #define omc_mk_box0 mmc_mk_box0
83 #define omc_mk_box1 mmc_mk_box1
84 #define omc_mk_box2 mmc_mk_box2
85 #define omc_mk_box3 mmc_mk_box3
86 #define omc_mk_box4 mmc_mk_box4
87 #define omc_mk_box5 mmc_mk_box5
88 #define omc_mk_box6 mmc_mk_box6
89 #define omc_mk_box7 mmc_mk_box7
90 #define omc_mk_box8 mmc_mk_box8
91 #define omc_mk_box9 mmc_mk_box9
92 #define omc_mk_box10 mmc_mk_box10
93 #define omc_mk_box11 mmc_mk_box11
94 #define omc_mk_box12 mmc_mk_box12
95 #define omc_mk_box13 mmc_mk_box13
96 #define omc_mk_box14 mmc_mk_box14
97 #define omc_mk_box15 mmc_mk_box15
98 #define omc_mk_box16 mmc_mk_box16
99 #define omc_mk_box17 mmc_mk_box17
100 #define omc_mk_box18 mmc_mk_box18
101 #define omc_mk_box19 mmc_mk_box19
102 #define omc_mk_box20 mmc_mk_box20
103 #include "meta_modelica_data.h"
104 #include "../util/omc_init.h"
105
106 static inline void* mmc_mk_icon(mmc_sint_t i)
107 {
108
71/299
✗ Branch 0 not taken.
✓ Branch 0 taken 24443 times.
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 1 taken 1554 times.
✓ Branch 1 taken 1859 times.
✗ Branch 2 not taken.
✓ Branch 2 taken 401 times.
✓ Branch 2 taken 21426 times.
✗ Branch 2 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 3 not taken.
✗ Branch 3 not taken.
✗ Branch 3 not taken.
✗ Branch 3 not taken.
✗ Branch 3 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 4 taken 76292 times.
✓ Branch 4 taken 8919 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 5 taken 14 times.
✓ Branch 5 taken 9247 times.
✓ Branch 5 taken 55376 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 6 taken 121081 times.
✓ Branch 6 taken 1798 times.
✗ Branch 6 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 8 not taken.
✗ Branch 8 not taken.
✗ Branch 8 not taken.
✗ Branch 8 not taken.
✗ Branch 8 not taken.
✗ Branch 8 not taken.
✗ Branch 8 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 9 not taken.
✗ Branch 9 not taken.
✗ Branch 9 not taken.
✓ Branch 9 taken 3365 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3304 times.
✓ Branch 10 taken 31146 times.
✗ Branch 10 not taken.
✗ Branch 10 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 11 taken 5 times.
✗ Branch 11 not taken.
✗ Branch 11 not taken.
✓ Branch 11 taken 8 times.
✗ Branch 11 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 12 not taken.
✓ Branch 12 taken 3544499 times.
✗ Branch 12 not taken.
✗ Branch 12 not taken.
✗ Branch 12 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 13 taken 40813 times.
✗ Branch 13 not taken.
✗ Branch 13 not taken.
✓ Branch 13 taken 6401 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 14 not taken.
✓ Branch 14 taken 1751 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 15 not taken.
✗ Branch 15 not taken.
✗ Branch 15 not taken.
✗ Branch 15 not taken.
✓ Branch 15 taken 3828 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 5 times.
✗ Branch 16 not taken.
✗ Branch 16 not taken.
✗ Branch 16 not taken.
✗ Branch 16 not taken.
✗ Branch 16 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 17 not taken.
✗ Branch 17 not taken.
✓ Branch 17 taken 5 times.
✗ Branch 17 not taken.
✗ Branch 17 not taken.
✗ Branch 17 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 18 not taken.
✗ Branch 18 not taken.
✓ Branch 18 taken 289 times.
✗ Branch 18 not taken.
✗ Branch 18 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 19 not taken.
✗ Branch 19 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 20 not taken.
✗ Branch 20 not taken.
✗ Branch 20 not taken.
✗ Branch 20 not taken.
✓ Branch 20 taken 17360 times.
✗ Branch 20 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 21 not taken.
✓ Branch 21 taken 8030 times.
✗ Branch 21 not taken.
✗ Branch 21 not taken.
✗ Branch 21 not taken.
✗ Branch 21 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 22 taken 264 times.
✗ Branch 22 not taken.
✓ Branch 22 taken 70 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 23 not taken.
✗ Branch 23 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 24 not taken.
✗ Branch 24 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 25 not taken.
✓ Branch 25 taken 5 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 26 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 29 not taken.
✓ Branch 30 taken 14 times.
✗ Branch 30 not taken.
✗ Branch 30 not taken.
✓ Branch 30 taken 196 times.
✗ Branch 31 not taken.
✗ Branch 31 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 36 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 37 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 55705 times.
✗ Branch 38 not taken.
✗ Branch 38 not taken.
✓ Branch 38 taken 188426 times.
✓ Branch 39 taken 180 times.
✗ Branch 39 not taken.
✗ Branch 39 not taken.
✗ Branch 39 not taken.
✓ Branch 39 taken 22735 times.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 40 not taken.
✗ Branch 40 not taken.
✗ Branch 40 not taken.
✓ Branch 40 taken 210129 times.
✗ Branch 40 not taken.
✗ Branch 40 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✓ Branch 41 taken 1032 times.
✗ Branch 41 not taken.
✗ Branch 41 not taken.
✗ Branch 41 not taken.
✗ Branch 41 not taken.
✓ Branch 42 taken 16638 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 568 times.
✗ Branch 43 not taken.
✓ Branch 44 taken 17136 times.
✗ Branch 44 not taken.
✓ Branch 45 taken 70 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 6900 times.
✗ Branch 46 not taken.
✗ Branch 46 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✓ Branch 47 taken 1729 times.
✗ Branch 47 not taken.
✗ Branch 47 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 48 not taken.
✗ Branch 48 not taken.
✗ Branch 48 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 49 not taken.
✗ Branch 49 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 51 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 52 not taken.
✗ Branch 54 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 3 times.
✗ Branch 55 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✓ Branch 69 taken 836450 times.
✗ Branch 70 not taken.
✓ Branch 73 taken 51787 times.
✓ Branch 74 taken 47674 times.
✓ Branch 75 taken 248 times.
✓ Branch 76 taken 292 times.
✓ Branch 77 taken 722 times.
✓ Branch 78 taken 4027 times.
✓ Branch 79 taken 1655 times.
✓ Branch 80 taken 6968 times.
✓ Branch 81 taken 1751 times.
✓ Branch 82 taken 3828 times.
✓ Branch 83 taken 5 times.
✓ Branch 84 taken 5 times.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✓ Branch 87 taken 16 times.
✓ Branch 88 taken 15 times.
✓ Branch 89 taken 79045 times.
✗ Branch 90 not taken.
✓ Branch 90 taken 113059 times.
✗ Branch 91 not taken.
✓ Branch 91 taken 2043 times.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✗ Branch 107 not taken.
✗ Branch 108 not taken.
✗ Branch 109 not taken.
✗ Branch 110 not taken.
✗ Branch 122 not taken.
✗ Branch 123 not taken.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✗ Branch 126 not taken.
✗ Branch 127 not taken.
✗ Branch 128 not taken.
✗ Branch 129 not taken.
✓ Branch 132 taken 3600 times.
✓ Branch 133 taken 1305 times.
✓ Branch 135 taken 14396 times.
✓ Branch 136 taken 7516 times.
✗ Branch 199 not taken.
✗ Branch 200 not taken.
✗ Branch 221 not taken.
✗ Branch 222 not taken.
✗ Branch 230 not taken.
✓ Branch 231 taken 1069 times.
✗ Branch 232 not taken.
✓ Branch 233 taken 1069 times.
✗ Branch 247 not taken.
✗ Branch 248 not taken.
✗ Branch 249 not taken.
✗ Branch 250 not taken.
501445592 return MMC_IMMEDIATE(MMC_TAGFIXNUM(i));
109 }
110
111 union mmc_double_as_words {
112 double d;
113 mmc_uint_t data[2];
114 };
115
116 static inline double mmc_prim_get_real(void *p)
117 {
118 union mmc_double_as_words u;
119 mmc_uint_t *data = &(MMC_REALDATA(p)[0]);
120
121 117898670 u.data[0] = *data;
122 u.data[1] = *(data + 1);
123
278/532
<unknown function 108>:
✓ Branch 0 taken 388941 times.
✓ Branch 0 taken 123918 times.
✗ Branch 0 not taken.
✗ Branch 0 not taken.
✓ Branch 1 taken 102601 times.
✓ Branch 1 taken 319024 times.
✓ Branch 1 taken 200523 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 2 taken 81241 times.
✓ Branch 2 taken 17 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 3 taken 2322 times.
✓ Branch 3 taken 13 times.
✓ Branch 3 taken 7687 times.
✗ Branch 3 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 4 taken 77457 times.
✗ Branch 4 not taken.
✓ Branch 4 taken 9 times.
✓ Branch 4 taken 156976 times.
✓ Branch 4 taken 90 times.
✓ Branch 5 taken 3 times.
✓ Branch 5 taken 8969 times.
✓ Branch 5 taken 585 times.
✓ Branch 5 taken 37 times.
✓ Branch 5 taken 1742 times.
✓ Branch 6 taken 1 time.
✓ Branch 6 taken 29 times.
✓ Branch 6 taken 878 times.
✓ Branch 6 taken 208083 times.
✗ Branch 6 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 50 times.
✓ Branch 7 taken 2753 times.
✓ Branch 7 taken 2519 times.
✓ Branch 7 taken 43430 times.
✓ Branch 7 taken 77 times.
✓ Branch 7 taken 3148 times.
✗ Branch 8 not taken.
✓ Branch 8 taken 442 times.
✓ Branch 8 taken 157093 times.
✓ Branch 8 taken 24 times.
✓ Branch 8 taken 6 times.
✓ Branch 8 taken 211 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 80 times.
✓ Branch 9 taken 1013 times.
✓ Branch 9 taken 43430 times.
✓ Branch 9 taken 6605 times.
✗ Branch 9 not taken.
✗ Branch 9 not taken.
✓ Branch 10 taken 14 times.
✗ Branch 10 not taken.
✓ Branch 10 taken 2738 times.
✓ Branch 10 taken 4325 times.
✗ Branch 10 not taken.
✓ Branch 10 taken 114 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 21 times.
✓ Branch 11 taken 1 time.
✓ Branch 11 taken 323 times.
✓ Branch 11 taken 4902 times.
✓ Branch 11 taken 127 times.
✓ Branch 11 taken 45 times.
✗ Branch 11 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 14 times.
✗ Branch 12 not taken.
✓ Branch 12 taken 2805 times.
✓ Branch 12 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 12 taken 2528 times.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 13 taken 16 times.
✗ Branch 13 not taken.
✓ Branch 13 taken 871 times.
✓ Branch 13 taken 17 times.
✗ Branch 13 not taken.
✗ Branch 13 not taken.
✗ Branch 13 not taken.
✓ Branch 14 taken 1410 times.
✓ Branch 14 taken 43432 times.
✗ Branch 14 not taken.
✓ Branch 14 taken 56 times.
✓ Branch 14 taken 2041665 times.
✗ Branch 14 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 34 times.
✓ Branch 15 taken 8224 times.
✓ Branch 15 taken 11673 times.
✓ Branch 15 taken 26967 times.
✓ Branch 15 taken 180306 times.
✗ Branch 15 not taken.
✗ Branch 15 not taken.
✗ Branch 15 not taken.
✓ Branch 16 taken 54 times.
✓ Branch 16 taken 8080 times.
✓ Branch 16 taken 9122 times.
✓ Branch 16 taken 16950 times.
✗ Branch 16 not taken.
✓ Branch 16 taken 56 times.
✓ Branch 16 taken 1305696 times.
✗ Branch 16 not taken.
✓ Branch 16 taken 33276 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 44 times.
✓ Branch 17 taken 124109 times.
✓ Branch 17 taken 139 times.
✓ Branch 17 taken 854 times.
✓ Branch 17 taken 26853 times.
✓ Branch 17 taken 2799 times.
✗ Branch 17 not taken.
✗ Branch 17 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 10 times.
✓ Branch 18 taken 1266 times.
✓ Branch 18 taken 1410 times.
✓ Branch 18 taken 8883 times.
✗ Branch 18 not taken.
✗ Branch 18 not taken.
✗ Branch 18 not taken.
✓ Branch 18 taken 20 times.
✓ Branch 18 taken 18 times.
✓ Branch 19 taken 10 times.
✓ Branch 19 taken 12513 times.
✓ Branch 19 taken 36 times.
✓ Branch 19 taken 9612 times.
✓ Branch 19 taken 127 times.
✗ Branch 19 not taken.
✓ Branch 19 taken 158926 times.
✓ Branch 19 taken 12277 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 10 times.
✓ Branch 20 taken 1709 times.
✓ Branch 20 taken 183 times.
✗ Branch 20 not taken.
✗ Branch 20 not taken.
✓ Branch 20 taken 674 times.
✗ Branch 20 not taken.
✓ Branch 20 taken 903 times.
✓ Branch 20 taken 34 times.
✓ Branch 21 taken 10 times.
✗ Branch 21 not taken.
✓ Branch 21 taken 2288 times.
✓ Branch 21 taken 848 times.
✓ Branch 21 taken 127 times.
✗ Branch 21 not taken.
✗ Branch 21 not taken.
✗ Branch 21 not taken.
✗ Branch 21 not taken.
✓ Branch 21 taken 1 time.
✓ Branch 22 taken 10 times.
✓ Branch 22 taken 2216 times.
✓ Branch 22 taken 1410 times.
✓ Branch 22 taken 183 times.
✓ Branch 22 taken 1 time.
✗ Branch 22 not taken.
✓ Branch 22 taken 1177700 times.
✓ Branch 22 taken 33 times.
✓ Branch 23 taken 2077 times.
✗ Branch 23 not taken.
✓ Branch 23 taken 848 times.
✓ Branch 23 taken 17 times.
✗ Branch 23 not taken.
✓ Branch 23 taken 755446 times.
✓ Branch 23 taken 11506 times.
✓ Branch 24 taken 139 times.
✓ Branch 24 taken 1410 times.
✓ Branch 24 taken 26928 times.
✓ Branch 24 taken 4 times.
✗ Branch 24 not taken.
✓ Branch 24 taken 28414 times.
✓ Branch 25 taken 9154 times.
✓ Branch 25 taken 848 times.
✓ Branch 25 taken 14966 times.
✗ Branch 25 not taken.
✓ Branch 25 taken 12208 times.
✗ Branch 26 not taken.
✓ Branch 26 taken 1410 times.
✓ Branch 26 taken 11964 times.
✗ Branch 26 not taken.
✗ Branch 26 not taken.
✓ Branch 26 taken 1168742 times.
✓ Branch 26 taken 5 times.
✓ Branch 27 taken 4890 times.
✓ Branch 27 taken 39 times.
✓ Branch 27 taken 848 times.
✓ Branch 27 taken 14964 times.
✓ Branch 27 taken 8854 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 1410 times.
✓ Branch 28 taken 255 times.
✗ Branch 28 not taken.
✓ Branch 28 taken 219 times.
✗ Branch 29 not taken.
✗ Branch 29 not taken.
✓ Branch 29 taken 3962 times.
✗ Branch 29 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 30 taken 4780 times.
✓ Branch 30 taken 127 times.
✗ Branch 30 not taken.
✓ Branch 30 taken 311 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 2074 times.
✗ Branch 31 not taken.
✓ Branch 31 taken 848 times.
✓ Branch 31 taken 7663044 times.
✓ Branch 31 taken 50479 times.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
✓ Branch 32 taken 1406 times.
✓ Branch 32 taken 113818 times.
✗ Branch 32 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 time.
✓ Branch 33 taken 3639 times.
✓ Branch 33 taken 14948 times.
✗ Branch 33 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 33 not taken.
✓ Branch 34 taken 5101 times.
✓ Branch 34 taken 1224899 times.
✗ Branch 34 not taken.
✗ Branch 34 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✓ Branch 35 taken 848 times.
✓ Branch 35 taken 119372 times.
✗ Branch 35 not taken.
✗ Branch 35 not taken.
✗ Branch 35 not taken.
✓ Branch 36 taken 1406 times.
✓ Branch 36 taken 1120459 times.
✗ Branch 36 not taken.
✗ Branch 36 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✓ Branch 37 taken 848 times.
✗ Branch 37 not taken.
✗ Branch 37 not taken.
✗ Branch 37 not taken.
✗ Branch 37 not taken.
✓ Branch 38 taken 1405 times.
✓ Branch 38 taken 104424 times.
✓ Branch 38 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 38 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✓ Branch 39 taken 568 times.
✗ Branch 39 not taken.
✗ Branch 39 not taken.
✗ Branch 39 not taken.
✓ Branch 39 taken 5 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 356 times.
✓ Branch 40 taken 119372 times.
✓ Branch 40 taken 6210 times.
✗ Branch 40 not taken.
✗ Branch 40 not taken.
✓ Branch 40 taken 234 times.
✗ Branch 41 not taken.
✗ Branch 41 not taken.
✓ Branch 41 taken 43875 times.
✗ Branch 41 not taken.
✓ Branch 41 taken 5 times.
✓ Branch 41 taken 4623 times.
✗ Branch 42 not taken.
✓ Branch 42 taken 150715 times.
✗ Branch 42 not taken.
✓ Branch 42 taken 131 times.
✗ Branch 43 not taken.
✗ Branch 43 not taken.
✓ Branch 43 taken 8 times.
✗ Branch 43 not taken.
✗ Branch 43 not taken.
✓ Branch 44 taken 98 times.
✓ Branch 44 taken 30 times.
✓ Branch 44 taken 375 times.
✗ Branch 45 not taken.
✗ Branch 45 not taken.
✗ Branch 45 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 45 taken 4678 times.
✓ Branch 46 taken 60 times.
✗ Branch 46 not taken.
✓ Branch 46 taken 846570 times.
✗ Branch 46 not taken.
✓ Branch 46 taken 4 times.
✓ Branch 46 taken 375 times.
✗ Branch 47 not taken.
✗ Branch 47 not taken.
✗ Branch 47 not taken.
✓ Branch 47 taken 1773254 times.
✗ Branch 47 not taken.
✓ Branch 47 taken 557 times.
✗ Branch 47 not taken.
✓ Branch 47 taken 4674 times.
✓ Branch 48 taken 38 times.
✗ Branch 48 not taken.
✓ Branch 48 taken 462143 times.
✗ Branch 48 not taken.
✓ Branch 48 taken 3341 times.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 49 not taken.
✗ Branch 49 not taken.
✓ Branch 49 taken 385357 times.
✓ Branch 49 taken 1 time.
✓ Branch 49 taken 52 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 50 not taken.
✗ Branch 50 not taken.
✗ Branch 50 not taken.
✓ Branch 50 taken 8 times.
✓ Branch 50 taken 375 times.
✗ Branch 51 not taken.
✓ Branch 51 taken 38 times.
✗ Branch 51 not taken.
✗ Branch 51 not taken.
✗ Branch 51 not taken.
✓ Branch 51 taken 490 times.
✓ Branch 51 taken 4674 times.
✗ Branch 52 not taken.
✗ Branch 52 not taken.
✓ Branch 52 taken 8244 times.
✓ Branch 52 taken 84 times.
✗ Branch 52 not taken.
✓ Branch 52 taken 15 times.
✓ Branch 52 taken 375 times.
✗ Branch 53 not taken.
✗ Branch 53 not taken.
✗ Branch 53 not taken.
✓ Branch 53 taken 451065 times.
✗ Branch 53 not taken.
✗ Branch 53 not taken.
✗ Branch 53 not taken.
✗ Branch 53 not taken.
✓ Branch 53 taken 4669 times.
✗ Branch 54 not taken.
✗ Branch 54 not taken.
✗ Branch 54 not taken.
✓ Branch 54 taken 3 times.
✗ Branch 54 not taken.
✓ Branch 54 taken 288 times.
✗ Branch 55 not taken.
✓ Branch 55 taken 38 times.
✗ Branch 55 not taken.
✗ Branch 55 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 56 not taken.
✗ Branch 56 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 57 not taken.
✗ Branch 57 not taken.
✗ Branch 57 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 58 not taken.
✓ Branch 58 taken 11 times.
✗ Branch 58 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 59 not taken.
✗ Branch 59 not taken.
✗ Branch 59 not taken.
✓ Branch 59 taken 3 times.
✓ Branch 60 taken 38 times.
✗ Branch 60 not taken.
✗ Branch 60 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 61 not taken.
✗ Branch 61 not taken.
✗ Branch 61 not taken.
✓ Branch 61 taken 802 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 62 not taken.
✓ Branch 62 taken 4 times.
✗ Branch 62 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 1 time.
✗ Branch 63 not taken.
✗ Branch 63 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 64 taken 2510 times.
✓ Branch 64 taken 4 times.
✗ Branch 64 not taken.
✓ Branch 65 taken 1 time.
✗ Branch 65 not taken.
✗ Branch 65 not taken.
✗ Branch 65 not taken.
✗ Branch 66 not taken.
✓ Branch 66 taken 88 times.
✗ Branch 66 not taken.
✓ Branch 66 taken 1 time.
✓ Branch 67 taken 1 time.
✗ Branch 67 not taken.
✗ Branch 67 not taken.
✓ Branch 67 taken 4 times.
✓ Branch 67 taken 1 time.
✗ Branch 68 not taken.
✗ Branch 68 not taken.
✓ Branch 68 taken 26955 times.
✓ Branch 68 taken 3750 times.
✗ Branch 69 not taken.
✗ Branch 69 not taken.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 70 not taken.
✓ Branch 70 taken 9896 times.
✗ Branch 70 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 71 not taken.
✓ Branch 71 taken 26545 times.
✗ Branch 71 not taken.
✓ Branch 71 taken 5855 times.
✗ Branch 72 not taken.
✗ Branch 72 not taken.
✗ Branch 72 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✓ Branch 73 taken 33 times.
✓ Branch 73 taken 19795 times.
✗ Branch 73 not taken.
✓ Branch 73 taken 821 times.
✗ Branch 74 not taken.
✓ Branch 74 taken 469705 times.
✗ Branch 74 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✓ Branch 75 taken 6750 times.
✓ Branch 75 taken 257 times.
✓ Branch 75 taken 1 time.
✗ Branch 76 not taken.
✗ Branch 76 not taken.
✓ Branch 76 taken 9896 times.
✗ Branch 77 not taken.
✓ Branch 77 taken 33 times.
✗ Branch 77 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✓ Branch 78 taken 9896 times.
✓ Branch 78 taken 848 times.
✗ Branch 79 not taken.
✓ Branch 79 taken 4675 times.
✗ Branch 80 not taken.
✓ Branch 80 taken 65981 times.
✗ Branch 80 not taken.
✓ Branch 81 taken 4 times.
✓ Branch 82 taken 4675 times.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✓ Branch 83 taken 4 times.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✓ Branch 85 taken 4 times.
✗ Branch 85 not taken.
✓ Branch 86 taken 37864 times.
✗ Branch 86 not taken.
✗ Branch 86 not taken.
✓ Branch 87 taken 3826 times.
✓ Branch 87 taken 4 times.
✓ Branch 88 taken 34038 times.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✓ Branch 89 taken 4 times.
✗ Branch 90 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✓ Branch 91 taken 4 times.
✓ Branch 92 taken 18 times.
✗ Branch 93 not taken.
✓ Branch 94 taken 23219 times.
✓ Branch 95 taken 1110 times.
✓ Branch 96 taken 22109 times.
✗ Branch 97 not taken.
✓ Branch 98 taken 3 times.
✗ Branch 99 not taken.
✓ Branch 100 taken 1 time.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✗ Branch 103 not taken.
✗ Branch 104 not taken.
✓ Branch 105 taken 3748048 times.
✓ Branch 106 taken 2311739 times.
✓ Branch 107 taken 247751 times.
✓ Branch 108 taken 31515 times.
✓ Branch 109 taken 3748048 times.
✓ Branch 110 taken 2280224 times.
✓ Branch 112 taken 766653 times.
✓ Branch 113 taken 2670219 times.
✓ Branch 114 taken 1052003 times.
✓ Branch 115 taken 1484 times.
✓ Branch 116 taken 432465 times.
✓ Branch 117 taken 23243 times.
✓ Branch 118 taken 177067 times.
✗ Branch 119 not taken.
✓ Branch 120 taken 4795 times.
✓ Branch 121 taken 96266 times.
✓ Branch 122 taken 26433 times.
✓ Branch 123 taken 10179 times.
✗ Branch 124 not taken.
✗ Branch 125 not taken.
✓ Branch 126 taken 689847 times.
✓ Branch 127 taken 1059823 times.
✓ Branch 128 taken 659778 times.
✓ Branch 129 taken 1059456 times.
✓ Branch 130 taken 1405477 times.
✓ Branch 131 taken 313701 times.
✗ Branch 135 not taken.
✗ Branch 136 not taken.
✗ Branch 137 not taken.
✗ Branch 138 not taken.
✗ Branch 139 not taken.
✗ Branch 140 not taken.
✗ Branch 141 not taken.
✗ Branch 142 not taken.
<unknown function 121>:
✓ Branch 0 taken 237 times.
✓ Branch 1 taken 2666 times.
115389527 return u.d;
124 }
125
126 static inline void mmc_prim_set_real(struct mmc_real *p, double d)
127 {
128 union mmc_double_as_words u;
129 mmc_uint_t *data;
130 38274320 u.d = d;
131
132 data = &(p->data[0]);
133 38274320 *data = u.data[0];
134 38274320 *(data + 1) = u.data[1];
135 }
136
137 char* mmc_mk_scon_len_ret_ptr(size_t nbytes);
138
139 /* Non-varargs versions */
140 #include "meta_modelica_mk_box.h"
141
142 645034 static inline void *mmc_mk_box(mmc_sint_t _slots, mmc_uint_t ctor, ...)
143 {
144 mmc_sint_t i;
145 va_list argp;
146
147 645034 struct mmc_struct *p = (struct mmc_struct *) mmc_alloc_words(_slots+1);
148 645034 p->header = MMC_STRUCTHDR(_slots, ctor);
149 645034 va_start(argp, ctor);
150
2/2
✓ Branch 0 taken 21172775 times.
✓ Branch 1 taken 645034 times.
21817809 for (i = 0; i < _slots; i++) {
151 21172775 p->data[i] = va_arg(argp, void*);
152 }
153 645034 va_end(argp);
154 #ifdef MMC_MK_DEBUG
155 fprintf(stderr, "BOXNN slots:%d ctor: %u\n", _slots, ctor); fflush(NULL);
156 #endif
157 645034 return MMC_TAGPTR(p);
158 }
159
160 static const MMC_DEFSTRUCT0LIT(mmc_nil,0);
161 static const MMC_DEFSTRUCT0LIT(mmc_none,1);
162
163 #define mmc_mk_nil() MMC_REFSTRUCTLIT(mmc_nil)
164 #define mmc_mk_none() MMC_REFSTRUCTLIT(mmc_none)
165
166 #define MMC_CONS_CTOR 1
167
168 static inline void *mmc_mk_cons(void *car, void *cdr)
169 {
170 1613178002 return mmc_mk_box2(MMC_CONS_CTOR, car, cdr);
171 }
172
173 static inline void *mmc_mk_some(void *x)
174 {
175 309222650 return mmc_mk_box1(1, x);
176 }
177
178 static inline void *mmc__mk__some(void *x)
179 {
180 return mmc_mk_some(x);
181 }
182
183 extern void *mmc_mk_box_arr(mmc_sint_t _slots, mmc_uint_t ctor, void** args);
184 22637070 static inline void *mmc_mk_box_no_assign(mmc_sint_t _slots, mmc_uint_t ctor, int is_atomic)
185 {
186 struct mmc_struct *p = NULL;
187
2/2
✓ Branch 0 taken 2802188 times.
✓ Branch 1 taken 19834882 times.
22637070 if (is_atomic)
188 {
189 2802188 p = (struct mmc_struct*)mmc_alloc_words_atomic(_slots+1);
190 }
191 else
192 {
193 19834882 p = (struct mmc_struct*)mmc_alloc_words(_slots+1);
194 }
195 22637070 p->header = MMC_STRUCTHDR(_slots, ctor);
196 #ifdef MMC_MK_DEBUG
197 fprintf(stderr, "STRUCT NO ASSIGN slots%d ctor %u\n", _slots, ctor); fflush(NULL);
198 #endif
199 22637070 return MMC_TAGPTR(p);
200 }
201
202 extern modelica_boolean valueEq(modelica_metatype lhs,modelica_metatype rhs);
203 extern modelica_integer valueCompare(modelica_metatype lhs,modelica_metatype rhs);
204
205 extern modelica_integer valueHashMod(modelica_metatype p,modelica_integer mod);
206 extern void* boxptr_valueHashMod(threadData_t *,void *p, void *mod);
207
208 extern void mmc__unbox(modelica_metatype box, void* res);
209
210 #define mmc__uniontype__metarecord__typedef__equal(UT,CTOR,NFIELDS) (MMC_GETHDR(UT)==MMC_STRUCTHDR(NFIELDS+1,CTOR+3))
211
212 extern void debug__print(void*prefix,void*any); /* For debugging */
213 extern void initializeStringBuffer(void);
214 extern char* anyString(void*any); /* For debugging in external functions */
215 extern void* mmc_anyString(void*any); /* For debugging */
216 modelica_metatype mmc_gdb_listGet(threadData_t* threadData, modelica_metatype lst, modelica_integer i); /* For debugging */
217 modelica_metatype mmc_gdb_arrayGet(threadData_t* threadData, modelica_metatype arr, modelica_integer i); /* For debugging */
218 extern void printAny(void*any); /* For debugging */
219 extern void printTypeOfAny(void*any); /* For debugging */
220 extern char* getTypeOfAny(void*any, int inRecord); /* For debugging */
221 extern char* getRecordElementName(void*any, int element); /* For debugging */
222 extern int isOptionNone(void*any); /* For debugging */
223 extern void changeStdStreamBuffer(void); /* For debugging */
224 extern modelica_integer mmc_gdb_arrayLength(modelica_metatype arr); /* For debugging */
225
226 /* Debugging functions used by OMEdit */
227 typedef enum metaType
228 {
229 record_metaType = 0,
230 list_metaType,
231 option_metaType,
232 tuple_metaType,
233 array_metaType
234 } metaType;
235
236 extern char* getMetaTypeElement(modelica_metatype arr, modelica_integer i, metaType mt);
237
238 /*
239 * Generated (Meta)Records should access a static, constant value of
240 * the record_description structure. This means the additional cost
241 * of including the description is 1 word of memory and O(1) time.
242 * When sending structures between the compiler and generated files,
243 * the descriptions will be duplicated, and cost additional memory
244 * for each and every Values.Value copied. /sjoelund 2009-05-20
245 */
246 #if defined(OMC_MINIMAL_RUNTIME)
247 static void* mmc_mk_rcon(double d)
248 {
249 struct mmc_real *p = (struct mmc_real*)mmc_alloc_words_atomic(MMC_SIZE_DBL/MMC_SIZE_INT + 1);
250 mmc_prim_set_real(p, d);
251 p->header = MMC_REALHDR;
252 #ifdef MMC_MK_DEBUG
253 fprintf(stderr, "REAL size: %u\n", MMC_SIZE_DBL/MMC_SIZE_INT+1); fflush(NULL);
254 #endif
255 return MMC_TAGPTR(p);
256 }
257 static void* mmc_mk_modelica_array(base_array_t arr)
258 {
259 base_array_t *cpy = mmc_alloc_words(sizeof(arr)/sizeof(void*) + 1);
260 memcpy(cpy, &arr, sizeof(base_array_t));
261 clone_base_array_spec(&arr, cpy);
262 /* Note: The data is hopefully not stack-allocated and can be passed this way */
263 return cpy;
264 }
265 #else
266 void* mmc_mk_rcon(double d);
267 void* mmc_mk_modelica_array(base_array_t);
268 #endif
269
270 #include "../openmodelica.h"
271 #include "meta_modelica_segv.h"
272 #include "meta_modelica_builtin.h"
273 #include "../util/omc_error.h"
274
275 #if defined(__cplusplus)
276 }
277 #endif
278
279 /* adrpo: undefine _inline for mingw32 and mingw64 */
280 #if defined(_inline) && (defined(__MINGW32__) || defined(__MINGW64__))
281 #undef _inline
282 #endif
283
284 #endif
285