@salang/sa 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/bin/sa.js +19 -1
  2. package/package.json +8 -7
  3. package/sa_std/alloc/layout.sal +12 -0
  4. package/sa_std/alloc/prelude.sa +1 -0
  5. package/sa_std/alloc/prelude.sal +1 -0
  6. package/sa_std/alloc/string.sa +3 -0
  7. package/sa_std/alloc/vec.sa +684 -0
  8. package/sa_std/alloc/vec.sal +4 -0
  9. package/sa_std/any.sa +130 -0
  10. package/sa_std/any.sal +23 -0
  11. package/sa_std/array.sa +1876 -0
  12. package/sa_std/ascii.sa +2 -0
  13. package/sa_std/ascii.sal +1 -0
  14. package/sa_std/async.sla +116 -0
  15. package/sa_std/binary_heap.sa +3003 -0
  16. package/sa_std/binary_heap.sal +7 -0
  17. package/sa_std/borrow.sa +171 -0
  18. package/sa_std/borrow.sal +13 -0
  19. package/sa_std/btree_map.sa +2210 -0
  20. package/sa_std/btree_map.sal +11 -0
  21. package/sa_std/btree_set.sa +1072 -0
  22. package/sa_std/btree_set.sal +6 -0
  23. package/sa_std/char.sa +1309 -0
  24. package/sa_std/char.sal +50 -0
  25. package/sa_std/cmp.sa +554 -0
  26. package/sa_std/cmp.sal +14 -0
  27. package/sa_std/collections/binary_heap.sa +1 -0
  28. package/sa_std/collections/btree_map.sa +1 -0
  29. package/sa_std/collections/btree_set.sa +1 -0
  30. package/sa_std/collections/hashmap.sa +1 -0
  31. package/sa_std/collections/hashset.sa +1 -0
  32. package/sa_std/collections/linked_list.sa +1120 -0
  33. package/sa_std/collections/linked_list.sal +10 -0
  34. package/sa_std/collections/prelude.sa +7 -0
  35. package/sa_std/collections/prelude.sal +1 -0
  36. package/sa_std/collections/vec_deque.sa +1 -0
  37. package/sa_std/collections.sal +13 -0
  38. package/sa_std/convert.sa +1115 -0
  39. package/sa_std/convert.sal +24 -0
  40. package/sa_std/core/arc.sa +233 -0
  41. package/sa_std/core/arc.sal +4 -0
  42. package/sa_std/core/ascii.sa +784 -0
  43. package/sa_std/core/ascii.sal +34 -0
  44. package/sa_std/core/bit.sa +41 -0
  45. package/sa_std/core/box.sa +1 -0
  46. package/sa_std/core/box.sal +2 -0
  47. package/sa_std/core/cell.sa +108 -0
  48. package/sa_std/core/cell.sal +5 -0
  49. package/sa_std/core/cleanup.sa +26 -0
  50. package/sa_std/core/control.sa +20 -0
  51. package/sa_std/core/derive.sa +60 -0
  52. package/sa_std/core/derive.sal +1 -0
  53. package/sa_std/core/dispatch.sa +7 -0
  54. package/sa_std/core/dispatch.sal +5 -0
  55. package/sa_std/core/future.sa +777 -0
  56. package/sa_std/core/future.sal +73 -0
  57. package/sa_std/core/hash.sa +48 -0
  58. package/sa_std/core/iter.sa +2805 -0
  59. package/sa_std/core/iter.sal +4 -0
  60. package/sa_std/core/loop.sa +60 -0
  61. package/sa_std/core/mem.sa +220 -0
  62. package/sa_std/core/option.sa +825 -0
  63. package/sa_std/core/option.sal +11 -0
  64. package/sa_std/core/panic.sa +23 -0
  65. package/sa_std/core/panic.sal +12 -0
  66. package/sa_std/core/prelude.sa +18 -0
  67. package/sa_std/core/prelude.sal +18 -0
  68. package/sa_std/core/rc.sa +225 -0
  69. package/sa_std/core/rc.sal +4 -0
  70. package/sa_std/core/refcell.sa +283 -0
  71. package/sa_std/core/refcell.sal +13 -0
  72. package/sa_std/core/result.sa +708 -0
  73. package/sa_std/core/result.sal +6 -0
  74. package/sa_std/core/rust_patterns.sal +295 -0
  75. package/sa_std/core/sa_core.sa +84 -0
  76. package/sa_std/core/slice.sa +4021 -0
  77. package/sa_std/core/slice.sal +7 -0
  78. package/sa_std/core/task.sa +112 -0
  79. package/sa_std/core/task.sal +15 -0
  80. package/sa_std/core/trait_object.sa +26 -0
  81. package/sa_std/core/trait_object.sal +4 -0
  82. package/sa_std/core/waker.sa +289 -0
  83. package/sa_std/core/waker.sal +31 -0
  84. package/sa_std/core/weak.sa +2 -0
  85. package/sa_std/core/weak.sal +4 -0
  86. package/sa_std/cow.sa +3 -0
  87. package/sa_std/cow.sal +2 -0
  88. package/sa_std/cstring.sa +3 -0
  89. package/sa_std/cstring.sal +2 -0
  90. package/sa_std/default.sa +99 -0
  91. package/sa_std/duration.sa +3 -0
  92. package/sa_std/duration.sal +2 -0
  93. package/sa_std/encoding/json.sa +259 -0
  94. package/sa_std/encoding/json.sai +54 -0
  95. package/sa_std/encoding/json.sal +35 -0
  96. package/sa_std/encoding/prelude.sa +1 -0
  97. package/sa_std/encoding/prelude.sal +0 -0
  98. package/sa_std/env.sa +390 -0
  99. package/sa_std/env.sai +25 -0
  100. package/sa_std/error.sa +253 -0
  101. package/sa_std/error.sal +44 -0
  102. package/sa_std/ffi/cstring.sa +3 -0
  103. package/sa_std/ffi/cstring.sal +1 -0
  104. package/sa_std/ffi/prelude.sa +2 -0
  105. package/sa_std/ffi/prelude.sal +2 -0
  106. package/sa_std/ffi.sa +635 -0
  107. package/sa_std/ffi.sal +51 -0
  108. package/sa_std/fmt.sa +2 -0
  109. package/sa_std/fmt.sai +18 -0
  110. package/sa_std/fmt.sal +35 -0
  111. package/sa_std/fs.sa +1023 -0
  112. package/sa_std/fs.sai +127 -0
  113. package/sa_std/fs.sal +51 -0
  114. package/sa_std/future.sa +2 -0
  115. package/sa_std/future.sal +1 -0
  116. package/sa_std/hash.sa +1486 -0
  117. package/sa_std/hash.sal +13 -0
  118. package/sa_std/hashmap.sa +1962 -0
  119. package/sa_std/hashmap.sal +20 -0
  120. package/sa_std/hashset.sa +1004 -0
  121. package/sa_std/hashset.sal +18 -0
  122. package/sa_std/http2.sa +78 -0
  123. package/sa_std/http2.sai +26 -0
  124. package/sa_std/http2.sal +36 -0
  125. package/sa_std/instant.sa +3 -0
  126. package/sa_std/instant.sal +2 -0
  127. package/sa_std/io/buf_reader.sa +43 -0
  128. package/sa_std/io/buf_writer.sa +35 -0
  129. package/sa_std/io/bufio.sa +4 -0
  130. package/sa_std/io/bufio.sal +4 -0
  131. package/sa_std/io/prelude.sa +1 -0
  132. package/sa_std/io/prelude.sal +1 -0
  133. package/sa_std/io/print.sa +2 -0
  134. package/sa_std/io/print.sai +3 -0
  135. package/sa_std/io.sa +925 -0
  136. package/sa_std/io.sai +25 -0
  137. package/sa_std/io.sal +84 -0
  138. package/sa_std/iter.sa +2 -0
  139. package/sa_std/iter.sal +1 -0
  140. package/sa_std/join_handle.sa +3 -0
  141. package/sa_std/join_handle.sal +2 -0
  142. package/sa_std/libsa_async.sa +80 -0
  143. package/sa_std/m_async.sa +137 -0
  144. package/sa_std/m_async.sal +30 -0
  145. package/sa_std/m_async.sla +2 -0
  146. package/sa_std/manually_drop.sa +3 -0
  147. package/sa_std/manually_drop.sal +2 -0
  148. package/sa_std/marker/phantom_data.sa +3 -0
  149. package/sa_std/marker/phantom_data.sal +1 -0
  150. package/sa_std/marker/prelude.sa +4 -0
  151. package/sa_std/marker/prelude.sal +4 -0
  152. package/sa_std/marker.sa +220 -0
  153. package/sa_std/marker.sal +15 -0
  154. package/sa_std/math.sa +84 -0
  155. package/sa_std/math.sai +10 -0
  156. package/sa_std/mem/manually_drop.sa +3 -0
  157. package/sa_std/mem/manually_drop.sal +1 -0
  158. package/sa_std/mem/prelude.sa +2 -0
  159. package/sa_std/mem/prelude.sal +2 -0
  160. package/sa_std/mem.sa +564 -0
  161. package/sa_std/mem.sal +40 -0
  162. package/sa_std/modstate.sai +19 -0
  163. package/sa_std/net.sa +4227 -0
  164. package/sa_std/net.sai +239 -0
  165. package/sa_std/net.sal +159 -0
  166. package/sa_std/netx.sa +85 -0
  167. package/sa_std/netx.sai +11 -0
  168. package/sa_std/netx.sal +39 -0
  169. package/sa_std/nonzero.sa +3 -0
  170. package/sa_std/nonzero.sal +2 -0
  171. package/sa_std/num/nonzero.sa +3 -0
  172. package/sa_std/num/nonzero.sal +1 -0
  173. package/sa_std/num/prelude.sa +3 -0
  174. package/sa_std/num/prelude.sal +3 -0
  175. package/sa_std/num.sa +17302 -0
  176. package/sa_std/num.sai +11 -0
  177. package/sa_std/num.sal +341 -0
  178. package/sa_std/ops.sa +1884 -0
  179. package/sa_std/ops.sal +68 -0
  180. package/sa_std/option.sa +2 -0
  181. package/sa_std/option.sal +1 -0
  182. package/sa_std/os/fd.sa +96 -0
  183. package/sa_std/os/fd.sai +7 -0
  184. package/sa_std/os/fd.sal +11 -0
  185. package/sa_std/os/prelude.sa +2 -0
  186. package/sa_std/os/prelude.sal +1 -0
  187. package/sa_std/os/unix_ffi.sa +271 -0
  188. package/sa_std/panic.sa +1 -0
  189. package/sa_std/panic.sal +1 -0
  190. package/sa_std/path.sa +3170 -0
  191. package/sa_std/path.sal +12 -0
  192. package/sa_std/phantom_data.sa +3 -0
  193. package/sa_std/phantom_data.sal +2 -0
  194. package/sa_std/pin.sa +79 -0
  195. package/sa_std/pin.sal +5 -0
  196. package/sa_std/plugin_async.sa +90 -0
  197. package/sa_std/plugin_async.sal +29 -0
  198. package/sa_std/plugin_async.sla +4 -0
  199. package/sa_std/plugin_http_async.sa +46 -0
  200. package/sa_std/plugin_http_server.sa +61 -0
  201. package/sa_std/plugin_http_server.sla +2 -0
  202. package/sa_std/plugin_sqlite.sa +106 -0
  203. package/sa_std/plugin_sqlite.sla +2 -0
  204. package/sa_std/prelude.sa +60 -0
  205. package/sa_std/prelude.sal +55 -0
  206. package/sa_std/process.sa +916 -0
  207. package/sa_std/process.sai +57 -0
  208. package/sa_std/process.sal +27 -0
  209. package/sa_std/ptr.sa +503 -0
  210. package/sa_std/ptr.sal +2 -0
  211. package/sa_std/result.sa +2 -0
  212. package/sa_std/result.sal +1 -0
  213. package/sa_std/rust_core.sa +51 -0
  214. package/sa_std/rust_core.sal +26 -0
  215. package/sa_std/sa.mod +7 -0
  216. package/sa_std/sort.sa +156 -0
  217. package/sa_std/str.sla +13 -0
  218. package/sa_std/string.sa +12240 -0
  219. package/sa_std/string.sai +25 -0
  220. package/sa_std/string.sal +17 -0
  221. package/sa_std/string_format.sa +269 -0
  222. package/sa_std/sync/atomic.sa +1500 -0
  223. package/sa_std/sync/atomic.sal +45 -0
  224. package/sa_std/sync/barrier.sa +105 -0
  225. package/sa_std/sync/barrier.sal +7 -0
  226. package/sa_std/sync/condvar.sa +240 -0
  227. package/sa_std/sync/condvar.sal +4 -0
  228. package/sa_std/sync/mpsc.sa +758 -0
  229. package/sa_std/sync/mpsc.sal +42 -0
  230. package/sa_std/sync/mpsc_list.sa +255 -0
  231. package/sa_std/sync/mpsc_list.sal +3 -0
  232. package/sa_std/sync/mutex.sa +182 -0
  233. package/sa_std/sync/mutex.sal +7 -0
  234. package/sa_std/sync/once.sa +371 -0
  235. package/sa_std/sync/once.sal +31 -0
  236. package/sa_std/sync/poison.sa +36 -0
  237. package/sa_std/sync/poison.sal +11 -0
  238. package/sa_std/sync/prelude.sa +8 -0
  239. package/sa_std/sync/prelude.sal +7 -0
  240. package/sa_std/sync/rwlock.sa +369 -0
  241. package/sa_std/sync/rwlock.sal +13 -0
  242. package/sa_std/task.sa +2 -0
  243. package/sa_std/task.sal +1 -0
  244. package/sa_std/term.sa +2 -0
  245. package/sa_std/term.sai +10 -0
  246. package/sa_std/term.sal +33 -0
  247. package/sa_std/testing/assert.sai +4 -0
  248. package/sa_std/testing/mock_io.sa +174 -0
  249. package/sa_std/testing/mock_io.sal +5 -0
  250. package/sa_std/testing/prelude.sa +2 -0
  251. package/sa_std/testing/prelude.sal +1 -0
  252. package/sa_std/text/prelude.sa +1 -0
  253. package/sa_std/text/prelude.sal +1 -0
  254. package/sa_std/text/regex.sa +2 -0
  255. package/sa_std/text/regex.sai +9 -0
  256. package/sa_std/text/regex.sal +33 -0
  257. package/sa_std/thread/join_handle.sa +3 -0
  258. package/sa_std/thread/join_handle.sal +1 -0
  259. package/sa_std/thread/prelude.sa +4 -0
  260. package/sa_std/thread/prelude.sal +3 -0
  261. package/sa_std/thread.sa +160 -0
  262. package/sa_std/thread.sai +11 -0
  263. package/sa_std/thread.sal +4 -0
  264. package/sa_std/thread_local.sa +45 -0
  265. package/sa_std/thread_local.sai +9 -0
  266. package/sa_std/time/duration.sa +3 -0
  267. package/sa_std/time/duration.sal +1 -0
  268. package/sa_std/time/instant.sa +3 -0
  269. package/sa_std/time/instant.sal +1 -0
  270. package/sa_std/time/prelude.sa +4 -0
  271. package/sa_std/time/prelude.sal +4 -0
  272. package/sa_std/time.sa +850 -0
  273. package/sa_std/time.sai +37 -0
  274. package/sa_std/time.sal +35 -0
  275. package/sa_std/time.sla +67 -0
  276. package/sa_std/tls_client.sai +39 -0
  277. package/sa_std/vec.sa +5754 -0
  278. package/sa_std/vec.sal +1 -0
  279. package/sa_std/vec_deque.sa +4925 -0
  280. package/sa_std/vec_deque.sal +8 -0
  281. package/sa_std/vec_runtime_macros.sa +11 -0
  282. package/sa_std/ws_client.sai +57 -0
@@ -0,0 +1,7 @@
1
+ #def Slice_SIZE = 16
2
+ #def Slice_ptr = +0
3
+ #def Slice_len = +8
4
+
5
+ #def TryFromSliceError_SIZE = 8
6
+ #def TryFromSliceError_code = +0
7
+ #def TRY_FROM_SLICE_ERROR_LENGTH_MISMATCH = 0
@@ -0,0 +1,112 @@
1
+ @import "task.sal"
2
+ @import "future.sal"
3
+ @import "future.sa"
4
+
5
+ [MACRO] TASK_NEW %out_task, %future_reg, %ctx_reg
6
+ %out_task = alloc Task_SIZE
7
+ store %out_task+Task_future, %future_reg as ptr
8
+ store %out_task+Task_context, %ctx_reg as ptr
9
+ store %out_task+Task_result, 0 as u64
10
+ store %out_task+Task_state, Task_PENDING as u64
11
+ [END_MACRO]
12
+
13
+ [MACRO] TASK_STATE %out_state, %task_reg
14
+ %out_state = load %task_reg+Task_state as u64
15
+ [END_MACRO]
16
+
17
+ [MACRO] TASK_RESULT %out_value, %task_reg
18
+ %out_value = load %task_reg+Task_result as u64
19
+ [END_MACRO]
20
+
21
+ [MACRO] TASK_IS_READY %out_bool, %task_reg
22
+ __task_state_%out_bool = load %task_reg+Task_state as u64
23
+ %out_bool = eq __task_state_%out_bool, Task_READY
24
+ !__task_state_%out_bool
25
+ [END_MACRO]
26
+
27
+ [MACRO] TASK_POLL %out_poll, %task_reg
28
+ __task_future_%out_poll = load %task_reg+Task_future as ptr
29
+ __task_context_%out_poll = load %task_reg+Task_context as ptr
30
+ EXPAND FUTURE_POLL %out_poll, __task_future_%out_poll, __task_context_%out_poll
31
+ __task_poll_tag_%out_poll = load %out_poll+Poll_tag as u64
32
+ __task_poll_ready_%out_poll = eq __task_poll_tag_%out_poll, Poll_READY
33
+ br __task_poll_ready_%out_poll -> L_TASK_POLL_READY_%out_poll, L_TASK_POLL_PENDING_%out_poll
34
+ L_TASK_POLL_READY_%out_poll:
35
+ __task_poll_value_%out_poll = load %out_poll+Poll_value as u64
36
+ store %task_reg+Task_result, __task_poll_value_%out_poll as u64
37
+ store %task_reg+Task_state, Task_READY as u64
38
+ !__task_poll_value_%out_poll
39
+ jmp L_TASK_POLL_DONE_%out_poll
40
+ L_TASK_POLL_PENDING_%out_poll:
41
+ store %task_reg+Task_state, Task_PENDING as u64
42
+ L_TASK_POLL_DONE_%out_poll:
43
+ !__task_poll_ready_%out_poll
44
+ !__task_poll_tag_%out_poll
45
+ !__task_context_%out_poll
46
+ !__task_future_%out_poll
47
+ [END_MACRO]
48
+
49
+ [MACRO] EXECUTOR_NEW %out_executor, %tasks_ptr, %len
50
+ %out_executor = alloc Executor_SIZE
51
+ store %out_executor+Executor_tasks, %tasks_ptr as ptr
52
+ store %out_executor+Executor_len, %len as u64
53
+ [END_MACRO]
54
+
55
+ [MACRO] EXECUTOR_POLL_ONE %out_poll, %executor_reg, %index
56
+ __executor_tasks_%out_poll = load %executor_reg+Executor_tasks as ptr
57
+ __executor_off_%out_poll = mul %index, 8
58
+ __executor_slot_%out_poll = ptr_add __executor_tasks_%out_poll, __executor_off_%out_poll
59
+ __executor_task_%out_poll = load __executor_slot_%out_poll+0 as ptr
60
+ EXPAND TASK_POLL %out_poll, __executor_task_%out_poll
61
+ !__executor_task_%out_poll
62
+ !__executor_slot_%out_poll
63
+ !__executor_off_%out_poll
64
+ !__executor_tasks_%out_poll
65
+ [END_MACRO]
66
+
67
+ [MACRO] EXECUTOR_POLL_READY_COUNT %out_count, %executor_reg
68
+ __executor_tasks_%out_count = load %executor_reg+Executor_tasks as ptr
69
+ __executor_len_%out_count = load %executor_reg+Executor_len as u64
70
+ __executor_index_slot_%out_count = stack_alloc 8
71
+ store __executor_index_slot_%out_count+0, 0 as u64
72
+ __executor_count_slot_%out_count = stack_alloc 8
73
+ store __executor_count_slot_%out_count+0, 0 as u64
74
+ jmp L_EXECUTOR_POLL_ALL_COND_%out_count
75
+ L_EXECUTOR_POLL_ALL_COND_%out_count:
76
+ __executor_index_%out_count = load __executor_index_slot_%out_count+0 as u64
77
+ __executor_done_%out_count = eq __executor_index_%out_count, __executor_len_%out_count
78
+ br __executor_done_%out_count -> L_EXECUTOR_POLL_ALL_DONE_%out_count, L_EXECUTOR_POLL_ALL_BODY_%out_count
79
+ L_EXECUTOR_POLL_ALL_BODY_%out_count:
80
+ __executor_off_%out_count = mul __executor_index_%out_count, 8
81
+ __executor_slot_%out_count = ptr_add __executor_tasks_%out_count, __executor_off_%out_count
82
+ __executor_task_%out_count = load __executor_slot_%out_count+0 as ptr
83
+ EXPAND TASK_POLL __executor_poll_%out_count, __executor_task_%out_count
84
+ __executor_poll_tag_%out_count = load __executor_poll_%out_count+Poll_tag as u64
85
+ __executor_poll_ready_%out_count = eq __executor_poll_tag_%out_count, Poll_READY
86
+ br __executor_poll_ready_%out_count -> L_EXECUTOR_POLL_ALL_READY_%out_count, L_EXECUTOR_POLL_ALL_NEXT_%out_count
87
+ L_EXECUTOR_POLL_ALL_READY_%out_count:
88
+ __executor_count_%out_count = load __executor_count_slot_%out_count+0 as u64
89
+ __executor_next_count_%out_count = add __executor_count_%out_count, 1
90
+ store __executor_count_slot_%out_count+0, __executor_next_count_%out_count as u64
91
+ !__executor_next_count_%out_count
92
+ !__executor_count_%out_count
93
+ L_EXECUTOR_POLL_ALL_NEXT_%out_count:
94
+ __executor_next_index_%out_count = add __executor_index_%out_count, 1
95
+ store __executor_index_slot_%out_count+0, __executor_next_index_%out_count as u64
96
+ !__executor_next_index_%out_count
97
+ !__executor_poll_ready_%out_count
98
+ !__executor_poll_tag_%out_count
99
+ !__executor_poll_%out_count
100
+ !__executor_task_%out_count
101
+ !__executor_slot_%out_count
102
+ !__executor_off_%out_count
103
+ !__executor_done_%out_count
104
+ !__executor_index_%out_count
105
+ jmp L_EXECUTOR_POLL_ALL_COND_%out_count
106
+ L_EXECUTOR_POLL_ALL_DONE_%out_count:
107
+ %out_count = load __executor_count_slot_%out_count+0 as u64
108
+ !__executor_done_%out_count
109
+ !__executor_index_%out_count
110
+ !__executor_len_%out_count
111
+ !__executor_tasks_%out_count
112
+ [END_MACRO]
@@ -0,0 +1,15 @@
1
+ #def Task_SIZE = 32
2
+ #def Task_future = +0
3
+ #def Task_context = +8
4
+ #def Task_result = +16
5
+ #def Task_state = +24
6
+
7
+ #def Task_PENDING = 0
8
+ #def Task_READY = 1
9
+
10
+ #def Executor_SIZE = 16
11
+ #def Executor_tasks = +0
12
+ #def Executor_len = +8
13
+
14
+ #def ExecutorPoll_PENDING = 0
15
+ #def ExecutorPoll_READY = 1
@@ -0,0 +1,26 @@
1
+ @import "trait_object.sal"
2
+
3
+ [MACRO] DYN_NEW %out_dyn, %data_ptr, %vtable_ptr
4
+ %out_dyn = alloc Dyn_SIZE
5
+ store %out_dyn+Dyn_data, %data_ptr as ptr
6
+ store %out_dyn+Dyn_vtable, %vtable_ptr as ptr
7
+ [END_MACRO]
8
+
9
+ [MACRO] DYN_GET_DATA %out_data, %dyn_reg
10
+ %out_data = load %dyn_reg+Dyn_data as ptr
11
+ [END_MACRO]
12
+
13
+ [MACRO] DYN_GET_VTABLE %out_vtable, %dyn_reg
14
+ %out_vtable = load %dyn_reg+Dyn_vtable as ptr
15
+ [END_MACRO]
16
+
17
+ [MACRO] DYN_CALL %out_value, %dyn_reg, %slot_off
18
+ __dyn_data_%out_value = load %dyn_reg+Dyn_data as ptr
19
+ __dyn_vtable_%out_value = load %dyn_reg+Dyn_vtable as ptr
20
+ __dyn_fn_%out_value = load __dyn_vtable_%out_value+%slot_off as ptr
21
+ %out_value = call_indirect __dyn_fn_%out_value(&__dyn_data_%out_value)
22
+ !__dyn_fn_%out_value
23
+ !__dyn_vtable_%out_value
24
+ !__dyn_data_%out_value
25
+ [END_MACRO]
26
+
@@ -0,0 +1,4 @@
1
+ #def Dyn_SIZE = 16
2
+ #def Dyn_data = +0
3
+ #def Dyn_vtable = +8
4
+
@@ -0,0 +1,289 @@
1
+ @import "waker.sal"
2
+
3
+ [MACRO] RAW_WAKER_VTABLE_NEW %out_vtable, %clone_fn, %wake_fn, %wake_by_ref_fn, %drop_fn
4
+ __raw_waker_clone_obj_%out_vtable = %clone_fn
5
+ __raw_waker_clone_vt_%out_vtable = load __raw_waker_clone_obj_%out_vtable+8 as ptr
6
+ __raw_waker_clone_call_%out_vtable = load __raw_waker_clone_vt_%out_vtable+0 as ptr
7
+
8
+ __raw_waker_wake_obj_%out_vtable = %wake_fn
9
+ __raw_waker_wake_vt_%out_vtable = load __raw_waker_wake_obj_%out_vtable+8 as ptr
10
+ __raw_waker_wake_call_%out_vtable = load __raw_waker_wake_vt_%out_vtable+0 as ptr
11
+
12
+ __raw_waker_ref_obj_%out_vtable = %wake_by_ref_fn
13
+ __raw_waker_ref_vt_%out_vtable = load __raw_waker_ref_obj_%out_vtable+8 as ptr
14
+ __raw_waker_ref_call_%out_vtable = load __raw_waker_ref_vt_%out_vtable+0 as ptr
15
+
16
+ __raw_waker_drop_obj_%out_vtable = %drop_fn
17
+ __raw_waker_drop_vt_%out_vtable = load __raw_waker_drop_obj_%out_vtable+8 as ptr
18
+ __raw_waker_drop_call_%out_vtable = load __raw_waker_drop_vt_%out_vtable+0 as ptr
19
+
20
+ %out_vtable = alloc RawWakerVTable_SIZE
21
+ store %out_vtable+RawWakerVTable_clone, __raw_waker_clone_call_%out_vtable as ptr
22
+ store %out_vtable+RawWakerVTable_wake, __raw_waker_wake_call_%out_vtable as ptr
23
+ store %out_vtable+RawWakerVTable_wake_by_ref, __raw_waker_ref_call_%out_vtable as ptr
24
+ store %out_vtable+RawWakerVTable_drop, __raw_waker_drop_call_%out_vtable as ptr
25
+
26
+ !__raw_waker_drop_call_%out_vtable
27
+ !__raw_waker_drop_vt_%out_vtable
28
+ !__raw_waker_drop_obj_%out_vtable
29
+ !__raw_waker_ref_call_%out_vtable
30
+ !__raw_waker_ref_vt_%out_vtable
31
+ !__raw_waker_ref_obj_%out_vtable
32
+ !__raw_waker_wake_call_%out_vtable
33
+ !__raw_waker_wake_vt_%out_vtable
34
+ !__raw_waker_wake_obj_%out_vtable
35
+ !__raw_waker_clone_call_%out_vtable
36
+ !__raw_waker_clone_vt_%out_vtable
37
+ !__raw_waker_clone_obj_%out_vtable
38
+ [END_MACRO]
39
+
40
+ [MACRO] RAW_WAKER_NEW %out_raw, %data_ptr, %vtable_ptr
41
+ %out_raw = alloc RawWaker_SIZE
42
+ store %out_raw+RawWaker_data, %data_ptr as ptr
43
+ store %out_raw+RawWaker_vtable, %vtable_ptr as ptr
44
+ [END_MACRO]
45
+
46
+ [MACRO] RAW_WAKER_GET_DATA %out_data, %raw_reg
47
+ %out_data = load %raw_reg+RawWaker_data as ptr
48
+ [END_MACRO]
49
+
50
+ [MACRO] RAW_WAKER_GET_VTABLE %out_vtable, %raw_reg
51
+ %out_vtable = load %raw_reg+RawWaker_vtable as ptr
52
+ [END_MACRO]
53
+
54
+ [MACRO] RAW_WAKER_CLONE %out_raw, %raw_reg
55
+ __raw_waker_clone_vt_%out_raw = load %raw_reg+RawWaker_vtable as ptr
56
+ __raw_waker_clone_fn_%out_raw = load __raw_waker_clone_vt_%out_raw+RawWakerVTable_clone as ptr
57
+ __raw_waker_clone_data_%out_raw = load %raw_reg+RawWaker_data as ptr
58
+ __raw_waker_clone_slot_%out_raw = alloc RawWaker_SIZE
59
+ call_indirect __raw_waker_clone_fn_%out_raw(__raw_waker_clone_data_%out_raw, __raw_waker_clone_slot_%out_raw)
60
+ %out_raw = __raw_waker_clone_slot_%out_raw
61
+ !__raw_waker_clone_data_%out_raw
62
+ !__raw_waker_clone_fn_%out_raw
63
+ !__raw_waker_clone_vt_%out_raw
64
+ [END_MACRO]
65
+
66
+ [MACRO] RAW_WAKER_WAKE %out_value, %raw_reg
67
+ __raw_waker_vt_%out_value = load %raw_reg+RawWaker_vtable as ptr
68
+ __raw_waker_fn_%out_value = load __raw_waker_vt_%out_value+RawWakerVTable_wake as ptr
69
+ __raw_waker_data_%out_value = load %raw_reg+RawWaker_data as ptr
70
+ %out_value = call_indirect __raw_waker_fn_%out_value(__raw_waker_data_%out_value)
71
+ !__raw_waker_data_%out_value
72
+ !__raw_waker_fn_%out_value
73
+ !__raw_waker_vt_%out_value
74
+ [END_MACRO]
75
+
76
+ [MACRO] RAW_WAKER_WAKE_BY_REF %out_value, %raw_reg
77
+ __raw_waker_ref_vt_%out_value = load %raw_reg+RawWaker_vtable as ptr
78
+ __raw_waker_ref_fn_%out_value = load __raw_waker_ref_vt_%out_value+RawWakerVTable_wake_by_ref as ptr
79
+ __raw_waker_ref_data_%out_value = load %raw_reg+RawWaker_data as ptr
80
+ %out_value = call_indirect __raw_waker_ref_fn_%out_value(__raw_waker_ref_data_%out_value)
81
+ !__raw_waker_ref_data_%out_value
82
+ !__raw_waker_ref_fn_%out_value
83
+ !__raw_waker_ref_vt_%out_value
84
+ [END_MACRO]
85
+
86
+ [MACRO] RAW_WAKER_DROP %raw_reg, %free_label
87
+ __raw_waker_drop_vt_%raw_reg = load %raw_reg+RawWaker_vtable as ptr
88
+ __raw_waker_drop_fn_%raw_reg = load __raw_waker_drop_vt_%raw_reg+RawWakerVTable_drop as ptr
89
+ __raw_waker_drop_data_%raw_reg = load %raw_reg+RawWaker_data as ptr
90
+ call_indirect __raw_waker_drop_fn_%raw_reg(__raw_waker_drop_data_%raw_reg)
91
+ !__raw_waker_drop_data_%raw_reg
92
+ !__raw_waker_drop_fn_%raw_reg
93
+ !__raw_waker_drop_vt_%raw_reg
94
+ jmp %free_label
95
+ [END_MACRO]
96
+
97
+ [MACRO] WAKER_NEW %out_waker, %data_ptr, %vtable_ptr
98
+ %out_waker = alloc Waker_SIZE
99
+ store %out_waker+Waker_data, %data_ptr as ptr
100
+ store %out_waker+Waker_vtable, %vtable_ptr as ptr
101
+ [END_MACRO]
102
+
103
+ [MACRO] WAKER_FROM_RAW %out_waker, %raw_reg
104
+ __raw_waker_data_%out_waker = load %raw_reg+RawWaker_data as ptr
105
+ __raw_waker_vtable_%out_waker = load %raw_reg+RawWaker_vtable as ptr
106
+ %out_waker = alloc Waker_SIZE
107
+ store %out_waker+Waker_raw_data, __raw_waker_data_%out_waker as ptr
108
+ store %out_waker+Waker_raw_vtable, __raw_waker_vtable_%out_waker as ptr
109
+ !__raw_waker_vtable_%out_waker
110
+ !__raw_waker_data_%out_waker
111
+ [END_MACRO]
112
+
113
+ [MACRO] LOCAL_WAKER_NEW %out_waker, %data_ptr, %vtable_ptr
114
+ %out_waker = alloc LocalWaker_SIZE
115
+ store %out_waker+LocalWaker_raw_data, %data_ptr as ptr
116
+ store %out_waker+LocalWaker_raw_vtable, %vtable_ptr as ptr
117
+ [END_MACRO]
118
+
119
+ [MACRO] LOCAL_WAKER_FROM_RAW %out_waker, %raw_reg
120
+ __raw_local_waker_data_%out_waker = load %raw_reg+RawWaker_data as ptr
121
+ __raw_local_waker_vtable_%out_waker = load %raw_reg+RawWaker_vtable as ptr
122
+ %out_waker = alloc LocalWaker_SIZE
123
+ store %out_waker+LocalWaker_raw_data, __raw_local_waker_data_%out_waker as ptr
124
+ store %out_waker+LocalWaker_raw_vtable, __raw_local_waker_vtable_%out_waker as ptr
125
+ !__raw_local_waker_vtable_%out_waker
126
+ !__raw_local_waker_data_%out_waker
127
+ [END_MACRO]
128
+
129
+ [MACRO] WAKER_CLONE %out_waker, %waker_reg
130
+ __waker_clone_vt_%out_waker = load %waker_reg+Waker_vtable as ptr
131
+ __waker_clone_fn_%out_waker = load __waker_clone_vt_%out_waker+WakerCloneSlot as ptr
132
+ __waker_clone_data_%out_waker = load %waker_reg+Waker_data as ptr
133
+ __waker_clone_slot_%out_waker = alloc RawWaker_SIZE
134
+ call_indirect __waker_clone_fn_%out_waker(__waker_clone_data_%out_waker, __waker_clone_slot_%out_waker)
135
+ EXPAND WAKER_FROM_RAW %out_waker, __waker_clone_slot_%out_waker
136
+ !__waker_clone_slot_%out_waker
137
+ !__waker_clone_data_%out_waker
138
+ !__waker_clone_fn_%out_waker
139
+ !__waker_clone_vt_%out_waker
140
+ [END_MACRO]
141
+
142
+ [MACRO] LOCAL_WAKER_CLONE %out_waker, %waker_reg
143
+ __local_waker_clone_vt_%out_waker = load %waker_reg+LocalWaker_vtable as ptr
144
+ __local_waker_clone_fn_%out_waker = load __local_waker_clone_vt_%out_waker+RawWakerVTable_clone as ptr
145
+ __local_waker_clone_data_%out_waker = load %waker_reg+LocalWaker_data as ptr
146
+ __local_waker_clone_slot_%out_waker = alloc RawWaker_SIZE
147
+ call_indirect __local_waker_clone_fn_%out_waker(__local_waker_clone_data_%out_waker, __local_waker_clone_slot_%out_waker)
148
+ EXPAND LOCAL_WAKER_FROM_RAW %out_waker, __local_waker_clone_slot_%out_waker
149
+ !__local_waker_clone_slot_%out_waker
150
+ !__local_waker_clone_data_%out_waker
151
+ !__local_waker_clone_fn_%out_waker
152
+ !__local_waker_clone_vt_%out_waker
153
+ [END_MACRO]
154
+
155
+ [MACRO] WAKER_WILL_WAKE %out_bool, %left_waker, %right_waker
156
+ __waker_will_left_data_%out_bool = load %left_waker+Waker_data as ptr
157
+ __waker_will_right_data_%out_bool = load %right_waker+Waker_data as ptr
158
+ __waker_will_left_vt_%out_bool = load %left_waker+Waker_vtable as ptr
159
+ __waker_will_right_vt_%out_bool = load %right_waker+Waker_vtable as ptr
160
+ __waker_will_same_data_%out_bool = eq __waker_will_left_data_%out_bool, __waker_will_right_data_%out_bool
161
+ __waker_will_same_vt_%out_bool = eq __waker_will_left_vt_%out_bool, __waker_will_right_vt_%out_bool
162
+ %out_bool = and __waker_will_same_data_%out_bool, __waker_will_same_vt_%out_bool
163
+ !__waker_will_same_vt_%out_bool
164
+ !__waker_will_same_data_%out_bool
165
+ !__waker_will_right_vt_%out_bool
166
+ !__waker_will_left_vt_%out_bool
167
+ !__waker_will_right_data_%out_bool
168
+ !__waker_will_left_data_%out_bool
169
+ [END_MACRO]
170
+
171
+ [MACRO] LOCAL_WAKER_WILL_WAKE %out_bool, %left_waker, %right_waker
172
+ __local_waker_will_left_data_%out_bool = load %left_waker+LocalWaker_data as ptr
173
+ __local_waker_will_right_data_%out_bool = load %right_waker+LocalWaker_data as ptr
174
+ __local_waker_will_left_vt_%out_bool = load %left_waker+LocalWaker_vtable as ptr
175
+ __local_waker_will_right_vt_%out_bool = load %right_waker+LocalWaker_vtable as ptr
176
+ __local_waker_will_same_data_%out_bool = eq __local_waker_will_left_data_%out_bool, __local_waker_will_right_data_%out_bool
177
+ __local_waker_will_same_vt_%out_bool = eq __local_waker_will_left_vt_%out_bool, __local_waker_will_right_vt_%out_bool
178
+ %out_bool = and __local_waker_will_same_data_%out_bool, __local_waker_will_same_vt_%out_bool
179
+ !__local_waker_will_same_vt_%out_bool
180
+ !__local_waker_will_same_data_%out_bool
181
+ !__local_waker_will_right_vt_%out_bool
182
+ !__local_waker_will_left_vt_%out_bool
183
+ !__local_waker_will_right_data_%out_bool
184
+ !__local_waker_will_left_data_%out_bool
185
+ [END_MACRO]
186
+
187
+ [MACRO] WAKER_GET_VTABLE %out_vtable, %waker_reg
188
+ %out_vtable = load %waker_reg+Waker_vtable as ptr
189
+ [END_MACRO]
190
+
191
+ [MACRO] WAKER_GET_DATA %out_data, %waker_reg
192
+ %out_data = load %waker_reg+Waker_data as ptr
193
+ [END_MACRO]
194
+
195
+ [MACRO] LOCAL_WAKER_GET_VTABLE %out_vtable, %waker_reg
196
+ %out_vtable = load %waker_reg+LocalWaker_vtable as ptr
197
+ [END_MACRO]
198
+
199
+ [MACRO] LOCAL_WAKER_GET_DATA %out_data, %waker_reg
200
+ %out_data = load %waker_reg+LocalWaker_data as ptr
201
+ [END_MACRO]
202
+
203
+ [MACRO] WAKER_WAKE %out_value, %waker_reg
204
+ __waker_vt_%out_value = load %waker_reg+Waker_vtable as ptr
205
+ __waker_fn_%out_value = load __waker_vt_%out_value+WakerWakeSlot as ptr
206
+ __waker_data_%out_value = load %waker_reg+Waker_data as ptr
207
+ %out_value = call_indirect __waker_fn_%out_value(__waker_data_%out_value)
208
+ !__waker_data_%out_value
209
+ !__waker_fn_%out_value
210
+ !__waker_vt_%out_value
211
+ [END_MACRO]
212
+
213
+ [MACRO] WAKER_WAKE_BY_REF %out_value, %waker_reg
214
+ __waker_vt_ref_%out_value = load %waker_reg+Waker_vtable as ptr
215
+ __waker_fn_ref_%out_value = load __waker_vt_ref_%out_value+WakerWakeByRefSlot as ptr
216
+ __waker_data_ref_%out_value = load %waker_reg+Waker_data as ptr
217
+ %out_value = call_indirect __waker_fn_ref_%out_value(__waker_data_ref_%out_value)
218
+ !__waker_data_ref_%out_value
219
+ !__waker_fn_ref_%out_value
220
+ !__waker_vt_ref_%out_value
221
+ [END_MACRO]
222
+
223
+ [MACRO] WAKER_DROP %waker_reg, %free_label
224
+ __waker_vt_drop_%waker_reg = load %waker_reg+Waker_vtable as ptr
225
+ __waker_drop_fn_%waker_reg = load __waker_vt_drop_%waker_reg+WakerDropSlot as ptr
226
+ __waker_drop_data_%waker_reg = load %waker_reg+Waker_data as ptr
227
+ call_indirect __waker_drop_fn_%waker_reg(__waker_drop_data_%waker_reg)
228
+ !__waker_drop_data_%waker_reg
229
+ !__waker_drop_fn_%waker_reg
230
+ !__waker_vt_drop_%waker_reg
231
+ jmp %free_label
232
+ [END_MACRO]
233
+
234
+ [MACRO] LOCAL_WAKER_WAKE %out_value, %waker_reg
235
+ __local_waker_vt_%out_value = load %waker_reg+LocalWaker_vtable as ptr
236
+ __local_waker_fn_%out_value = load __local_waker_vt_%out_value+RawWakerVTable_wake as ptr
237
+ __local_waker_data_%out_value = load %waker_reg+LocalWaker_data as ptr
238
+ %out_value = call_indirect __local_waker_fn_%out_value(__local_waker_data_%out_value)
239
+ !__local_waker_data_%out_value
240
+ !__local_waker_fn_%out_value
241
+ !__local_waker_vt_%out_value
242
+ [END_MACRO]
243
+
244
+ [MACRO] LOCAL_WAKER_WAKE_BY_REF %out_value, %waker_reg
245
+ __local_waker_vt_ref_%out_value = load %waker_reg+LocalWaker_vtable as ptr
246
+ __local_waker_fn_ref_%out_value = load __local_waker_vt_ref_%out_value+RawWakerVTable_wake_by_ref as ptr
247
+ __local_waker_data_ref_%out_value = load %waker_reg+LocalWaker_data as ptr
248
+ %out_value = call_indirect __local_waker_fn_ref_%out_value(__local_waker_data_ref_%out_value)
249
+ !__local_waker_data_ref_%out_value
250
+ !__local_waker_fn_ref_%out_value
251
+ !__local_waker_vt_ref_%out_value
252
+ [END_MACRO]
253
+
254
+ [MACRO] LOCAL_WAKER_DROP %waker_reg, %free_label
255
+ __local_waker_vt_drop_%waker_reg = load %waker_reg+LocalWaker_vtable as ptr
256
+ __local_waker_drop_fn_%waker_reg = load __local_waker_vt_drop_%waker_reg+RawWakerVTable_drop as ptr
257
+ __local_waker_drop_data_%waker_reg = load %waker_reg+LocalWaker_data as ptr
258
+ call_indirect __local_waker_drop_fn_%waker_reg(__local_waker_drop_data_%waker_reg)
259
+ !__local_waker_drop_data_%waker_reg
260
+ !__local_waker_drop_fn_%waker_reg
261
+ !__local_waker_vt_drop_%waker_reg
262
+ jmp %free_label
263
+ [END_MACRO]
264
+
265
+ [MACRO] WAKE_NEW %out_wake, %data_ptr, %vtable_ptr
266
+ %out_wake = alloc Wake_SIZE
267
+ store %out_wake+Wake_data, %data_ptr as ptr
268
+ store %out_wake+Wake_vtable, %vtable_ptr as ptr
269
+ [END_MACRO]
270
+
271
+ [MACRO] WAKE_WAKE %out_value, %wake_reg
272
+ __wake_vt_%out_value = load %wake_reg+Wake_vtable as ptr
273
+ __wake_fn_%out_value = load __wake_vt_%out_value+WakeWakeSlot as ptr
274
+ __wake_data_%out_value = load %wake_reg+Wake_data as ptr
275
+ %out_value = call_indirect __wake_fn_%out_value(&__wake_data_%out_value)
276
+ !__wake_data_%out_value
277
+ !__wake_fn_%out_value
278
+ !__wake_vt_%out_value
279
+ [END_MACRO]
280
+
281
+ [MACRO] WAKE_WAKE_BY_REF %out_value, %wake_reg
282
+ __wake_ref_vt_%out_value = load %wake_reg+Wake_vtable as ptr
283
+ __wake_ref_fn_%out_value = load __wake_ref_vt_%out_value+WakeWakeByRefSlot as ptr
284
+ __wake_ref_data_%out_value = load %wake_reg+Wake_data as ptr
285
+ %out_value = call_indirect __wake_ref_fn_%out_value(&__wake_ref_data_%out_value)
286
+ !__wake_ref_data_%out_value
287
+ !__wake_ref_fn_%out_value
288
+ !__wake_ref_vt_%out_value
289
+ [END_MACRO]
@@ -0,0 +1,31 @@
1
+ #def RawWaker_SIZE = 16
2
+ #def RawWaker_data = +0
3
+ #def RawWaker_vtable = +8
4
+
5
+ #def RawWakerVTable_SIZE = 32
6
+ #def RawWakerVTable_clone = +0
7
+ #def RawWakerVTable_wake = +8
8
+ #def RawWakerVTable_wake_by_ref = +16
9
+ #def RawWakerVTable_drop = +24
10
+
11
+ #def Waker_SIZE = 16
12
+ #def Waker_raw_data = +0
13
+ #def Waker_raw_vtable = +8
14
+ #def Waker_data = +0
15
+ #def Waker_vtable = +8
16
+ #def WakerCloneSlot = +0
17
+ #def WakerWakeSlot = +8
18
+ #def WakerWakeByRefSlot = +16
19
+ #def WakerDropSlot = +24
20
+
21
+ #def LocalWaker_SIZE = 16
22
+ #def LocalWaker_raw_data = +0
23
+ #def LocalWaker_raw_vtable = +8
24
+ #def LocalWaker_data = +0
25
+ #def LocalWaker_vtable = +8
26
+
27
+ #def Wake_SIZE = 16
28
+ #def Wake_data = +0
29
+ #def Wake_vtable = +8
30
+ #def WakeWakeSlot = +0
31
+ #def WakeWakeByRefSlot = +8
@@ -0,0 +1,2 @@
1
+ @import "weak.sal"
2
+ @import "rc.sa"
@@ -0,0 +1,4 @@
1
+ #def WeakBox_SIZE = 24
2
+ #def WeakBox_strong = +0
3
+ #def WeakBox_weak = +8
4
+ #def WeakBox_data = +16
package/sa_std/cow.sa ADDED
@@ -0,0 +1,3 @@
1
+ // Public Cow slice facade over borrow.sa.
2
+ @import "borrow.sal"
3
+ @import "borrow.sa"
package/sa_std/cow.sal ADDED
@@ -0,0 +1,2 @@
1
+ // Copy-on-write slice layout aliases.
2
+ @import "borrow.sal"
@@ -0,0 +1,3 @@
1
+ // Public CStr/CString facade over the FFI string implementation.
2
+ @import "ffi.sal"
3
+ @import "ffi.sa"
@@ -0,0 +1,2 @@
1
+ // C string layout aliases.
2
+ @import "ffi.sal"
@@ -0,0 +1,99 @@
1
+ [MACRO] DEFAULT_BOOL %out_value
2
+ %out_value = add 0, 0
3
+ [END_MACRO]
4
+
5
+ [MACRO] DEFAULT_U8 %out_value
6
+ %out_value = add 0, 0
7
+ [END_MACRO]
8
+
9
+ [MACRO] DEFAULT_U16 %out_value
10
+ %out_value = add 0, 0
11
+ [END_MACRO]
12
+
13
+ [MACRO] DEFAULT_U32 %out_value
14
+ %out_value = add 0, 0
15
+ [END_MACRO]
16
+
17
+ [MACRO] DEFAULT_U64 %out_value
18
+ %out_value = add 0, 0
19
+ [END_MACRO]
20
+
21
+ // Rust method-name alias over DEFAULT_U64.
22
+ [MACRO] DEFAULT %out_value
23
+ EXPAND DEFAULT_U64 %out_value
24
+ [END_MACRO]
25
+
26
+ [MACRO] DEFAULT_I8 %out_value
27
+ %out_value = add 0, 0
28
+ [END_MACRO]
29
+
30
+ [MACRO] DEFAULT_I16 %out_value
31
+ %out_value = add 0, 0
32
+ [END_MACRO]
33
+
34
+ [MACRO] DEFAULT_I32 %out_value
35
+ %out_value = add 0, 0
36
+ [END_MACRO]
37
+
38
+ [MACRO] DEFAULT_I64 %out_value
39
+ %out_value = add 0, 0
40
+ [END_MACRO]
41
+
42
+ [MACRO] DEFAULT_USIZE %out_value
43
+ %out_value = add 0, 0
44
+ [END_MACRO]
45
+
46
+ [MACRO] DEFAULT_ISIZE %out_value
47
+ %out_value = add 0, 0
48
+ [END_MACRO]
49
+
50
+ [MACRO] DEFAULT_F32 %out_value
51
+ %out_value = add 0, 0
52
+ [END_MACRO]
53
+
54
+ [MACRO] DEFAULT_F64 %out_value
55
+ %out_value = add 0, 0
56
+ [END_MACRO]
57
+
58
+ [MACRO] DEFAULT_CHAR %out_value
59
+ %out_value = add 0, 0
60
+ [END_MACRO]
61
+
62
+
63
+ [MACRO] DEFAULT_PHANTOM_DATA %out_value
64
+ %out_value = add 0, 0
65
+ [END_MACRO]
66
+
67
+ [MACRO] DEFAULT_PHANTOM_PINNED %out_value
68
+ %out_value = add 0, 0
69
+ [END_MACRO]
70
+
71
+ [MACRO] DEFAULT_WRAPPING_U64 %out_value
72
+ %out_value = add 0, 0
73
+ [END_MACRO]
74
+
75
+ // Rust method-name alias over DEFAULT_WRAPPING_U64.
76
+ [MACRO] DEFAULT_WRAPPING %out_value
77
+ EXPAND DEFAULT_WRAPPING_U64 %out_value
78
+ [END_MACRO]
79
+
80
+ [MACRO] DEFAULT_WRAPPING_U32 %out_value
81
+ %out_value = add 0, 0
82
+ [END_MACRO]
83
+
84
+ [MACRO] DEFAULT_WRAPPING_I64 %out_value
85
+ %out_value = add 0, 0
86
+ [END_MACRO]
87
+
88
+ [MACRO] DEFAULT_SATURATING_U64 %out_value
89
+ %out_value = add 0, 0
90
+ [END_MACRO]
91
+
92
+ // Rust method-name alias over DEFAULT_SATURATING_U64.
93
+ [MACRO] DEFAULT_SATURATING %out_value
94
+ EXPAND DEFAULT_SATURATING_U64 %out_value
95
+ [END_MACRO]
96
+
97
+ [MACRO] DEFAULT_SATURATING_I64 %out_value
98
+ %out_value = add 0, 0
99
+ [END_MACRO]
@@ -0,0 +1,3 @@
1
+ // Public Duration facade. Runtime and arithmetic macros live in time.sa.
2
+ @import "time.sal"
3
+ @import "time.sa"
@@ -0,0 +1,2 @@
1
+ // Standard layout aliases for Duration.
2
+ @import "time.sal"