@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.
- package/bin/sa.js +19 -1
- package/package.json +8 -7
- package/sa_std/alloc/layout.sal +12 -0
- package/sa_std/alloc/prelude.sa +1 -0
- package/sa_std/alloc/prelude.sal +1 -0
- package/sa_std/alloc/string.sa +3 -0
- package/sa_std/alloc/vec.sa +684 -0
- package/sa_std/alloc/vec.sal +4 -0
- package/sa_std/any.sa +130 -0
- package/sa_std/any.sal +23 -0
- package/sa_std/array.sa +1876 -0
- package/sa_std/ascii.sa +2 -0
- package/sa_std/ascii.sal +1 -0
- package/sa_std/async.sla +116 -0
- package/sa_std/binary_heap.sa +3003 -0
- package/sa_std/binary_heap.sal +7 -0
- package/sa_std/borrow.sa +171 -0
- package/sa_std/borrow.sal +13 -0
- package/sa_std/btree_map.sa +2210 -0
- package/sa_std/btree_map.sal +11 -0
- package/sa_std/btree_set.sa +1072 -0
- package/sa_std/btree_set.sal +6 -0
- package/sa_std/char.sa +1309 -0
- package/sa_std/char.sal +50 -0
- package/sa_std/cmp.sa +554 -0
- package/sa_std/cmp.sal +14 -0
- package/sa_std/collections/binary_heap.sa +1 -0
- package/sa_std/collections/btree_map.sa +1 -0
- package/sa_std/collections/btree_set.sa +1 -0
- package/sa_std/collections/hashmap.sa +1 -0
- package/sa_std/collections/hashset.sa +1 -0
- package/sa_std/collections/linked_list.sa +1120 -0
- package/sa_std/collections/linked_list.sal +10 -0
- package/sa_std/collections/prelude.sa +7 -0
- package/sa_std/collections/prelude.sal +1 -0
- package/sa_std/collections/vec_deque.sa +1 -0
- package/sa_std/collections.sal +13 -0
- package/sa_std/convert.sa +1115 -0
- package/sa_std/convert.sal +24 -0
- package/sa_std/core/arc.sa +233 -0
- package/sa_std/core/arc.sal +4 -0
- package/sa_std/core/ascii.sa +784 -0
- package/sa_std/core/ascii.sal +34 -0
- package/sa_std/core/bit.sa +41 -0
- package/sa_std/core/box.sa +1 -0
- package/sa_std/core/box.sal +2 -0
- package/sa_std/core/cell.sa +108 -0
- package/sa_std/core/cell.sal +5 -0
- package/sa_std/core/cleanup.sa +26 -0
- package/sa_std/core/control.sa +20 -0
- package/sa_std/core/derive.sa +60 -0
- package/sa_std/core/derive.sal +1 -0
- package/sa_std/core/dispatch.sa +7 -0
- package/sa_std/core/dispatch.sal +5 -0
- package/sa_std/core/future.sa +777 -0
- package/sa_std/core/future.sal +73 -0
- package/sa_std/core/hash.sa +48 -0
- package/sa_std/core/iter.sa +2805 -0
- package/sa_std/core/iter.sal +4 -0
- package/sa_std/core/loop.sa +60 -0
- package/sa_std/core/mem.sa +220 -0
- package/sa_std/core/option.sa +825 -0
- package/sa_std/core/option.sal +11 -0
- package/sa_std/core/panic.sa +23 -0
- package/sa_std/core/panic.sal +12 -0
- package/sa_std/core/prelude.sa +18 -0
- package/sa_std/core/prelude.sal +18 -0
- package/sa_std/core/rc.sa +225 -0
- package/sa_std/core/rc.sal +4 -0
- package/sa_std/core/refcell.sa +283 -0
- package/sa_std/core/refcell.sal +13 -0
- package/sa_std/core/result.sa +708 -0
- package/sa_std/core/result.sal +6 -0
- package/sa_std/core/rust_patterns.sal +295 -0
- package/sa_std/core/sa_core.sa +84 -0
- package/sa_std/core/slice.sa +4021 -0
- package/sa_std/core/slice.sal +7 -0
- package/sa_std/core/task.sa +112 -0
- package/sa_std/core/task.sal +15 -0
- package/sa_std/core/trait_object.sa +26 -0
- package/sa_std/core/trait_object.sal +4 -0
- package/sa_std/core/waker.sa +289 -0
- package/sa_std/core/waker.sal +31 -0
- package/sa_std/core/weak.sa +2 -0
- package/sa_std/core/weak.sal +4 -0
- package/sa_std/cow.sa +3 -0
- package/sa_std/cow.sal +2 -0
- package/sa_std/cstring.sa +3 -0
- package/sa_std/cstring.sal +2 -0
- package/sa_std/default.sa +99 -0
- package/sa_std/duration.sa +3 -0
- package/sa_std/duration.sal +2 -0
- package/sa_std/encoding/json.sa +259 -0
- package/sa_std/encoding/json.sai +54 -0
- package/sa_std/encoding/json.sal +35 -0
- package/sa_std/encoding/prelude.sa +1 -0
- package/sa_std/encoding/prelude.sal +0 -0
- package/sa_std/env.sa +390 -0
- package/sa_std/env.sai +25 -0
- package/sa_std/error.sa +253 -0
- package/sa_std/error.sal +44 -0
- package/sa_std/ffi/cstring.sa +3 -0
- package/sa_std/ffi/cstring.sal +1 -0
- package/sa_std/ffi/prelude.sa +2 -0
- package/sa_std/ffi/prelude.sal +2 -0
- package/sa_std/ffi.sa +635 -0
- package/sa_std/ffi.sal +51 -0
- package/sa_std/fmt.sa +2 -0
- package/sa_std/fmt.sai +18 -0
- package/sa_std/fmt.sal +35 -0
- package/sa_std/fs.sa +1023 -0
- package/sa_std/fs.sai +127 -0
- package/sa_std/fs.sal +51 -0
- package/sa_std/future.sa +2 -0
- package/sa_std/future.sal +1 -0
- package/sa_std/hash.sa +1486 -0
- package/sa_std/hash.sal +13 -0
- package/sa_std/hashmap.sa +1962 -0
- package/sa_std/hashmap.sal +20 -0
- package/sa_std/hashset.sa +1004 -0
- package/sa_std/hashset.sal +18 -0
- package/sa_std/http2.sa +78 -0
- package/sa_std/http2.sai +26 -0
- package/sa_std/http2.sal +36 -0
- package/sa_std/instant.sa +3 -0
- package/sa_std/instant.sal +2 -0
- package/sa_std/io/buf_reader.sa +43 -0
- package/sa_std/io/buf_writer.sa +35 -0
- package/sa_std/io/bufio.sa +4 -0
- package/sa_std/io/bufio.sal +4 -0
- package/sa_std/io/prelude.sa +1 -0
- package/sa_std/io/prelude.sal +1 -0
- package/sa_std/io/print.sa +2 -0
- package/sa_std/io/print.sai +3 -0
- package/sa_std/io.sa +925 -0
- package/sa_std/io.sai +25 -0
- package/sa_std/io.sal +84 -0
- package/sa_std/iter.sa +2 -0
- package/sa_std/iter.sal +1 -0
- package/sa_std/join_handle.sa +3 -0
- package/sa_std/join_handle.sal +2 -0
- package/sa_std/libsa_async.sa +80 -0
- package/sa_std/m_async.sa +137 -0
- package/sa_std/m_async.sal +30 -0
- package/sa_std/m_async.sla +2 -0
- package/sa_std/manually_drop.sa +3 -0
- package/sa_std/manually_drop.sal +2 -0
- package/sa_std/marker/phantom_data.sa +3 -0
- package/sa_std/marker/phantom_data.sal +1 -0
- package/sa_std/marker/prelude.sa +4 -0
- package/sa_std/marker/prelude.sal +4 -0
- package/sa_std/marker.sa +220 -0
- package/sa_std/marker.sal +15 -0
- package/sa_std/math.sa +84 -0
- package/sa_std/math.sai +10 -0
- package/sa_std/mem/manually_drop.sa +3 -0
- package/sa_std/mem/manually_drop.sal +1 -0
- package/sa_std/mem/prelude.sa +2 -0
- package/sa_std/mem/prelude.sal +2 -0
- package/sa_std/mem.sa +564 -0
- package/sa_std/mem.sal +40 -0
- package/sa_std/modstate.sai +19 -0
- package/sa_std/net.sa +4227 -0
- package/sa_std/net.sai +239 -0
- package/sa_std/net.sal +159 -0
- package/sa_std/netx.sa +85 -0
- package/sa_std/netx.sai +11 -0
- package/sa_std/netx.sal +39 -0
- package/sa_std/nonzero.sa +3 -0
- package/sa_std/nonzero.sal +2 -0
- package/sa_std/num/nonzero.sa +3 -0
- package/sa_std/num/nonzero.sal +1 -0
- package/sa_std/num/prelude.sa +3 -0
- package/sa_std/num/prelude.sal +3 -0
- package/sa_std/num.sa +17302 -0
- package/sa_std/num.sai +11 -0
- package/sa_std/num.sal +341 -0
- package/sa_std/ops.sa +1884 -0
- package/sa_std/ops.sal +68 -0
- package/sa_std/option.sa +2 -0
- package/sa_std/option.sal +1 -0
- package/sa_std/os/fd.sa +96 -0
- package/sa_std/os/fd.sai +7 -0
- package/sa_std/os/fd.sal +11 -0
- package/sa_std/os/prelude.sa +2 -0
- package/sa_std/os/prelude.sal +1 -0
- package/sa_std/os/unix_ffi.sa +271 -0
- package/sa_std/panic.sa +1 -0
- package/sa_std/panic.sal +1 -0
- package/sa_std/path.sa +3170 -0
- package/sa_std/path.sal +12 -0
- package/sa_std/phantom_data.sa +3 -0
- package/sa_std/phantom_data.sal +2 -0
- package/sa_std/pin.sa +79 -0
- package/sa_std/pin.sal +5 -0
- package/sa_std/plugin_async.sa +90 -0
- package/sa_std/plugin_async.sal +29 -0
- package/sa_std/plugin_async.sla +4 -0
- package/sa_std/plugin_http_async.sa +46 -0
- package/sa_std/plugin_http_server.sa +61 -0
- package/sa_std/plugin_http_server.sla +2 -0
- package/sa_std/plugin_sqlite.sa +106 -0
- package/sa_std/plugin_sqlite.sla +2 -0
- package/sa_std/prelude.sa +60 -0
- package/sa_std/prelude.sal +55 -0
- package/sa_std/process.sa +916 -0
- package/sa_std/process.sai +57 -0
- package/sa_std/process.sal +27 -0
- package/sa_std/ptr.sa +503 -0
- package/sa_std/ptr.sal +2 -0
- package/sa_std/result.sa +2 -0
- package/sa_std/result.sal +1 -0
- package/sa_std/rust_core.sa +51 -0
- package/sa_std/rust_core.sal +26 -0
- package/sa_std/sa.mod +7 -0
- package/sa_std/sort.sa +156 -0
- package/sa_std/str.sla +13 -0
- package/sa_std/string.sa +12240 -0
- package/sa_std/string.sai +25 -0
- package/sa_std/string.sal +17 -0
- package/sa_std/string_format.sa +269 -0
- package/sa_std/sync/atomic.sa +1500 -0
- package/sa_std/sync/atomic.sal +45 -0
- package/sa_std/sync/barrier.sa +105 -0
- package/sa_std/sync/barrier.sal +7 -0
- package/sa_std/sync/condvar.sa +240 -0
- package/sa_std/sync/condvar.sal +4 -0
- package/sa_std/sync/mpsc.sa +758 -0
- package/sa_std/sync/mpsc.sal +42 -0
- package/sa_std/sync/mpsc_list.sa +255 -0
- package/sa_std/sync/mpsc_list.sal +3 -0
- package/sa_std/sync/mutex.sa +182 -0
- package/sa_std/sync/mutex.sal +7 -0
- package/sa_std/sync/once.sa +371 -0
- package/sa_std/sync/once.sal +31 -0
- package/sa_std/sync/poison.sa +36 -0
- package/sa_std/sync/poison.sal +11 -0
- package/sa_std/sync/prelude.sa +8 -0
- package/sa_std/sync/prelude.sal +7 -0
- package/sa_std/sync/rwlock.sa +369 -0
- package/sa_std/sync/rwlock.sal +13 -0
- package/sa_std/task.sa +2 -0
- package/sa_std/task.sal +1 -0
- package/sa_std/term.sa +2 -0
- package/sa_std/term.sai +10 -0
- package/sa_std/term.sal +33 -0
- package/sa_std/testing/assert.sai +4 -0
- package/sa_std/testing/mock_io.sa +174 -0
- package/sa_std/testing/mock_io.sal +5 -0
- package/sa_std/testing/prelude.sa +2 -0
- package/sa_std/testing/prelude.sal +1 -0
- package/sa_std/text/prelude.sa +1 -0
- package/sa_std/text/prelude.sal +1 -0
- package/sa_std/text/regex.sa +2 -0
- package/sa_std/text/regex.sai +9 -0
- package/sa_std/text/regex.sal +33 -0
- package/sa_std/thread/join_handle.sa +3 -0
- package/sa_std/thread/join_handle.sal +1 -0
- package/sa_std/thread/prelude.sa +4 -0
- package/sa_std/thread/prelude.sal +3 -0
- package/sa_std/thread.sa +160 -0
- package/sa_std/thread.sai +11 -0
- package/sa_std/thread.sal +4 -0
- package/sa_std/thread_local.sa +45 -0
- package/sa_std/thread_local.sai +9 -0
- package/sa_std/time/duration.sa +3 -0
- package/sa_std/time/duration.sal +1 -0
- package/sa_std/time/instant.sa +3 -0
- package/sa_std/time/instant.sal +1 -0
- package/sa_std/time/prelude.sa +4 -0
- package/sa_std/time/prelude.sal +4 -0
- package/sa_std/time.sa +850 -0
- package/sa_std/time.sai +37 -0
- package/sa_std/time.sal +35 -0
- package/sa_std/time.sla +67 -0
- package/sa_std/tls_client.sai +39 -0
- package/sa_std/vec.sa +5754 -0
- package/sa_std/vec.sal +1 -0
- package/sa_std/vec_deque.sa +4925 -0
- package/sa_std/vec_deque.sal +8 -0
- package/sa_std/vec_runtime_macros.sa +11 -0
- package/sa_std/ws_client.sai +57 -0
|
@@ -0,0 +1,777 @@
|
|
|
1
|
+
@import "future.sal"
|
|
2
|
+
@import "waker.sal"
|
|
3
|
+
@import "waker.sa"
|
|
4
|
+
@import "option.sal"
|
|
5
|
+
@import "result.sal"
|
|
6
|
+
|
|
7
|
+
[MACRO] POLL_PENDING %out_poll
|
|
8
|
+
%out_poll = alloc Poll_SIZE
|
|
9
|
+
store %out_poll+Poll_tag, Poll_PENDING as u64
|
|
10
|
+
store %out_poll+Poll_value, 0 as u64
|
|
11
|
+
[END_MACRO]
|
|
12
|
+
|
|
13
|
+
[MACRO] POLL_READY %out_poll, %value
|
|
14
|
+
%out_poll = alloc Poll_SIZE
|
|
15
|
+
store %out_poll+Poll_tag, Poll_READY as u64
|
|
16
|
+
store %out_poll+Poll_value, %value as u64
|
|
17
|
+
[END_MACRO]
|
|
18
|
+
|
|
19
|
+
[MACRO] POLL_READY_PTR %out_poll, %value_ptr
|
|
20
|
+
%out_poll = alloc Poll_SIZE
|
|
21
|
+
store %out_poll+Poll_tag, Poll_READY as u64
|
|
22
|
+
store %out_poll+Poll_value, %value_ptr as ptr
|
|
23
|
+
[END_MACRO]
|
|
24
|
+
|
|
25
|
+
[MACRO] POLL_SET_PENDING %poll_reg
|
|
26
|
+
store %poll_reg+Poll_tag, Poll_PENDING as u64
|
|
27
|
+
store %poll_reg+Poll_value, 0 as u64
|
|
28
|
+
[END_MACRO]
|
|
29
|
+
|
|
30
|
+
[MACRO] POLL_SET_READY %poll_reg, %value
|
|
31
|
+
store %poll_reg+Poll_tag, Poll_READY as u64
|
|
32
|
+
store %poll_reg+Poll_value, %value as u64
|
|
33
|
+
[END_MACRO]
|
|
34
|
+
|
|
35
|
+
[MACRO] POLL_SET_READY_PTR %poll_reg, %value_ptr
|
|
36
|
+
store %poll_reg+Poll_tag, Poll_READY as u64
|
|
37
|
+
store %poll_reg+Poll_value, %value_ptr as ptr
|
|
38
|
+
[END_MACRO]
|
|
39
|
+
|
|
40
|
+
[MACRO] POLL_IS_READY %out_bool, %poll_reg
|
|
41
|
+
__poll_tag_%out_bool = load %poll_reg+Poll_tag as u64
|
|
42
|
+
%out_bool = eq __poll_tag_%out_bool, Poll_READY
|
|
43
|
+
!__poll_tag_%out_bool
|
|
44
|
+
[END_MACRO]
|
|
45
|
+
|
|
46
|
+
[MACRO] POLL_IS_PENDING %out_bool, %poll_reg
|
|
47
|
+
__poll_tag_%out_bool = load %poll_reg+Poll_tag as u64
|
|
48
|
+
%out_bool = eq __poll_tag_%out_bool, Poll_PENDING
|
|
49
|
+
!__poll_tag_%out_bool
|
|
50
|
+
[END_MACRO]
|
|
51
|
+
|
|
52
|
+
[MACRO] POLL_VALUE %out_value, %poll_reg
|
|
53
|
+
%out_value = load %poll_reg+Poll_value as u64
|
|
54
|
+
[END_MACRO]
|
|
55
|
+
|
|
56
|
+
[MACRO] POLL_VALUE_PTR %out_value, %poll_reg
|
|
57
|
+
%out_value = load %poll_reg+Poll_value as ptr
|
|
58
|
+
[END_MACRO]
|
|
59
|
+
|
|
60
|
+
[MACRO] POLL_MAP %out_poll, %poll_reg, %map_fn
|
|
61
|
+
__poll_map_tag_%out_poll = load %poll_reg+Poll_tag as u64
|
|
62
|
+
__poll_map_ready_%out_poll = eq __poll_map_tag_%out_poll, Poll_READY
|
|
63
|
+
br __poll_map_ready_%out_poll -> L_POLL_MAP_READY_%out_poll, L_POLL_MAP_PENDING_%out_poll
|
|
64
|
+
L_POLL_MAP_READY_%out_poll:
|
|
65
|
+
__poll_map_value_%out_poll = load %poll_reg+Poll_value as u64
|
|
66
|
+
__poll_map_mapped_%out_poll = call %map_fn(__poll_map_value_%out_poll)
|
|
67
|
+
EXPAND POLL_READY %out_poll, __poll_map_mapped_%out_poll
|
|
68
|
+
!__poll_map_mapped_%out_poll
|
|
69
|
+
!__poll_map_value_%out_poll
|
|
70
|
+
jmp L_POLL_MAP_DONE_%out_poll
|
|
71
|
+
L_POLL_MAP_PENDING_%out_poll:
|
|
72
|
+
EXPAND POLL_PENDING %out_poll
|
|
73
|
+
L_POLL_MAP_DONE_%out_poll:
|
|
74
|
+
!__poll_map_ready_%out_poll
|
|
75
|
+
!__poll_map_tag_%out_poll
|
|
76
|
+
[END_MACRO]
|
|
77
|
+
|
|
78
|
+
[MACRO] POLL_RESULT_PENDING %out_poll_res
|
|
79
|
+
%out_poll_res = alloc PollResult_SIZE
|
|
80
|
+
store %out_poll_res+PollResult_poll_tag, Poll_PENDING as u64
|
|
81
|
+
store %out_poll_res+PollResult_result_tag, Result_ERR as u64
|
|
82
|
+
store %out_poll_res+PollResult_ok, 0 as u64
|
|
83
|
+
store %out_poll_res+PollResult_err, 0 as u64
|
|
84
|
+
[END_MACRO]
|
|
85
|
+
|
|
86
|
+
[MACRO] POLL_RESULT_READY_OK %out_poll_res, %value
|
|
87
|
+
%out_poll_res = alloc PollResult_SIZE
|
|
88
|
+
store %out_poll_res+PollResult_poll_tag, Poll_READY as u64
|
|
89
|
+
store %out_poll_res+PollResult_result_tag, Result_OK as u64
|
|
90
|
+
store %out_poll_res+PollResult_ok, %value as u64
|
|
91
|
+
store %out_poll_res+PollResult_err, 0 as u64
|
|
92
|
+
[END_MACRO]
|
|
93
|
+
|
|
94
|
+
[MACRO] POLL_RESULT_READY_ERR %out_poll_res, %err
|
|
95
|
+
%out_poll_res = alloc PollResult_SIZE
|
|
96
|
+
store %out_poll_res+PollResult_poll_tag, Poll_READY as u64
|
|
97
|
+
store %out_poll_res+PollResult_result_tag, Result_ERR as u64
|
|
98
|
+
store %out_poll_res+PollResult_ok, 0 as u64
|
|
99
|
+
store %out_poll_res+PollResult_err, %err as u64
|
|
100
|
+
[END_MACRO]
|
|
101
|
+
|
|
102
|
+
[MACRO] POLL_RESULT_IS_READY %out_bool, %poll_res
|
|
103
|
+
__poll_result_tag_%out_bool = load %poll_res+PollResult_poll_tag as u64
|
|
104
|
+
%out_bool = eq __poll_result_tag_%out_bool, Poll_READY
|
|
105
|
+
!__poll_result_tag_%out_bool
|
|
106
|
+
[END_MACRO]
|
|
107
|
+
|
|
108
|
+
[MACRO] POLL_RESULT_IS_OK %out_bool, %poll_res
|
|
109
|
+
__poll_result_tag_%out_bool = load %poll_res+PollResult_result_tag as u64
|
|
110
|
+
%out_bool = eq __poll_result_tag_%out_bool, Result_OK
|
|
111
|
+
!__poll_result_tag_%out_bool
|
|
112
|
+
[END_MACRO]
|
|
113
|
+
|
|
114
|
+
[MACRO] POLL_RESULT_IS_ERR %out_bool, %poll_res
|
|
115
|
+
__poll_result_tag_%out_bool = load %poll_res+PollResult_result_tag as u64
|
|
116
|
+
%out_bool = eq __poll_result_tag_%out_bool, Result_ERR
|
|
117
|
+
!__poll_result_tag_%out_bool
|
|
118
|
+
[END_MACRO]
|
|
119
|
+
|
|
120
|
+
[MACRO] POLL_RESULT_OK_VALUE %out_value, %poll_res
|
|
121
|
+
%out_value = load %poll_res+PollResult_ok as u64
|
|
122
|
+
[END_MACRO]
|
|
123
|
+
|
|
124
|
+
[MACRO] POLL_RESULT_ERR_VALUE %out_value, %poll_res
|
|
125
|
+
%out_value = load %poll_res+PollResult_err as u64
|
|
126
|
+
[END_MACRO]
|
|
127
|
+
|
|
128
|
+
[MACRO] POLL_RESULT_MAP_OK %out_poll_res, %poll_res, %map_fn
|
|
129
|
+
__poll_result_poll_tag_%out_poll_res = load %poll_res+PollResult_poll_tag as u64
|
|
130
|
+
__poll_result_ready_%out_poll_res = eq __poll_result_poll_tag_%out_poll_res, Poll_READY
|
|
131
|
+
br __poll_result_ready_%out_poll_res -> L_POLL_RESULT_MAP_OK_READY_%out_poll_res, L_POLL_RESULT_MAP_OK_PENDING_%out_poll_res
|
|
132
|
+
L_POLL_RESULT_MAP_OK_READY_%out_poll_res:
|
|
133
|
+
__poll_result_tag_%out_poll_res = load %poll_res+PollResult_result_tag as u64
|
|
134
|
+
__poll_result_ok_%out_poll_res = eq __poll_result_tag_%out_poll_res, Result_OK
|
|
135
|
+
br __poll_result_ok_%out_poll_res -> L_POLL_RESULT_MAP_OK_OK_%out_poll_res, L_POLL_RESULT_MAP_OK_ERR_%out_poll_res
|
|
136
|
+
L_POLL_RESULT_MAP_OK_OK_%out_poll_res:
|
|
137
|
+
__poll_result_value_%out_poll_res = load %poll_res+PollResult_ok as u64
|
|
138
|
+
__poll_result_mapped_%out_poll_res = call %map_fn(__poll_result_value_%out_poll_res)
|
|
139
|
+
EXPAND POLL_RESULT_READY_OK %out_poll_res, __poll_result_mapped_%out_poll_res
|
|
140
|
+
!__poll_result_mapped_%out_poll_res
|
|
141
|
+
!__poll_result_value_%out_poll_res
|
|
142
|
+
jmp L_POLL_RESULT_MAP_OK_READY_DONE_%out_poll_res
|
|
143
|
+
L_POLL_RESULT_MAP_OK_ERR_%out_poll_res:
|
|
144
|
+
__poll_result_err_%out_poll_res = load %poll_res+PollResult_err as u64
|
|
145
|
+
EXPAND POLL_RESULT_READY_ERR %out_poll_res, __poll_result_err_%out_poll_res
|
|
146
|
+
!__poll_result_err_%out_poll_res
|
|
147
|
+
L_POLL_RESULT_MAP_OK_READY_DONE_%out_poll_res:
|
|
148
|
+
!__poll_result_ok_%out_poll_res
|
|
149
|
+
!__poll_result_tag_%out_poll_res
|
|
150
|
+
jmp L_POLL_RESULT_MAP_OK_DONE_%out_poll_res
|
|
151
|
+
L_POLL_RESULT_MAP_OK_PENDING_%out_poll_res:
|
|
152
|
+
EXPAND POLL_RESULT_PENDING %out_poll_res
|
|
153
|
+
L_POLL_RESULT_MAP_OK_DONE_%out_poll_res:
|
|
154
|
+
!__poll_result_ready_%out_poll_res
|
|
155
|
+
!__poll_result_poll_tag_%out_poll_res
|
|
156
|
+
[END_MACRO]
|
|
157
|
+
|
|
158
|
+
[MACRO] POLL_RESULT_MAP_ERR %out_poll_res, %poll_res, %map_fn
|
|
159
|
+
__poll_result_err_poll_tag_%out_poll_res = load %poll_res+PollResult_poll_tag as u64
|
|
160
|
+
__poll_result_err_ready_%out_poll_res = eq __poll_result_err_poll_tag_%out_poll_res, Poll_READY
|
|
161
|
+
br __poll_result_err_ready_%out_poll_res -> L_POLL_RESULT_MAP_ERR_READY_%out_poll_res, L_POLL_RESULT_MAP_ERR_PENDING_%out_poll_res
|
|
162
|
+
L_POLL_RESULT_MAP_ERR_READY_%out_poll_res:
|
|
163
|
+
__poll_result_err_tag_%out_poll_res = load %poll_res+PollResult_result_tag as u64
|
|
164
|
+
__poll_result_err_is_err_%out_poll_res = eq __poll_result_err_tag_%out_poll_res, Result_ERR
|
|
165
|
+
br __poll_result_err_is_err_%out_poll_res -> L_POLL_RESULT_MAP_ERR_ERR_%out_poll_res, L_POLL_RESULT_MAP_ERR_OK_%out_poll_res
|
|
166
|
+
L_POLL_RESULT_MAP_ERR_ERR_%out_poll_res:
|
|
167
|
+
__poll_result_err_value_%out_poll_res = load %poll_res+PollResult_err as u64
|
|
168
|
+
__poll_result_err_mapped_%out_poll_res = call %map_fn(__poll_result_err_value_%out_poll_res)
|
|
169
|
+
EXPAND POLL_RESULT_READY_ERR %out_poll_res, __poll_result_err_mapped_%out_poll_res
|
|
170
|
+
!__poll_result_err_mapped_%out_poll_res
|
|
171
|
+
!__poll_result_err_value_%out_poll_res
|
|
172
|
+
jmp L_POLL_RESULT_MAP_ERR_READY_DONE_%out_poll_res
|
|
173
|
+
L_POLL_RESULT_MAP_ERR_OK_%out_poll_res:
|
|
174
|
+
__poll_result_err_ok_value_%out_poll_res = load %poll_res+PollResult_ok as u64
|
|
175
|
+
EXPAND POLL_RESULT_READY_OK %out_poll_res, __poll_result_err_ok_value_%out_poll_res
|
|
176
|
+
!__poll_result_err_ok_value_%out_poll_res
|
|
177
|
+
L_POLL_RESULT_MAP_ERR_READY_DONE_%out_poll_res:
|
|
178
|
+
!__poll_result_err_is_err_%out_poll_res
|
|
179
|
+
!__poll_result_err_tag_%out_poll_res
|
|
180
|
+
jmp L_POLL_RESULT_MAP_ERR_DONE_%out_poll_res
|
|
181
|
+
L_POLL_RESULT_MAP_ERR_PENDING_%out_poll_res:
|
|
182
|
+
EXPAND POLL_RESULT_PENDING %out_poll_res
|
|
183
|
+
L_POLL_RESULT_MAP_ERR_DONE_%out_poll_res:
|
|
184
|
+
!__poll_result_err_ready_%out_poll_res
|
|
185
|
+
!__poll_result_err_poll_tag_%out_poll_res
|
|
186
|
+
[END_MACRO]
|
|
187
|
+
|
|
188
|
+
[MACRO] POLL_OPTION_RESULT_PENDING %out_poll_res
|
|
189
|
+
%out_poll_res = alloc PollOptionResult_SIZE
|
|
190
|
+
store %out_poll_res+PollOptionResult_poll_tag, Poll_PENDING as u64
|
|
191
|
+
store %out_poll_res+PollOptionResult_option_tag, Option_NONE as u64
|
|
192
|
+
store %out_poll_res+PollOptionResult_result_tag, Result_ERR as u64
|
|
193
|
+
store %out_poll_res+PollOptionResult_ok, 0 as u64
|
|
194
|
+
store %out_poll_res+PollOptionResult_err, 0 as u64
|
|
195
|
+
[END_MACRO]
|
|
196
|
+
|
|
197
|
+
[MACRO] POLL_OPTION_RESULT_READY_NONE %out_poll_res
|
|
198
|
+
%out_poll_res = alloc PollOptionResult_SIZE
|
|
199
|
+
store %out_poll_res+PollOptionResult_poll_tag, Poll_READY as u64
|
|
200
|
+
store %out_poll_res+PollOptionResult_option_tag, Option_NONE as u64
|
|
201
|
+
store %out_poll_res+PollOptionResult_result_tag, Result_ERR as u64
|
|
202
|
+
store %out_poll_res+PollOptionResult_ok, 0 as u64
|
|
203
|
+
store %out_poll_res+PollOptionResult_err, 0 as u64
|
|
204
|
+
[END_MACRO]
|
|
205
|
+
|
|
206
|
+
[MACRO] POLL_OPTION_RESULT_READY_SOME_OK %out_poll_res, %value
|
|
207
|
+
%out_poll_res = alloc PollOptionResult_SIZE
|
|
208
|
+
store %out_poll_res+PollOptionResult_poll_tag, Poll_READY as u64
|
|
209
|
+
store %out_poll_res+PollOptionResult_option_tag, Option_SOME as u64
|
|
210
|
+
store %out_poll_res+PollOptionResult_result_tag, Result_OK as u64
|
|
211
|
+
store %out_poll_res+PollOptionResult_ok, %value as u64
|
|
212
|
+
store %out_poll_res+PollOptionResult_err, 0 as u64
|
|
213
|
+
[END_MACRO]
|
|
214
|
+
|
|
215
|
+
[MACRO] POLL_OPTION_RESULT_READY_SOME_ERR %out_poll_res, %err
|
|
216
|
+
%out_poll_res = alloc PollOptionResult_SIZE
|
|
217
|
+
store %out_poll_res+PollOptionResult_poll_tag, Poll_READY as u64
|
|
218
|
+
store %out_poll_res+PollOptionResult_option_tag, Option_SOME as u64
|
|
219
|
+
store %out_poll_res+PollOptionResult_result_tag, Result_ERR as u64
|
|
220
|
+
store %out_poll_res+PollOptionResult_ok, 0 as u64
|
|
221
|
+
store %out_poll_res+PollOptionResult_err, %err as u64
|
|
222
|
+
[END_MACRO]
|
|
223
|
+
|
|
224
|
+
[MACRO] POLL_OPTION_RESULT_IS_READY %out_bool, %poll_res
|
|
225
|
+
__poll_option_result_tag_%out_bool = load %poll_res+PollOptionResult_poll_tag as u64
|
|
226
|
+
%out_bool = eq __poll_option_result_tag_%out_bool, Poll_READY
|
|
227
|
+
!__poll_option_result_tag_%out_bool
|
|
228
|
+
[END_MACRO]
|
|
229
|
+
|
|
230
|
+
[MACRO] POLL_OPTION_RESULT_IS_SOME %out_bool, %poll_res
|
|
231
|
+
__poll_option_result_tag_%out_bool = load %poll_res+PollOptionResult_option_tag as u64
|
|
232
|
+
%out_bool = eq __poll_option_result_tag_%out_bool, Option_SOME
|
|
233
|
+
!__poll_option_result_tag_%out_bool
|
|
234
|
+
[END_MACRO]
|
|
235
|
+
|
|
236
|
+
[MACRO] POLL_OPTION_RESULT_IS_OK %out_bool, %poll_res
|
|
237
|
+
__poll_option_result_tag_%out_bool = load %poll_res+PollOptionResult_result_tag as u64
|
|
238
|
+
%out_bool = eq __poll_option_result_tag_%out_bool, Result_OK
|
|
239
|
+
!__poll_option_result_tag_%out_bool
|
|
240
|
+
[END_MACRO]
|
|
241
|
+
|
|
242
|
+
[MACRO] POLL_OPTION_RESULT_OK_VALUE %out_value, %poll_res
|
|
243
|
+
%out_value = load %poll_res+PollOptionResult_ok as u64
|
|
244
|
+
[END_MACRO]
|
|
245
|
+
|
|
246
|
+
[MACRO] POLL_OPTION_RESULT_ERR_VALUE %out_value, %poll_res
|
|
247
|
+
%out_value = load %poll_res+PollOptionResult_err as u64
|
|
248
|
+
[END_MACRO]
|
|
249
|
+
|
|
250
|
+
[MACRO] POLL_OPTION_RESULT_MAP_OK %out_poll_res, %poll_res, %map_fn
|
|
251
|
+
__poll_option_ok_poll_tag_%out_poll_res = load %poll_res+PollOptionResult_poll_tag as u64
|
|
252
|
+
__poll_option_ok_ready_%out_poll_res = eq __poll_option_ok_poll_tag_%out_poll_res, Poll_READY
|
|
253
|
+
br __poll_option_ok_ready_%out_poll_res -> L_POLL_OPTION_RESULT_MAP_OK_READY_%out_poll_res, L_POLL_OPTION_RESULT_MAP_OK_PENDING_%out_poll_res
|
|
254
|
+
L_POLL_OPTION_RESULT_MAP_OK_READY_%out_poll_res:
|
|
255
|
+
__poll_option_ok_option_tag_%out_poll_res = load %poll_res+PollOptionResult_option_tag as u64
|
|
256
|
+
__poll_option_ok_some_%out_poll_res = eq __poll_option_ok_option_tag_%out_poll_res, Option_SOME
|
|
257
|
+
br __poll_option_ok_some_%out_poll_res -> L_POLL_OPTION_RESULT_MAP_OK_SOME_%out_poll_res, L_POLL_OPTION_RESULT_MAP_OK_NONE_%out_poll_res
|
|
258
|
+
L_POLL_OPTION_RESULT_MAP_OK_SOME_%out_poll_res:
|
|
259
|
+
__poll_option_ok_result_tag_%out_poll_res = load %poll_res+PollOptionResult_result_tag as u64
|
|
260
|
+
__poll_option_ok_is_ok_%out_poll_res = eq __poll_option_ok_result_tag_%out_poll_res, Result_OK
|
|
261
|
+
br __poll_option_ok_is_ok_%out_poll_res -> L_POLL_OPTION_RESULT_MAP_OK_OK_%out_poll_res, L_POLL_OPTION_RESULT_MAP_OK_ERR_%out_poll_res
|
|
262
|
+
L_POLL_OPTION_RESULT_MAP_OK_OK_%out_poll_res:
|
|
263
|
+
__poll_option_ok_value_%out_poll_res = load %poll_res+PollOptionResult_ok as u64
|
|
264
|
+
__poll_option_ok_mapped_%out_poll_res = call %map_fn(__poll_option_ok_value_%out_poll_res)
|
|
265
|
+
EXPAND POLL_OPTION_RESULT_READY_SOME_OK %out_poll_res, __poll_option_ok_mapped_%out_poll_res
|
|
266
|
+
!__poll_option_ok_mapped_%out_poll_res
|
|
267
|
+
!__poll_option_ok_value_%out_poll_res
|
|
268
|
+
jmp L_POLL_OPTION_RESULT_MAP_OK_SOME_DONE_%out_poll_res
|
|
269
|
+
L_POLL_OPTION_RESULT_MAP_OK_ERR_%out_poll_res:
|
|
270
|
+
__poll_option_ok_err_%out_poll_res = load %poll_res+PollOptionResult_err as u64
|
|
271
|
+
EXPAND POLL_OPTION_RESULT_READY_SOME_ERR %out_poll_res, __poll_option_ok_err_%out_poll_res
|
|
272
|
+
!__poll_option_ok_err_%out_poll_res
|
|
273
|
+
L_POLL_OPTION_RESULT_MAP_OK_SOME_DONE_%out_poll_res:
|
|
274
|
+
!__poll_option_ok_is_ok_%out_poll_res
|
|
275
|
+
!__poll_option_ok_result_tag_%out_poll_res
|
|
276
|
+
jmp L_POLL_OPTION_RESULT_MAP_OK_READY_DONE_%out_poll_res
|
|
277
|
+
L_POLL_OPTION_RESULT_MAP_OK_NONE_%out_poll_res:
|
|
278
|
+
EXPAND POLL_OPTION_RESULT_READY_NONE %out_poll_res
|
|
279
|
+
L_POLL_OPTION_RESULT_MAP_OK_READY_DONE_%out_poll_res:
|
|
280
|
+
!__poll_option_ok_some_%out_poll_res
|
|
281
|
+
!__poll_option_ok_option_tag_%out_poll_res
|
|
282
|
+
jmp L_POLL_OPTION_RESULT_MAP_OK_DONE_%out_poll_res
|
|
283
|
+
L_POLL_OPTION_RESULT_MAP_OK_PENDING_%out_poll_res:
|
|
284
|
+
EXPAND POLL_OPTION_RESULT_PENDING %out_poll_res
|
|
285
|
+
L_POLL_OPTION_RESULT_MAP_OK_DONE_%out_poll_res:
|
|
286
|
+
!__poll_option_ok_ready_%out_poll_res
|
|
287
|
+
!__poll_option_ok_poll_tag_%out_poll_res
|
|
288
|
+
[END_MACRO]
|
|
289
|
+
|
|
290
|
+
[MACRO] POLL_OPTION_RESULT_MAP_ERR %out_poll_res, %poll_res, %map_fn
|
|
291
|
+
__poll_option_err_poll_tag_%out_poll_res = load %poll_res+PollOptionResult_poll_tag as u64
|
|
292
|
+
__poll_option_err_ready_%out_poll_res = eq __poll_option_err_poll_tag_%out_poll_res, Poll_READY
|
|
293
|
+
br __poll_option_err_ready_%out_poll_res -> L_POLL_OPTION_RESULT_MAP_ERR_READY_%out_poll_res, L_POLL_OPTION_RESULT_MAP_ERR_PENDING_%out_poll_res
|
|
294
|
+
L_POLL_OPTION_RESULT_MAP_ERR_READY_%out_poll_res:
|
|
295
|
+
__poll_option_err_option_tag_%out_poll_res = load %poll_res+PollOptionResult_option_tag as u64
|
|
296
|
+
__poll_option_err_some_%out_poll_res = eq __poll_option_err_option_tag_%out_poll_res, Option_SOME
|
|
297
|
+
br __poll_option_err_some_%out_poll_res -> L_POLL_OPTION_RESULT_MAP_ERR_SOME_%out_poll_res, L_POLL_OPTION_RESULT_MAP_ERR_NONE_%out_poll_res
|
|
298
|
+
L_POLL_OPTION_RESULT_MAP_ERR_SOME_%out_poll_res:
|
|
299
|
+
__poll_option_err_result_tag_%out_poll_res = load %poll_res+PollOptionResult_result_tag as u64
|
|
300
|
+
__poll_option_err_is_err_%out_poll_res = eq __poll_option_err_result_tag_%out_poll_res, Result_ERR
|
|
301
|
+
br __poll_option_err_is_err_%out_poll_res -> L_POLL_OPTION_RESULT_MAP_ERR_ERR_%out_poll_res, L_POLL_OPTION_RESULT_MAP_ERR_OK_%out_poll_res
|
|
302
|
+
L_POLL_OPTION_RESULT_MAP_ERR_ERR_%out_poll_res:
|
|
303
|
+
__poll_option_err_value_%out_poll_res = load %poll_res+PollOptionResult_err as u64
|
|
304
|
+
__poll_option_err_mapped_%out_poll_res = call %map_fn(__poll_option_err_value_%out_poll_res)
|
|
305
|
+
EXPAND POLL_OPTION_RESULT_READY_SOME_ERR %out_poll_res, __poll_option_err_mapped_%out_poll_res
|
|
306
|
+
!__poll_option_err_mapped_%out_poll_res
|
|
307
|
+
!__poll_option_err_value_%out_poll_res
|
|
308
|
+
jmp L_POLL_OPTION_RESULT_MAP_ERR_SOME_DONE_%out_poll_res
|
|
309
|
+
L_POLL_OPTION_RESULT_MAP_ERR_OK_%out_poll_res:
|
|
310
|
+
__poll_option_err_ok_%out_poll_res = load %poll_res+PollOptionResult_ok as u64
|
|
311
|
+
EXPAND POLL_OPTION_RESULT_READY_SOME_OK %out_poll_res, __poll_option_err_ok_%out_poll_res
|
|
312
|
+
!__poll_option_err_ok_%out_poll_res
|
|
313
|
+
L_POLL_OPTION_RESULT_MAP_ERR_SOME_DONE_%out_poll_res:
|
|
314
|
+
!__poll_option_err_is_err_%out_poll_res
|
|
315
|
+
!__poll_option_err_result_tag_%out_poll_res
|
|
316
|
+
jmp L_POLL_OPTION_RESULT_MAP_ERR_READY_DONE_%out_poll_res
|
|
317
|
+
L_POLL_OPTION_RESULT_MAP_ERR_NONE_%out_poll_res:
|
|
318
|
+
EXPAND POLL_OPTION_RESULT_READY_NONE %out_poll_res
|
|
319
|
+
L_POLL_OPTION_RESULT_MAP_ERR_READY_DONE_%out_poll_res:
|
|
320
|
+
!__poll_option_err_some_%out_poll_res
|
|
321
|
+
!__poll_option_err_option_tag_%out_poll_res
|
|
322
|
+
jmp L_POLL_OPTION_RESULT_MAP_ERR_DONE_%out_poll_res
|
|
323
|
+
L_POLL_OPTION_RESULT_MAP_ERR_PENDING_%out_poll_res:
|
|
324
|
+
EXPAND POLL_OPTION_RESULT_PENDING %out_poll_res
|
|
325
|
+
L_POLL_OPTION_RESULT_MAP_ERR_DONE_%out_poll_res:
|
|
326
|
+
!__poll_option_err_ready_%out_poll_res
|
|
327
|
+
!__poll_option_err_poll_tag_%out_poll_res
|
|
328
|
+
[END_MACRO]
|
|
329
|
+
|
|
330
|
+
[MACRO] POLL_BRANCH %poll_reg, %ready_label, %pending_label
|
|
331
|
+
__poll_tag_%poll_reg = load %poll_reg+Poll_tag as u64
|
|
332
|
+
__poll_is_ready_%poll_reg = eq __poll_tag_%poll_reg, Poll_READY
|
|
333
|
+
br __poll_is_ready_%poll_reg -> L_POLL_BRANCH_READY_%poll_reg, L_POLL_BRANCH_PENDING_%poll_reg
|
|
334
|
+
L_POLL_BRANCH_READY_%poll_reg:
|
|
335
|
+
!__poll_is_ready_%poll_reg
|
|
336
|
+
!__poll_tag_%poll_reg
|
|
337
|
+
jmp %ready_label
|
|
338
|
+
L_POLL_BRANCH_PENDING_%poll_reg:
|
|
339
|
+
!__poll_is_ready_%poll_reg
|
|
340
|
+
!__poll_tag_%poll_reg
|
|
341
|
+
jmp %pending_label
|
|
342
|
+
[END_MACRO]
|
|
343
|
+
|
|
344
|
+
[MACRO] CONTEXT_NEW %out_ctx, %waker_reg, %data_ptr
|
|
345
|
+
%out_ctx = alloc Context_SIZE
|
|
346
|
+
store %out_ctx+Context_waker, %waker_reg as ptr
|
|
347
|
+
store %out_ctx+Context_local_waker, %waker_reg as ptr
|
|
348
|
+
store %out_ctx+Context_ext, 0 as ptr
|
|
349
|
+
store %out_ctx+Context_data, %data_ptr as ptr
|
|
350
|
+
[END_MACRO]
|
|
351
|
+
|
|
352
|
+
[MACRO] CONTEXT_FROM_WAKER %out_ctx, %waker_reg
|
|
353
|
+
__context_no_data_%out_ctx = 0 as ptr
|
|
354
|
+
EXPAND CONTEXT_NEW %out_ctx, %waker_reg, __context_no_data_%out_ctx
|
|
355
|
+
!__context_no_data_%out_ctx
|
|
356
|
+
[END_MACRO]
|
|
357
|
+
|
|
358
|
+
[MACRO] CONTEXT_WAKER %out_waker, %ctx_reg
|
|
359
|
+
%out_waker = load %ctx_reg+Context_waker as ptr
|
|
360
|
+
[END_MACRO]
|
|
361
|
+
|
|
362
|
+
[MACRO] CONTEXT_LOCAL_WAKER %out_waker, %ctx_reg
|
|
363
|
+
%out_waker = load %ctx_reg+Context_local_waker as ptr
|
|
364
|
+
[END_MACRO]
|
|
365
|
+
|
|
366
|
+
[MACRO] CONTEXT_EXT %out_ext, %ctx_reg
|
|
367
|
+
%out_ext = load %ctx_reg+Context_ext as ptr
|
|
368
|
+
[END_MACRO]
|
|
369
|
+
|
|
370
|
+
[MACRO] CONTEXT_SET_EXT %ctx_reg, %ext_ptr
|
|
371
|
+
store %ctx_reg+Context_ext, %ext_ptr as ptr
|
|
372
|
+
[END_MACRO]
|
|
373
|
+
|
|
374
|
+
[MACRO] CONTEXT_DATA %out_data, %ctx_reg
|
|
375
|
+
%out_data = load %ctx_reg+Context_data as ptr
|
|
376
|
+
[END_MACRO]
|
|
377
|
+
|
|
378
|
+
[MACRO] CONTEXT_BUILDER_FROM_WAKER %out_builder, %waker_reg
|
|
379
|
+
%out_builder = alloc ContextBuilder_SIZE
|
|
380
|
+
store %out_builder+ContextBuilder_waker, %waker_reg as ptr
|
|
381
|
+
store %out_builder+ContextBuilder_local_waker, %waker_reg as ptr
|
|
382
|
+
store %out_builder+ContextBuilder_ext, 0 as ptr
|
|
383
|
+
store %out_builder+ContextBuilder_data, 0 as ptr
|
|
384
|
+
[END_MACRO]
|
|
385
|
+
|
|
386
|
+
[MACRO] CONTEXT_BUILDER_FROM_CONTEXT %out_builder, %ctx_reg
|
|
387
|
+
__ctx_builder_waker_%out_builder = load %ctx_reg+Context_waker as ptr
|
|
388
|
+
__ctx_builder_local_%out_builder = load %ctx_reg+Context_local_waker as ptr
|
|
389
|
+
__ctx_builder_ext_%out_builder = load %ctx_reg+Context_ext as ptr
|
|
390
|
+
__ctx_builder_data_%out_builder = load %ctx_reg+Context_data as ptr
|
|
391
|
+
%out_builder = alloc ContextBuilder_SIZE
|
|
392
|
+
store %out_builder+ContextBuilder_waker, __ctx_builder_waker_%out_builder as ptr
|
|
393
|
+
store %out_builder+ContextBuilder_local_waker, __ctx_builder_local_%out_builder as ptr
|
|
394
|
+
store %out_builder+ContextBuilder_ext, __ctx_builder_ext_%out_builder as ptr
|
|
395
|
+
store %out_builder+ContextBuilder_data, __ctx_builder_data_%out_builder as ptr
|
|
396
|
+
!__ctx_builder_data_%out_builder
|
|
397
|
+
!__ctx_builder_ext_%out_builder
|
|
398
|
+
!__ctx_builder_local_%out_builder
|
|
399
|
+
!__ctx_builder_waker_%out_builder
|
|
400
|
+
[END_MACRO]
|
|
401
|
+
|
|
402
|
+
[MACRO] CONTEXT_BUILDER_SET_WAKER %builder_reg, %waker_reg
|
|
403
|
+
store %builder_reg+ContextBuilder_waker, %waker_reg as ptr
|
|
404
|
+
[END_MACRO]
|
|
405
|
+
|
|
406
|
+
[MACRO] CONTEXT_BUILDER_SET_LOCAL_WAKER %builder_reg, %local_waker_reg
|
|
407
|
+
store %builder_reg+ContextBuilder_local_waker, %local_waker_reg as ptr
|
|
408
|
+
[END_MACRO]
|
|
409
|
+
|
|
410
|
+
[MACRO] CONTEXT_BUILDER_SET_EXT %builder_reg, %ext_ptr
|
|
411
|
+
store %builder_reg+ContextBuilder_ext, %ext_ptr as ptr
|
|
412
|
+
[END_MACRO]
|
|
413
|
+
|
|
414
|
+
[MACRO] CONTEXT_BUILDER_SET_DATA %builder_reg, %data_ptr
|
|
415
|
+
store %builder_reg+ContextBuilder_data, %data_ptr as ptr
|
|
416
|
+
[END_MACRO]
|
|
417
|
+
|
|
418
|
+
[MACRO] CONTEXT_BUILDER_BUILD %out_ctx, %builder_reg
|
|
419
|
+
__ctx_builder_build_waker_%out_ctx = load %builder_reg+ContextBuilder_waker as ptr
|
|
420
|
+
__ctx_builder_build_local_%out_ctx = load %builder_reg+ContextBuilder_local_waker as ptr
|
|
421
|
+
__ctx_builder_build_ext_%out_ctx = load %builder_reg+ContextBuilder_ext as ptr
|
|
422
|
+
__ctx_builder_build_data_%out_ctx = load %builder_reg+ContextBuilder_data as ptr
|
|
423
|
+
%out_ctx = alloc Context_SIZE
|
|
424
|
+
store %out_ctx+Context_waker, __ctx_builder_build_waker_%out_ctx as ptr
|
|
425
|
+
store %out_ctx+Context_local_waker, __ctx_builder_build_local_%out_ctx as ptr
|
|
426
|
+
store %out_ctx+Context_ext, __ctx_builder_build_ext_%out_ctx as ptr
|
|
427
|
+
store %out_ctx+Context_data, __ctx_builder_build_data_%out_ctx as ptr
|
|
428
|
+
!__ctx_builder_build_data_%out_ctx
|
|
429
|
+
!__ctx_builder_build_ext_%out_ctx
|
|
430
|
+
!__ctx_builder_build_local_%out_ctx
|
|
431
|
+
!__ctx_builder_build_waker_%out_ctx
|
|
432
|
+
[END_MACRO]
|
|
433
|
+
|
|
434
|
+
[MACRO] FUTURE_NEW %out_future, %data_ptr, %vtable_ptr
|
|
435
|
+
%out_future = alloc Future_SIZE
|
|
436
|
+
store %out_future+Future_data, %data_ptr as ptr
|
|
437
|
+
store %out_future+Future_vtable, %vtable_ptr as ptr
|
|
438
|
+
[END_MACRO]
|
|
439
|
+
|
|
440
|
+
[MACRO] FUTURE_READY_STATE_NEW %out_state, %value
|
|
441
|
+
%out_state = alloc ReadyFuture_SIZE
|
|
442
|
+
store %out_state+ReadyFuture_state, 1 as u64
|
|
443
|
+
store %out_state+ReadyFuture_value, %value as u64
|
|
444
|
+
[END_MACRO]
|
|
445
|
+
|
|
446
|
+
[MACRO] FUTURE_PENDING_STATE_NEW %out_state
|
|
447
|
+
%out_state = alloc PendingFuture_SIZE
|
|
448
|
+
store %out_state+PendingFuture_marker, 0 as u64
|
|
449
|
+
[END_MACRO]
|
|
450
|
+
|
|
451
|
+
[MACRO] FUTURE_READY_STATE_INTO_INNER %out_value, %state_reg
|
|
452
|
+
%out_value = load %state_reg+ReadyFuture_value as u64
|
|
453
|
+
store %state_reg+ReadyFuture_state, 0 as u64
|
|
454
|
+
[END_MACRO]
|
|
455
|
+
|
|
456
|
+
[MACRO] FUTURE_READY_POLL_STATE %out_poll, %state_reg
|
|
457
|
+
__future_ready_state_%out_poll = load %state_reg+ReadyFuture_state as u64
|
|
458
|
+
__future_ready_available_%out_poll = eq __future_ready_state_%out_poll, 1
|
|
459
|
+
br __future_ready_available_%out_poll -> L_FUTURE_READY_POLL_READY_%out_poll, L_FUTURE_READY_POLL_EMPTY_%out_poll
|
|
460
|
+
L_FUTURE_READY_POLL_READY_%out_poll:
|
|
461
|
+
__future_ready_value_%out_poll = load %state_reg+ReadyFuture_value as u64
|
|
462
|
+
store %state_reg+ReadyFuture_state, 0 as u64
|
|
463
|
+
EXPAND POLL_READY %out_poll, __future_ready_value_%out_poll
|
|
464
|
+
!__future_ready_value_%out_poll
|
|
465
|
+
jmp L_FUTURE_READY_POLL_DONE_%out_poll
|
|
466
|
+
L_FUTURE_READY_POLL_EMPTY_%out_poll:
|
|
467
|
+
EXPAND POLL_PENDING %out_poll
|
|
468
|
+
L_FUTURE_READY_POLL_DONE_%out_poll:
|
|
469
|
+
!__future_ready_available_%out_poll
|
|
470
|
+
!__future_ready_state_%out_poll
|
|
471
|
+
[END_MACRO]
|
|
472
|
+
|
|
473
|
+
[MACRO] FUTURE_READY_SET_POLL_STATE %out_poll_reg, %state_reg
|
|
474
|
+
__future_ready_set_state_%out_poll_reg = load %state_reg+ReadyFuture_state as u64
|
|
475
|
+
__future_ready_set_available_%out_poll_reg = eq __future_ready_set_state_%out_poll_reg, 1
|
|
476
|
+
br __future_ready_set_available_%out_poll_reg -> L_FUTURE_READY_SET_READY_%out_poll_reg, L_FUTURE_READY_SET_EMPTY_%out_poll_reg
|
|
477
|
+
L_FUTURE_READY_SET_READY_%out_poll_reg:
|
|
478
|
+
__future_ready_set_value_%out_poll_reg = load %state_reg+ReadyFuture_value as u64
|
|
479
|
+
store %state_reg+ReadyFuture_state, 0 as u64
|
|
480
|
+
EXPAND POLL_SET_READY %out_poll_reg, __future_ready_set_value_%out_poll_reg
|
|
481
|
+
!__future_ready_set_value_%out_poll_reg
|
|
482
|
+
jmp L_FUTURE_READY_SET_DONE_%out_poll_reg
|
|
483
|
+
L_FUTURE_READY_SET_EMPTY_%out_poll_reg:
|
|
484
|
+
EXPAND POLL_SET_PENDING %out_poll_reg
|
|
485
|
+
L_FUTURE_READY_SET_DONE_%out_poll_reg:
|
|
486
|
+
!__future_ready_set_available_%out_poll_reg
|
|
487
|
+
!__future_ready_set_state_%out_poll_reg
|
|
488
|
+
[END_MACRO]
|
|
489
|
+
|
|
490
|
+
[MACRO] FUTURE_PENDING_POLL_STATE %out_poll, %state_reg
|
|
491
|
+
EXPAND POLL_PENDING %out_poll
|
|
492
|
+
[END_MACRO]
|
|
493
|
+
|
|
494
|
+
[MACRO] FUTURE_PENDING_SET_POLL_STATE %out_poll_reg, %state_reg
|
|
495
|
+
EXPAND POLL_SET_PENDING %out_poll_reg
|
|
496
|
+
[END_MACRO]
|
|
497
|
+
|
|
498
|
+
[MACRO] FUTURE_POLL_FN_STATE_NEW %out_state, %data_ptr, %vtable_ptr
|
|
499
|
+
%out_state = alloc PollFnFuture_SIZE
|
|
500
|
+
store %out_state+PollFnFuture_data, %data_ptr as ptr
|
|
501
|
+
store %out_state+PollFnFuture_vtable, %vtable_ptr as ptr
|
|
502
|
+
[END_MACRO]
|
|
503
|
+
|
|
504
|
+
[MACRO] FUTURE_POLL_FN_STATE_POLL %out_poll, %state_reg, %ctx_reg
|
|
505
|
+
__future_poll_fn_data_%out_poll = load %state_reg+PollFnFuture_data as ptr
|
|
506
|
+
__future_poll_fn_vtable_%out_poll = load %state_reg+PollFnFuture_vtable as ptr
|
|
507
|
+
__future_poll_fn_%out_poll = load __future_poll_fn_vtable_%out_poll+FuturePollSlot as ptr
|
|
508
|
+
%out_poll = alloc Poll_SIZE
|
|
509
|
+
call_indirect __future_poll_fn_%out_poll(&__future_poll_fn_data_%out_poll, &%ctx_reg, &%out_poll)
|
|
510
|
+
!__future_poll_fn_%out_poll
|
|
511
|
+
!__future_poll_fn_vtable_%out_poll
|
|
512
|
+
!__future_poll_fn_data_%out_poll
|
|
513
|
+
[END_MACRO]
|
|
514
|
+
|
|
515
|
+
[MACRO] FUTURE_PAIR_NEW %out_pair, %left_value, %right_value
|
|
516
|
+
%out_pair = alloc FuturePair_SIZE
|
|
517
|
+
store %out_pair+FuturePair_left, %left_value as u64
|
|
518
|
+
store %out_pair+FuturePair_right, %right_value as u64
|
|
519
|
+
[END_MACRO]
|
|
520
|
+
|
|
521
|
+
[MACRO] FUTURE_PAIR_LEFT %out_value, %pair_reg
|
|
522
|
+
%out_value = load %pair_reg+FuturePair_left as u64
|
|
523
|
+
[END_MACRO]
|
|
524
|
+
|
|
525
|
+
[MACRO] FUTURE_PAIR_RIGHT %out_value, %pair_reg
|
|
526
|
+
%out_value = load %pair_reg+FuturePair_right as u64
|
|
527
|
+
[END_MACRO]
|
|
528
|
+
|
|
529
|
+
[MACRO] FUTURE_EITHER_LEFT %out_either, %value
|
|
530
|
+
%out_either = alloc FutureEither_SIZE
|
|
531
|
+
store %out_either+FutureEither_side, FutureSelect_LEFT as u64
|
|
532
|
+
store %out_either+FutureEither_left, %value as u64
|
|
533
|
+
store %out_either+FutureEither_right, 0 as u64
|
|
534
|
+
[END_MACRO]
|
|
535
|
+
|
|
536
|
+
[MACRO] FUTURE_EITHER_RIGHT %out_either, %value
|
|
537
|
+
%out_either = alloc FutureEither_SIZE
|
|
538
|
+
store %out_either+FutureEither_side, FutureSelect_RIGHT as u64
|
|
539
|
+
store %out_either+FutureEither_left, 0 as u64
|
|
540
|
+
store %out_either+FutureEither_right, %value as u64
|
|
541
|
+
[END_MACRO]
|
|
542
|
+
|
|
543
|
+
[MACRO] FUTURE_EITHER_SIDE %out_side, %either_reg
|
|
544
|
+
%out_side = load %either_reg+FutureEither_side as u64
|
|
545
|
+
[END_MACRO]
|
|
546
|
+
|
|
547
|
+
[MACRO] FUTURE_EITHER_LEFT_VALUE %out_value, %either_reg
|
|
548
|
+
%out_value = load %either_reg+FutureEither_left as u64
|
|
549
|
+
[END_MACRO]
|
|
550
|
+
|
|
551
|
+
[MACRO] FUTURE_EITHER_RIGHT_VALUE %out_value, %either_reg
|
|
552
|
+
%out_value = load %either_reg+FutureEither_right as u64
|
|
553
|
+
[END_MACRO]
|
|
554
|
+
|
|
555
|
+
[MACRO] FUTURE_JOIN2_STATE_NEW %out_state, %left_future, %right_future
|
|
556
|
+
%out_state = alloc FutureJoin2State_SIZE
|
|
557
|
+
store %out_state+FutureJoin2State_left, %left_future as ptr
|
|
558
|
+
store %out_state+FutureJoin2State_right, %right_future as ptr
|
|
559
|
+
store %out_state+FutureJoin2State_left_value, 0 as u64
|
|
560
|
+
store %out_state+FutureJoin2State_right_value, 0 as u64
|
|
561
|
+
store %out_state+FutureJoin2State_left_done, 0 as u64
|
|
562
|
+
store %out_state+FutureJoin2State_right_done, 0 as u64
|
|
563
|
+
[END_MACRO]
|
|
564
|
+
|
|
565
|
+
[MACRO] FUTURE_JOIN2_STATE_POLL %out_poll, %join_state, %ctx_reg
|
|
566
|
+
__future_join_state_left_done_%out_poll = load %join_state+FutureJoin2State_left_done as u64
|
|
567
|
+
__future_join_state_left_pending_%out_poll = eq __future_join_state_left_done_%out_poll, 0
|
|
568
|
+
br __future_join_state_left_pending_%out_poll -> L_FUTURE_JOIN2_STATE_POLL_LEFT_%out_poll, L_FUTURE_JOIN2_STATE_AFTER_LEFT_%out_poll
|
|
569
|
+
L_FUTURE_JOIN2_STATE_POLL_LEFT_%out_poll:
|
|
570
|
+
__future_join_state_left_future_%out_poll = load %join_state+FutureJoin2State_left as ptr
|
|
571
|
+
EXPAND FUTURE_POLL __future_join_state_left_poll_%out_poll, __future_join_state_left_future_%out_poll, %ctx_reg
|
|
572
|
+
__future_join_state_left_tag_%out_poll = load __future_join_state_left_poll_%out_poll+Poll_tag as u64
|
|
573
|
+
__future_join_state_left_ready_%out_poll = eq __future_join_state_left_tag_%out_poll, Poll_READY
|
|
574
|
+
br __future_join_state_left_ready_%out_poll -> L_FUTURE_JOIN2_STATE_LEFT_READY_%out_poll, L_FUTURE_JOIN2_STATE_LEFT_PENDING_%out_poll
|
|
575
|
+
L_FUTURE_JOIN2_STATE_LEFT_READY_%out_poll:
|
|
576
|
+
__future_join_state_left_value_%out_poll = load __future_join_state_left_poll_%out_poll+Poll_value as u64
|
|
577
|
+
store %join_state+FutureJoin2State_left_value, __future_join_state_left_value_%out_poll as u64
|
|
578
|
+
store %join_state+FutureJoin2State_left_done, 1 as u64
|
|
579
|
+
!__future_join_state_left_value_%out_poll
|
|
580
|
+
L_FUTURE_JOIN2_STATE_LEFT_PENDING_%out_poll:
|
|
581
|
+
!__future_join_state_left_ready_%out_poll
|
|
582
|
+
!__future_join_state_left_tag_%out_poll
|
|
583
|
+
!__future_join_state_left_poll_%out_poll
|
|
584
|
+
!__future_join_state_left_future_%out_poll
|
|
585
|
+
L_FUTURE_JOIN2_STATE_AFTER_LEFT_%out_poll:
|
|
586
|
+
__future_join_state_right_done_%out_poll = load %join_state+FutureJoin2State_right_done as u64
|
|
587
|
+
__future_join_state_right_pending_%out_poll = eq __future_join_state_right_done_%out_poll, 0
|
|
588
|
+
br __future_join_state_right_pending_%out_poll -> L_FUTURE_JOIN2_STATE_POLL_RIGHT_%out_poll, L_FUTURE_JOIN2_STATE_AFTER_RIGHT_%out_poll
|
|
589
|
+
L_FUTURE_JOIN2_STATE_POLL_RIGHT_%out_poll:
|
|
590
|
+
__future_join_state_right_future_%out_poll = load %join_state+FutureJoin2State_right as ptr
|
|
591
|
+
EXPAND FUTURE_POLL __future_join_state_right_poll_%out_poll, __future_join_state_right_future_%out_poll, %ctx_reg
|
|
592
|
+
__future_join_state_right_tag_%out_poll = load __future_join_state_right_poll_%out_poll+Poll_tag as u64
|
|
593
|
+
__future_join_state_right_ready_%out_poll = eq __future_join_state_right_tag_%out_poll, Poll_READY
|
|
594
|
+
br __future_join_state_right_ready_%out_poll -> L_FUTURE_JOIN2_STATE_RIGHT_READY_%out_poll, L_FUTURE_JOIN2_STATE_RIGHT_PENDING_%out_poll
|
|
595
|
+
L_FUTURE_JOIN2_STATE_RIGHT_READY_%out_poll:
|
|
596
|
+
__future_join_state_right_value_%out_poll = load __future_join_state_right_poll_%out_poll+Poll_value as u64
|
|
597
|
+
store %join_state+FutureJoin2State_right_value, __future_join_state_right_value_%out_poll as u64
|
|
598
|
+
store %join_state+FutureJoin2State_right_done, 1 as u64
|
|
599
|
+
!__future_join_state_right_value_%out_poll
|
|
600
|
+
L_FUTURE_JOIN2_STATE_RIGHT_PENDING_%out_poll:
|
|
601
|
+
!__future_join_state_right_ready_%out_poll
|
|
602
|
+
!__future_join_state_right_tag_%out_poll
|
|
603
|
+
!__future_join_state_right_poll_%out_poll
|
|
604
|
+
!__future_join_state_right_future_%out_poll
|
|
605
|
+
L_FUTURE_JOIN2_STATE_AFTER_RIGHT_%out_poll:
|
|
606
|
+
__future_join_state_left_done_now_%out_poll = load %join_state+FutureJoin2State_left_done as u64
|
|
607
|
+
__future_join_state_right_done_now_%out_poll = load %join_state+FutureJoin2State_right_done as u64
|
|
608
|
+
__future_join_state_all_ready_%out_poll = and __future_join_state_left_done_now_%out_poll, __future_join_state_right_done_now_%out_poll
|
|
609
|
+
br __future_join_state_all_ready_%out_poll -> L_FUTURE_JOIN2_STATE_READY_%out_poll, L_FUTURE_JOIN2_STATE_PENDING_%out_poll
|
|
610
|
+
L_FUTURE_JOIN2_STATE_READY_%out_poll:
|
|
611
|
+
__future_join_state_left_result_%out_poll = load %join_state+FutureJoin2State_left_value as u64
|
|
612
|
+
__future_join_state_right_result_%out_poll = load %join_state+FutureJoin2State_right_value as u64
|
|
613
|
+
EXPAND FUTURE_PAIR_NEW __future_join_state_pair_%out_poll, __future_join_state_left_result_%out_poll, __future_join_state_right_result_%out_poll
|
|
614
|
+
EXPAND POLL_READY_PTR %out_poll, __future_join_state_pair_%out_poll
|
|
615
|
+
^__future_join_state_pair_%out_poll
|
|
616
|
+
!__future_join_state_right_result_%out_poll
|
|
617
|
+
!__future_join_state_left_result_%out_poll
|
|
618
|
+
jmp L_FUTURE_JOIN2_STATE_DONE_%out_poll
|
|
619
|
+
L_FUTURE_JOIN2_STATE_PENDING_%out_poll:
|
|
620
|
+
EXPAND POLL_PENDING %out_poll
|
|
621
|
+
L_FUTURE_JOIN2_STATE_DONE_%out_poll:
|
|
622
|
+
!__future_join_state_all_ready_%out_poll
|
|
623
|
+
!__future_join_state_right_done_now_%out_poll
|
|
624
|
+
!__future_join_state_left_done_now_%out_poll
|
|
625
|
+
!__future_join_state_right_pending_%out_poll
|
|
626
|
+
!__future_join_state_right_done_%out_poll
|
|
627
|
+
!__future_join_state_left_pending_%out_poll
|
|
628
|
+
!__future_join_state_left_done_%out_poll
|
|
629
|
+
[END_MACRO]
|
|
630
|
+
|
|
631
|
+
[MACRO] FUTURE_SELECT2_STATE_NEW %out_state, %left_future, %right_future
|
|
632
|
+
%out_state = alloc FutureSelect2State_SIZE
|
|
633
|
+
store %out_state+FutureSelect2State_left, %left_future as ptr
|
|
634
|
+
store %out_state+FutureSelect2State_right, %right_future as ptr
|
|
635
|
+
store %out_state+FutureSelect2State_winner, FutureSelect_NONE as u64
|
|
636
|
+
[END_MACRO]
|
|
637
|
+
|
|
638
|
+
[MACRO] FUTURE_SELECT2_STATE_POLL %out_poll, %select_state, %ctx_reg
|
|
639
|
+
__future_select_state_winner_%out_poll = load %select_state+FutureSelect2State_winner as u64
|
|
640
|
+
__future_select_state_has_winner_%out_poll = ne __future_select_state_winner_%out_poll, FutureSelect_NONE
|
|
641
|
+
br __future_select_state_has_winner_%out_poll -> L_FUTURE_SELECT2_STATE_DONE_ALREADY_%out_poll, L_FUTURE_SELECT2_STATE_POLL_LEFT_%out_poll
|
|
642
|
+
L_FUTURE_SELECT2_STATE_DONE_ALREADY_%out_poll:
|
|
643
|
+
EXPAND POLL_PENDING %out_poll
|
|
644
|
+
jmp L_FUTURE_SELECT2_STATE_DONE_%out_poll
|
|
645
|
+
L_FUTURE_SELECT2_STATE_POLL_LEFT_%out_poll:
|
|
646
|
+
__future_select_state_left_%out_poll = load %select_state+FutureSelect2State_left as ptr
|
|
647
|
+
EXPAND FUTURE_POLL __future_select_state_left_poll_%out_poll, __future_select_state_left_%out_poll, %ctx_reg
|
|
648
|
+
__future_select_state_left_tag_%out_poll = load __future_select_state_left_poll_%out_poll+Poll_tag as u64
|
|
649
|
+
__future_select_state_left_ready_%out_poll = eq __future_select_state_left_tag_%out_poll, Poll_READY
|
|
650
|
+
br __future_select_state_left_ready_%out_poll -> L_FUTURE_SELECT2_STATE_LEFT_READY_%out_poll, L_FUTURE_SELECT2_STATE_POLL_RIGHT_%out_poll
|
|
651
|
+
L_FUTURE_SELECT2_STATE_LEFT_READY_%out_poll:
|
|
652
|
+
__future_select_state_left_value_%out_poll = load __future_select_state_left_poll_%out_poll+Poll_value as u64
|
|
653
|
+
store %select_state+FutureSelect2State_winner, FutureSelect_LEFT as u64
|
|
654
|
+
EXPAND FUTURE_EITHER_LEFT __future_select_state_either_left_%out_poll, __future_select_state_left_value_%out_poll
|
|
655
|
+
EXPAND POLL_READY_PTR %out_poll, __future_select_state_either_left_%out_poll
|
|
656
|
+
^__future_select_state_either_left_%out_poll
|
|
657
|
+
!__future_select_state_left_value_%out_poll
|
|
658
|
+
jmp L_FUTURE_SELECT2_STATE_LEFT_DONE_%out_poll
|
|
659
|
+
L_FUTURE_SELECT2_STATE_POLL_RIGHT_%out_poll:
|
|
660
|
+
__future_select_state_right_%out_poll = load %select_state+FutureSelect2State_right as ptr
|
|
661
|
+
EXPAND FUTURE_POLL __future_select_state_right_poll_%out_poll, __future_select_state_right_%out_poll, %ctx_reg
|
|
662
|
+
__future_select_state_right_tag_%out_poll = load __future_select_state_right_poll_%out_poll+Poll_tag as u64
|
|
663
|
+
__future_select_state_right_ready_%out_poll = eq __future_select_state_right_tag_%out_poll, Poll_READY
|
|
664
|
+
br __future_select_state_right_ready_%out_poll -> L_FUTURE_SELECT2_STATE_RIGHT_READY_%out_poll, L_FUTURE_SELECT2_STATE_PENDING_%out_poll
|
|
665
|
+
L_FUTURE_SELECT2_STATE_RIGHT_READY_%out_poll:
|
|
666
|
+
__future_select_state_right_value_%out_poll = load __future_select_state_right_poll_%out_poll+Poll_value as u64
|
|
667
|
+
store %select_state+FutureSelect2State_winner, FutureSelect_RIGHT as u64
|
|
668
|
+
EXPAND FUTURE_EITHER_RIGHT __future_select_state_either_right_%out_poll, __future_select_state_right_value_%out_poll
|
|
669
|
+
EXPAND POLL_READY_PTR %out_poll, __future_select_state_either_right_%out_poll
|
|
670
|
+
^__future_select_state_either_right_%out_poll
|
|
671
|
+
!__future_select_state_right_value_%out_poll
|
|
672
|
+
jmp L_FUTURE_SELECT2_STATE_RIGHT_DONE_%out_poll
|
|
673
|
+
L_FUTURE_SELECT2_STATE_PENDING_%out_poll:
|
|
674
|
+
EXPAND POLL_PENDING %out_poll
|
|
675
|
+
L_FUTURE_SELECT2_STATE_RIGHT_DONE_%out_poll:
|
|
676
|
+
!__future_select_state_right_ready_%out_poll
|
|
677
|
+
!__future_select_state_right_tag_%out_poll
|
|
678
|
+
!__future_select_state_right_poll_%out_poll
|
|
679
|
+
!__future_select_state_right_%out_poll
|
|
680
|
+
L_FUTURE_SELECT2_STATE_LEFT_DONE_%out_poll:
|
|
681
|
+
!__future_select_state_left_ready_%out_poll
|
|
682
|
+
!__future_select_state_left_tag_%out_poll
|
|
683
|
+
!__future_select_state_left_poll_%out_poll
|
|
684
|
+
!__future_select_state_left_%out_poll
|
|
685
|
+
L_FUTURE_SELECT2_STATE_DONE_%out_poll:
|
|
686
|
+
!__future_select_state_has_winner_%out_poll
|
|
687
|
+
!__future_select_state_winner_%out_poll
|
|
688
|
+
[END_MACRO]
|
|
689
|
+
|
|
690
|
+
[MACRO] FUTURE_GET_DATA %out_data, %future_reg
|
|
691
|
+
%out_data = load %future_reg+Future_data as ptr
|
|
692
|
+
[END_MACRO]
|
|
693
|
+
|
|
694
|
+
[MACRO] FUTURE_GET_VTABLE %out_vtable, %future_reg
|
|
695
|
+
%out_vtable = load %future_reg+Future_vtable as ptr
|
|
696
|
+
[END_MACRO]
|
|
697
|
+
|
|
698
|
+
[MACRO] FUTURE_POLL %out_poll, %future_reg, %ctx_reg
|
|
699
|
+
__future_data_%out_poll = load %future_reg+Future_data as ptr
|
|
700
|
+
__future_vtable_%out_poll = load %future_reg+Future_vtable as ptr
|
|
701
|
+
__future_poll_fn_%out_poll = load __future_vtable_%out_poll+FuturePollSlot as ptr
|
|
702
|
+
%out_poll = alloc Poll_SIZE
|
|
703
|
+
call_indirect __future_poll_fn_%out_poll(&__future_data_%out_poll, &%ctx_reg, &%out_poll)
|
|
704
|
+
!__future_poll_fn_%out_poll
|
|
705
|
+
!__future_vtable_%out_poll
|
|
706
|
+
!__future_data_%out_poll
|
|
707
|
+
[END_MACRO]
|
|
708
|
+
|
|
709
|
+
[MACRO] FUTURE_POLL_BRANCH %out_poll, %future_reg, %ctx_reg, %ready_label, %pending_label
|
|
710
|
+
EXPAND FUTURE_POLL %out_poll, %future_reg, %ctx_reg
|
|
711
|
+
EXPAND POLL_BRANCH %out_poll, %ready_label, %pending_label
|
|
712
|
+
[END_MACRO]
|
|
713
|
+
|
|
714
|
+
[MACRO] FUTURE_JOIN2_POLL %out_poll, %left_future, %right_future, %ctx_reg
|
|
715
|
+
EXPAND FUTURE_POLL __future_join_left_%out_poll, %left_future, %ctx_reg
|
|
716
|
+
EXPAND FUTURE_POLL __future_join_right_%out_poll, %right_future, %ctx_reg
|
|
717
|
+
__future_join_left_ready_%out_poll = load __future_join_left_%out_poll+Poll_tag as u64
|
|
718
|
+
__future_join_right_ready_%out_poll = load __future_join_right_%out_poll+Poll_tag as u64
|
|
719
|
+
__future_join_left_ok_%out_poll = eq __future_join_left_ready_%out_poll, Poll_READY
|
|
720
|
+
__future_join_right_ok_%out_poll = eq __future_join_right_ready_%out_poll, Poll_READY
|
|
721
|
+
__future_join_ready_%out_poll = and __future_join_left_ok_%out_poll, __future_join_right_ok_%out_poll
|
|
722
|
+
br __future_join_ready_%out_poll -> L_FUTURE_JOIN2_READY_%out_poll, L_FUTURE_JOIN2_PENDING_%out_poll
|
|
723
|
+
L_FUTURE_JOIN2_READY_%out_poll:
|
|
724
|
+
__future_join_left_value_%out_poll = load __future_join_left_%out_poll+Poll_value as u64
|
|
725
|
+
__future_join_right_value_%out_poll = load __future_join_right_%out_poll+Poll_value as u64
|
|
726
|
+
__future_join_value_%out_poll = add __future_join_left_value_%out_poll, __future_join_right_value_%out_poll
|
|
727
|
+
EXPAND POLL_READY %out_poll, __future_join_value_%out_poll
|
|
728
|
+
!__future_join_value_%out_poll
|
|
729
|
+
!__future_join_right_value_%out_poll
|
|
730
|
+
!__future_join_left_value_%out_poll
|
|
731
|
+
jmp L_FUTURE_JOIN2_DONE_%out_poll
|
|
732
|
+
L_FUTURE_JOIN2_PENDING_%out_poll:
|
|
733
|
+
EXPAND POLL_PENDING %out_poll
|
|
734
|
+
L_FUTURE_JOIN2_DONE_%out_poll:
|
|
735
|
+
!__future_join_ready_%out_poll
|
|
736
|
+
!__future_join_right_ok_%out_poll
|
|
737
|
+
!__future_join_left_ok_%out_poll
|
|
738
|
+
!__future_join_right_ready_%out_poll
|
|
739
|
+
!__future_join_left_ready_%out_poll
|
|
740
|
+
!__future_join_right_%out_poll
|
|
741
|
+
!__future_join_left_%out_poll
|
|
742
|
+
[END_MACRO]
|
|
743
|
+
|
|
744
|
+
[MACRO] FUTURE_SELECT2_POLL %out_poll, %left_future, %right_future, %ctx_reg, %out_side
|
|
745
|
+
EXPAND FUTURE_POLL __future_select_left_%out_poll, %left_future, %ctx_reg
|
|
746
|
+
__future_select_left_tag_%out_poll = load __future_select_left_%out_poll+Poll_tag as u64
|
|
747
|
+
__future_select_left_ready_%out_poll = eq __future_select_left_tag_%out_poll, Poll_READY
|
|
748
|
+
br __future_select_left_ready_%out_poll -> L_FUTURE_SELECT2_LEFT_%out_poll, L_FUTURE_SELECT2_TRY_RIGHT_%out_poll
|
|
749
|
+
L_FUTURE_SELECT2_LEFT_%out_poll:
|
|
750
|
+
__future_select_left_value_%out_poll = load __future_select_left_%out_poll+Poll_value as u64
|
|
751
|
+
EXPAND POLL_READY %out_poll, __future_select_left_value_%out_poll
|
|
752
|
+
%out_side = add FutureSelect_LEFT, 0
|
|
753
|
+
!__future_select_left_value_%out_poll
|
|
754
|
+
jmp L_FUTURE_SELECT2_DONE_LEFT_%out_poll
|
|
755
|
+
L_FUTURE_SELECT2_TRY_RIGHT_%out_poll:
|
|
756
|
+
EXPAND FUTURE_POLL __future_select_right_%out_poll, %right_future, %ctx_reg
|
|
757
|
+
__future_select_right_tag_%out_poll = load __future_select_right_%out_poll+Poll_tag as u64
|
|
758
|
+
__future_select_right_ready_%out_poll = eq __future_select_right_tag_%out_poll, Poll_READY
|
|
759
|
+
br __future_select_right_ready_%out_poll -> L_FUTURE_SELECT2_RIGHT_%out_poll, L_FUTURE_SELECT2_PENDING_%out_poll
|
|
760
|
+
L_FUTURE_SELECT2_RIGHT_%out_poll:
|
|
761
|
+
__future_select_right_value_%out_poll = load __future_select_right_%out_poll+Poll_value as u64
|
|
762
|
+
EXPAND POLL_READY %out_poll, __future_select_right_value_%out_poll
|
|
763
|
+
%out_side = add FutureSelect_RIGHT, 0
|
|
764
|
+
!__future_select_right_value_%out_poll
|
|
765
|
+
jmp L_FUTURE_SELECT2_DONE_RIGHT_%out_poll
|
|
766
|
+
L_FUTURE_SELECT2_PENDING_%out_poll:
|
|
767
|
+
EXPAND POLL_PENDING %out_poll
|
|
768
|
+
%out_side = add FutureSelect_NONE, 0
|
|
769
|
+
L_FUTURE_SELECT2_DONE_RIGHT_%out_poll:
|
|
770
|
+
!__future_select_right_ready_%out_poll
|
|
771
|
+
!__future_select_right_tag_%out_poll
|
|
772
|
+
!__future_select_right_%out_poll
|
|
773
|
+
L_FUTURE_SELECT2_DONE_LEFT_%out_poll:
|
|
774
|
+
!__future_select_left_ready_%out_poll
|
|
775
|
+
!__future_select_left_tag_%out_poll
|
|
776
|
+
!__future_select_left_%out_poll
|
|
777
|
+
[END_MACRO]
|