aboutsummaryrefslogtreecommitdiff
path: root/core/runtime/docs.odin
blob: a520584c50bd4283e28f44e012ddcf9777facbfe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
package runtime

/*

package runtime has numerous entities (declarations) which are required by the compiler to function.


## Basic types and calls (and anything they rely on)

Source_Code_Location
Context
Allocator
Logger

__init_context
_cleanup_runtime


## cstring calls

cstring_to_string
cstring_len



## Required when RTTI is enabled (the vast majority of targets)

Type_Info

type_table
__type_info_of


## Hashing

default_hasher
default_hasher_cstring
default_hasher_string


## Pseudo-CRT required procedured due to LLVM but useful in general
memset
memcpy
memove


## Procedures required by the LLVM backend
umodti3
udivti3
modti3
divti3
fixdfti
fixunsdfti
fixunsdfdi
floattidf
floattidf_unsigned
truncsfhf2
truncdfhf2
gnu_h2f_ieee
gnu_f2h_ieee
extendhfsf2
__ashlti3 // wasm specific
__multi3  // wasm specific



## Required an entry point is defined (i.e. 'main')

args__


## When -no-crt is defined (and not a wasm target) (mostly due to LLVM)
_tls_index
_fltused


## Bounds checking procedures (when not disabled with -no-bounds-check)

bounds_check_error
matrix_bounds_check_error
slice_expr_error_hi
slice_expr_error_lo_hi
multi_pointer_slice_expr_error


## Type assertion check

type_assertion_check
type_assertion_check2 // takes in typeid


## Arithmetic

quo_complex32
quo_complex64
quo_complex128

mul_quaternion64
mul_quaternion128
mul_quaternion256

quo_quaternion64
quo_quaternion128
quo_quaternion256

abs_complex32
abs_complex64
abs_complex128

abs_quaternion64
abs_quaternion128
abs_quaternion256


## Comparison

memory_equal
memory_compare
memory_compare_zero

cstring_eq
cstring_ne
cstring_lt
cstring_gt
cstring_le
cstring_gt

string_eq
string_ne
string_lt
string_gt
string_le
string_gt

complex32_eq
complex32_ne
complex64_eq
complex64_ne
complex128_eq
complex128_ne

quaternion64_eq
quaternion64_ne
quaternion128_eq
quaternion128_ne
quaternion256_eq
quaternion256_ne


## Map specific calls

map_seed_from_map_data
__dynamic_map_check_grow // static map calls
map_insert_hash_dynamic  // static map calls
__dynamic_map_get // dynamic map calls
__dynamic_map_set // dynamic map calls


## Dynamic literals ([dymamic]T and map[K]V) (can be disabled with -no-dynamic-literals)

__dynamic_array_reserve
__dynamic_array_append

__dynamic_map_reserve


## Objective-C specific

objc_lookUpClass
sel_registerName
objc_allocateClassPair


## for-in `string` type

string_decode_rune
string_decode_last_rune // #reverse for

*/