@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,57 @@
|
|
|
1
|
+
// SA-facing contracts for the Zig-backed sa_std.process module.
|
|
2
|
+
// Process handles are opaque u64 resource handles and must be closed explicitly.
|
|
3
|
+
// `argv` is a borrowed pointer to an array of SaProcessArgv records.
|
|
4
|
+
@extern sa_std_process_run(&argv: ptr, argv_len: u64, &out_handle: ptr) -> i32
|
|
5
|
+
@extern sa_std_process_run_cwd(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, &out_handle: ptr) -> i32
|
|
6
|
+
@extern sa_std_process_spawn(&argv: ptr, argv_len: u64, &out_handle: ptr) -> i32
|
|
7
|
+
@extern sa_std_process_spawn_cwd(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, &out_handle: ptr) -> i32
|
|
8
|
+
@extern sa_std_process_spawn_stream(&argv: ptr, argv_len: u64, &out_process: ptr, &out_stdout: ptr, &out_stderr: ptr) -> i32
|
|
9
|
+
@extern sa_std_process_spawn_stream_cwd(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, &out_process: ptr, &out_stdout: ptr, &out_stderr: ptr) -> i32
|
|
10
|
+
@extern sa_std_process_run_command_ext(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, &out_handle: ptr) -> i32
|
|
11
|
+
@extern sa_std_process_spawn_command_ext(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, &out_handle: ptr) -> i32
|
|
12
|
+
@extern sa_std_process_spawn_stream_command_ext(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, &out_process: ptr, &out_stdout: ptr, &out_stderr: ptr) -> i32
|
|
13
|
+
@extern sa_std_process_run_command_ext_pidfd(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, create_pidfd: u32, &out_handle: ptr) -> i32
|
|
14
|
+
@extern sa_std_process_spawn_command_ext_pidfd(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, create_pidfd: u32, &out_handle: ptr) -> i32
|
|
15
|
+
@extern sa_std_process_spawn_stream_command_ext_pidfd(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, create_pidfd: u32, &out_process: ptr, &out_stdout: ptr, &out_stderr: ptr) -> i32
|
|
16
|
+
@extern sa_std_process_run_command_ext_uid_gid(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, uid: u32, has_uid: u32, gid: u32, has_gid: u32, &out_handle: ptr) -> i32
|
|
17
|
+
@extern sa_std_process_spawn_command_ext_uid_gid(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, uid: u32, has_uid: u32, gid: u32, has_gid: u32, &out_handle: ptr) -> i32
|
|
18
|
+
@extern sa_std_process_spawn_stream_command_ext_uid_gid(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, uid: u32, has_uid: u32, gid: u32, has_gid: u32, &out_process: ptr, &out_stdout: ptr, &out_stderr: ptr) -> i32
|
|
19
|
+
@extern sa_std_process_run_command_ext_groups(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, &groups: ptr, groups_len: u64, has_groups: u32, &out_handle: ptr) -> i32
|
|
20
|
+
@extern sa_std_process_spawn_command_ext_groups(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, &groups: ptr, groups_len: u64, has_groups: u32, &out_handle: ptr) -> i32
|
|
21
|
+
@extern sa_std_process_spawn_stream_command_ext_groups(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, &groups: ptr, groups_len: u64, has_groups: u32, &out_process: ptr, &out_stdout: ptr, &out_stderr: ptr) -> i32
|
|
22
|
+
@extern sa_std_process_run_command_ext_chroot(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, &chroot: ptr, chroot_len: u64, has_chroot: u32, &out_handle: ptr) -> i32
|
|
23
|
+
@extern sa_std_process_spawn_command_ext_chroot(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, &chroot: ptr, chroot_len: u64, has_chroot: u32, &out_handle: ptr) -> i32
|
|
24
|
+
@extern sa_std_process_spawn_stream_command_ext_chroot(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, &chroot: ptr, chroot_len: u64, has_chroot: u32, &out_process: ptr, &out_stdout: ptr, &out_stderr: ptr) -> i32
|
|
25
|
+
@extern sa_std_process_exec_command_ext(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, has_cwd: u32, &arg0: ptr, arg0_len: u64, has_arg0: u32, process_group: i32, has_process_group: u32, setsid: u32, uid: u32, has_uid: u32, gid: u32, has_gid: u32, &groups: ptr, groups_len: u64, has_groups: u32, &chroot: ptr, chroot_len: u64, has_chroot: u32) -> i32
|
|
26
|
+
@extern sa_std_process_id() -> u32
|
|
27
|
+
@extern sa_std_process_parent_id() -> u32
|
|
28
|
+
@extern sa_std_process_user_id() -> u32
|
|
29
|
+
@extern sa_std_process_group_id() -> u32
|
|
30
|
+
@extern sa_std_process_abort() -> void
|
|
31
|
+
@extern sa_std_process_child_id(handle: u64, &out_pid: ptr) -> i32
|
|
32
|
+
@extern sa_std_process_pidfd(handle: u64, &out_pidfd: ptr) -> i32
|
|
33
|
+
@extern sa_std_process_into_pidfd(handle: u64, &out_pidfd: ptr) -> i32
|
|
34
|
+
@extern sa_std_process_wait(handle: u64, &out_code: ptr) -> i32
|
|
35
|
+
@extern sa_std_process_wait_raw(handle: u64, &out_raw: ptr) -> i32
|
|
36
|
+
@extern sa_std_process_try_wait(handle: u64, &out_ready: ptr, &out_code: ptr) -> i32
|
|
37
|
+
@extern sa_std_process_try_wait_raw(handle: u64, &out_ready: ptr, &out_raw: ptr) -> i32
|
|
38
|
+
@extern sa_std_process_kill(handle: u64) -> i32
|
|
39
|
+
@extern sa_std_process_send_signal(handle: u64, signal: i32) -> i32
|
|
40
|
+
@extern sa_std_process_send_process_group_signal(handle: u64, signal: i32) -> i32
|
|
41
|
+
@extern sa_std_process_kill_process_group(handle: u64) -> i32
|
|
42
|
+
@extern sa_std_pidfd_kill(handle: u64) -> i32
|
|
43
|
+
@extern sa_std_pidfd_send_signal(handle: u64, signal: i32) -> i32
|
|
44
|
+
@extern sa_std_pidfd_wait(handle: u64, &out_code: ptr) -> i32
|
|
45
|
+
@extern sa_std_pidfd_wait_raw(handle: u64, &out_raw: ptr) -> i32
|
|
46
|
+
@extern sa_std_pidfd_try_wait(handle: u64, &out_ready: ptr, &out_code: ptr) -> i32
|
|
47
|
+
@extern sa_std_pidfd_try_wait_raw(handle: u64, &out_ready: ptr, &out_raw: ptr) -> i32
|
|
48
|
+
@extern sa_std_process_exit_status_code(raw: i32) -> u32
|
|
49
|
+
@extern sa_std_process_exit_status_signal(raw: i32) -> i32
|
|
50
|
+
@extern sa_std_process_exit_status_core_dumped(raw: i32) -> u8
|
|
51
|
+
@extern sa_std_process_exit_status_stopped_signal(raw: i32) -> i32
|
|
52
|
+
@extern sa_std_process_exit_status_continued(raw: i32) -> u8
|
|
53
|
+
@extern sa_std_process_read_stdout(handle: u64, &buf: ptr, cap: u64, &out_read: ptr) -> i32
|
|
54
|
+
@extern sa_std_process_read_stderr(handle: u64, &buf: ptr, cap: u64, &out_read: ptr) -> i32
|
|
55
|
+
@extern sa_std_process_exec_capture(&argv: ptr, argv_len: u64, &out_code: ptr, &out_stdout: ptr, &out_stderr: ptr) -> i32
|
|
56
|
+
@extern sa_std_process_exec_capture_cwd(&argv: ptr, argv_len: u64, &cwd: ptr, cwd_len: u64, &out_code: ptr, &out_stdout: ptr, &out_stderr: ptr) -> i32
|
|
57
|
+
@extern sa_std_process_close(handle: u64) -> i32
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#def SA_PROCESS_OK = 0
|
|
2
|
+
#def SA_PROCESS_ERR_INVALID_ARGUMENT = 1
|
|
3
|
+
#def SA_PROCESS_ERR_INVALID_HANDLE = 2
|
|
4
|
+
#def SA_PROCESS_ERR_NO_MEMORY = 5
|
|
5
|
+
#def SA_PROCESS_ERR_IO = 6
|
|
6
|
+
#def SA_PROCESS_ERR_UNSUPPORTED = 8
|
|
7
|
+
#def SA_PROCESS_ERR_UNKNOWN = 127
|
|
8
|
+
|
|
9
|
+
#def SaProcessArgv_SIZE = 16
|
|
10
|
+
#def SaProcessArgv_data = +0
|
|
11
|
+
#def SaProcessArgv_len = +8
|
|
12
|
+
|
|
13
|
+
#def ProcessExitStatus_SIZE = 8
|
|
14
|
+
#def ProcessExitStatus_code = +0
|
|
15
|
+
#def ProcessExitStatus_raw = +4
|
|
16
|
+
|
|
17
|
+
#def ProcessOutput_SIZE = 24
|
|
18
|
+
#def ProcessOutput_status = +0
|
|
19
|
+
#def ProcessOutput_stdout = +8
|
|
20
|
+
#def ProcessOutput_stderr = +16
|
|
21
|
+
|
|
22
|
+
#def ProcessStdio_SIZE = 1
|
|
23
|
+
#def ProcessStdio_ALIGN = 1
|
|
24
|
+
#def ProcessStdio_kind = +0
|
|
25
|
+
#def PROCESS_STDIO_KIND_INHERIT = 0
|
|
26
|
+
#def PROCESS_STDIO_KIND_PIPED = 1
|
|
27
|
+
#def PROCESS_STDIO_KIND_NULL = 2
|
package/sa_std/ptr.sa
ADDED
|
@@ -0,0 +1,503 @@
|
|
|
1
|
+
@import "core/mem.sa"
|
|
2
|
+
@import "ptr.sal"
|
|
3
|
+
|
|
4
|
+
[MACRO] PTR_NULL %out_ptr
|
|
5
|
+
%out_ptr = 0 as ptr
|
|
6
|
+
[END_MACRO]
|
|
7
|
+
|
|
8
|
+
[MACRO] PTR_IS_NULL %out_bool, %ptr_reg
|
|
9
|
+
__ptr_null_%out_bool = 0 as ptr
|
|
10
|
+
%out_bool = eq %ptr_reg, __ptr_null_%out_bool
|
|
11
|
+
!__ptr_null_%out_bool
|
|
12
|
+
[END_MACRO]
|
|
13
|
+
|
|
14
|
+
[MACRO] PTR_IS_NONNULL %out_bool, %ptr_reg
|
|
15
|
+
__ptr_null_%out_bool = 0 as ptr
|
|
16
|
+
%out_bool = ne %ptr_reg, __ptr_null_%out_bool
|
|
17
|
+
!__ptr_null_%out_bool
|
|
18
|
+
[END_MACRO]
|
|
19
|
+
|
|
20
|
+
[MACRO] PTR_EQ %out_bool, %lhs_ptr, %rhs_ptr
|
|
21
|
+
%out_bool = eq %lhs_ptr, %rhs_ptr
|
|
22
|
+
[END_MACRO]
|
|
23
|
+
|
|
24
|
+
[MACRO] PTR_NE %out_bool, %lhs_ptr, %rhs_ptr
|
|
25
|
+
%out_bool = ne %lhs_ptr, %rhs_ptr
|
|
26
|
+
[END_MACRO]
|
|
27
|
+
|
|
28
|
+
[MACRO] PTR_ADDR %out_addr, %ptr_reg
|
|
29
|
+
%out_addr = bitcast %ptr_reg as u64
|
|
30
|
+
[END_MACRO]
|
|
31
|
+
|
|
32
|
+
[MACRO] PTR_EXPOSE_ADDR %out_addr, %ptr_reg
|
|
33
|
+
EXPAND PTR_ADDR %out_addr, %ptr_reg
|
|
34
|
+
[END_MACRO]
|
|
35
|
+
|
|
36
|
+
[MACRO] PTR_EXPOSE_PROVENANCE %out_addr, %ptr_reg
|
|
37
|
+
EXPAND PTR_ADDR %out_addr, %ptr_reg
|
|
38
|
+
[END_MACRO]
|
|
39
|
+
|
|
40
|
+
[MACRO] PTR_CAST %out_ptr, %ptr_reg
|
|
41
|
+
%out_ptr = ptr_add %ptr_reg, 0
|
|
42
|
+
[END_MACRO]
|
|
43
|
+
|
|
44
|
+
[MACRO] PTR_CAST_CONST %out_ptr, %ptr_reg
|
|
45
|
+
%out_ptr = ptr_add %ptr_reg, 0
|
|
46
|
+
[END_MACRO]
|
|
47
|
+
|
|
48
|
+
[MACRO] PTR_CAST_MUT %out_ptr, %ptr_reg
|
|
49
|
+
%out_ptr = ptr_add %ptr_reg, 0
|
|
50
|
+
[END_MACRO]
|
|
51
|
+
|
|
52
|
+
[MACRO] PTR_OFFSET_BYTES %out_ptr, %ptr_reg, %byte_offset
|
|
53
|
+
%out_ptr = ptr_add %ptr_reg, %byte_offset
|
|
54
|
+
[END_MACRO]
|
|
55
|
+
|
|
56
|
+
[MACRO] PTR_BYTE_ADD %out_ptr, %ptr_reg, %byte_offset
|
|
57
|
+
%out_ptr = ptr_add %ptr_reg, %byte_offset
|
|
58
|
+
[END_MACRO]
|
|
59
|
+
|
|
60
|
+
[MACRO] PTR_BYTE_SUB %out_ptr, %ptr_reg, %byte_offset
|
|
61
|
+
__ptr_sub_offset_%out_ptr = sub 0, %byte_offset
|
|
62
|
+
%out_ptr = ptr_add %ptr_reg, __ptr_sub_offset_%out_ptr
|
|
63
|
+
!__ptr_sub_offset_%out_ptr
|
|
64
|
+
[END_MACRO]
|
|
65
|
+
|
|
66
|
+
[MACRO] PTR_WRAPPING_BYTE_ADD %out_ptr, %ptr_reg, %byte_offset
|
|
67
|
+
EXPAND PTR_BYTE_ADD %out_ptr, %ptr_reg, %byte_offset
|
|
68
|
+
[END_MACRO]
|
|
69
|
+
|
|
70
|
+
[MACRO] PTR_WRAPPING_BYTE_SUB %out_ptr, %ptr_reg, %byte_offset
|
|
71
|
+
EXPAND PTR_BYTE_SUB %out_ptr, %ptr_reg, %byte_offset
|
|
72
|
+
[END_MACRO]
|
|
73
|
+
|
|
74
|
+
[MACRO] PTR_OFFSET_FROM_BYTES %out_offset, %ptr_reg, %base_ptr
|
|
75
|
+
__ptr_offset_addr_%out_offset = bitcast %ptr_reg as u64
|
|
76
|
+
__ptr_offset_base_%out_offset = bitcast %base_ptr as u64
|
|
77
|
+
%out_offset = sub __ptr_offset_addr_%out_offset, __ptr_offset_base_%out_offset
|
|
78
|
+
!__ptr_offset_base_%out_offset
|
|
79
|
+
!__ptr_offset_addr_%out_offset
|
|
80
|
+
[END_MACRO]
|
|
81
|
+
|
|
82
|
+
[MACRO] PTR_OFFSET_FROM_U64 %out_offset, %ptr_reg, %base_ptr
|
|
83
|
+
EXPAND PTR_OFFSET_FROM_BYTES __ptr_offset_bytes_%out_offset, %ptr_reg, %base_ptr
|
|
84
|
+
%out_offset = udiv __ptr_offset_bytes_%out_offset, 8
|
|
85
|
+
!__ptr_offset_bytes_%out_offset
|
|
86
|
+
[END_MACRO]
|
|
87
|
+
|
|
88
|
+
// Rust method-name alias over PTR_OFFSET_FROM_U64.
|
|
89
|
+
[MACRO] PTR_OFFSET_FROM %out_offset, %ptr_reg, %base_ptr
|
|
90
|
+
EXPAND PTR_OFFSET_FROM_U64 %out_offset, %ptr_reg, %base_ptr
|
|
91
|
+
[END_MACRO]
|
|
92
|
+
|
|
93
|
+
[MACRO] PTR_BYTE_OFFSET_FROM_UNSIGNED %out_offset, %ptr_reg, %base_ptr
|
|
94
|
+
EXPAND PTR_OFFSET_FROM_BYTES %out_offset, %ptr_reg, %base_ptr
|
|
95
|
+
[END_MACRO]
|
|
96
|
+
|
|
97
|
+
[MACRO] PTR_OFFSET_FROM_UNSIGNED_U64 %out_offset, %ptr_reg, %base_ptr
|
|
98
|
+
EXPAND PTR_OFFSET_FROM_U64 %out_offset, %ptr_reg, %base_ptr
|
|
99
|
+
[END_MACRO]
|
|
100
|
+
|
|
101
|
+
// Rust method-name alias over PTR_OFFSET_FROM_UNSIGNED_U64.
|
|
102
|
+
[MACRO] PTR_OFFSET_FROM_UNSIGNED %out_offset, %ptr_reg, %base_ptr
|
|
103
|
+
EXPAND PTR_OFFSET_FROM_UNSIGNED_U64 %out_offset, %ptr_reg, %base_ptr
|
|
104
|
+
[END_MACRO]
|
|
105
|
+
|
|
106
|
+
[MACRO] PTR_OFFSET_U64 %out_ptr, %ptr_reg, %index
|
|
107
|
+
__ptr_u64_off_%out_ptr = mul %index, 8
|
|
108
|
+
%out_ptr = ptr_add %ptr_reg, __ptr_u64_off_%out_ptr
|
|
109
|
+
!__ptr_u64_off_%out_ptr
|
|
110
|
+
[END_MACRO]
|
|
111
|
+
|
|
112
|
+
// Rust method-name alias over PTR_OFFSET_U64.
|
|
113
|
+
[MACRO] PTR_OFFSET %out_ptr, %ptr_reg, %index
|
|
114
|
+
EXPAND PTR_OFFSET_U64 %out_ptr, %ptr_reg, %index
|
|
115
|
+
[END_MACRO]
|
|
116
|
+
|
|
117
|
+
[MACRO] PTR_ADD_U64 %out_ptr, %ptr_reg, %index
|
|
118
|
+
EXPAND PTR_OFFSET_U64 %out_ptr, %ptr_reg, %index
|
|
119
|
+
[END_MACRO]
|
|
120
|
+
|
|
121
|
+
// Rust method-name alias over PTR_ADD_U64.
|
|
122
|
+
[MACRO] PTR_ADD %out_ptr, %ptr_reg, %index
|
|
123
|
+
EXPAND PTR_ADD_U64 %out_ptr, %ptr_reg, %index
|
|
124
|
+
[END_MACRO]
|
|
125
|
+
|
|
126
|
+
[MACRO] PTR_SUB_U64 %out_ptr, %ptr_reg, %index
|
|
127
|
+
__ptr_u64_sub_off_%out_ptr = mul %index, 8
|
|
128
|
+
__ptr_u64_sub_neg_%out_ptr = sub 0, __ptr_u64_sub_off_%out_ptr
|
|
129
|
+
%out_ptr = ptr_add %ptr_reg, __ptr_u64_sub_neg_%out_ptr
|
|
130
|
+
!__ptr_u64_sub_neg_%out_ptr
|
|
131
|
+
!__ptr_u64_sub_off_%out_ptr
|
|
132
|
+
[END_MACRO]
|
|
133
|
+
|
|
134
|
+
// Rust method-name alias over PTR_SUB_U64.
|
|
135
|
+
[MACRO] PTR_SUB %out_ptr, %ptr_reg, %index
|
|
136
|
+
EXPAND PTR_SUB_U64 %out_ptr, %ptr_reg, %index
|
|
137
|
+
[END_MACRO]
|
|
138
|
+
|
|
139
|
+
[MACRO] PTR_WRAPPING_ADD_U64 %out_ptr, %ptr_reg, %index
|
|
140
|
+
EXPAND PTR_ADD_U64 %out_ptr, %ptr_reg, %index
|
|
141
|
+
[END_MACRO]
|
|
142
|
+
|
|
143
|
+
// Rust method-name alias over PTR_WRAPPING_ADD_U64.
|
|
144
|
+
[MACRO] PTR_WRAPPING_ADD %out_ptr, %ptr_reg, %index
|
|
145
|
+
EXPAND PTR_WRAPPING_ADD_U64 %out_ptr, %ptr_reg, %index
|
|
146
|
+
[END_MACRO]
|
|
147
|
+
|
|
148
|
+
[MACRO] PTR_WRAPPING_SUB_U64 %out_ptr, %ptr_reg, %index
|
|
149
|
+
EXPAND PTR_SUB_U64 %out_ptr, %ptr_reg, %index
|
|
150
|
+
[END_MACRO]
|
|
151
|
+
|
|
152
|
+
// Rust method-name alias over PTR_WRAPPING_SUB_U64.
|
|
153
|
+
[MACRO] PTR_WRAPPING_SUB %out_ptr, %ptr_reg, %index
|
|
154
|
+
EXPAND PTR_WRAPPING_SUB_U64 %out_ptr, %ptr_reg, %index
|
|
155
|
+
[END_MACRO]
|
|
156
|
+
|
|
157
|
+
[MACRO] PTR_IS_ALIGNED_TO %out_bool, %ptr_reg, %align
|
|
158
|
+
__ptr_addr_%out_bool = bitcast %ptr_reg as u64
|
|
159
|
+
__ptr_rem_%out_bool = rem __ptr_addr_%out_bool, %align
|
|
160
|
+
%out_bool = eq __ptr_rem_%out_bool, 0
|
|
161
|
+
!__ptr_rem_%out_bool
|
|
162
|
+
!__ptr_addr_%out_bool
|
|
163
|
+
[END_MACRO]
|
|
164
|
+
|
|
165
|
+
[MACRO] PTR_GUARANTEED_EQ %out_ok, %out_bool, %lhs_ptr, %rhs_ptr
|
|
166
|
+
%out_bool = eq %lhs_ptr, %rhs_ptr
|
|
167
|
+
%out_ok = add 0, 1
|
|
168
|
+
[END_MACRO]
|
|
169
|
+
|
|
170
|
+
[MACRO] PTR_GUARANTEED_NE %out_ok, %out_bool, %lhs_ptr, %rhs_ptr
|
|
171
|
+
%out_bool = ne %lhs_ptr, %rhs_ptr
|
|
172
|
+
%out_ok = add 0, 1
|
|
173
|
+
[END_MACRO]
|
|
174
|
+
|
|
175
|
+
[MACRO] PTR_READ_U64 %out_value, %ptr_reg
|
|
176
|
+
%out_value = load %ptr_reg+0 as u64
|
|
177
|
+
[END_MACRO]
|
|
178
|
+
|
|
179
|
+
// Rust method-name alias over PTR_READ_U64.
|
|
180
|
+
[MACRO] PTR_READ %out_value, %ptr_reg
|
|
181
|
+
EXPAND PTR_READ_U64 %out_value, %ptr_reg
|
|
182
|
+
[END_MACRO]
|
|
183
|
+
|
|
184
|
+
[MACRO] PTR_READ_UNALIGNED_U64 %out_value, %ptr_reg
|
|
185
|
+
%out_value = load %ptr_reg+0 as u64
|
|
186
|
+
[END_MACRO]
|
|
187
|
+
|
|
188
|
+
// Rust method-name alias over PTR_READ_UNALIGNED_U64.
|
|
189
|
+
[MACRO] PTR_READ_UNALIGNED %out_value, %ptr_reg
|
|
190
|
+
EXPAND PTR_READ_UNALIGNED_U64 %out_value, %ptr_reg
|
|
191
|
+
[END_MACRO]
|
|
192
|
+
|
|
193
|
+
[MACRO] PTR_READ_VOLATILE_U64 %out_value, %ptr_reg
|
|
194
|
+
%out_value = load %ptr_reg+0 as u64
|
|
195
|
+
[END_MACRO]
|
|
196
|
+
|
|
197
|
+
// Rust method-name alias over PTR_READ_VOLATILE_U64.
|
|
198
|
+
[MACRO] PTR_READ_VOLATILE %out_value, %ptr_reg
|
|
199
|
+
EXPAND PTR_READ_VOLATILE_U64 %out_value, %ptr_reg
|
|
200
|
+
[END_MACRO]
|
|
201
|
+
|
|
202
|
+
[MACRO] PTR_READ_VOLATILE_I32 %out_value, %ptr_reg
|
|
203
|
+
%out_value = load %ptr_reg+0 as i32
|
|
204
|
+
[END_MACRO]
|
|
205
|
+
|
|
206
|
+
[MACRO] PTR_READ_U8 %out_value, %ptr_reg
|
|
207
|
+
%out_value = load %ptr_reg+0 as u8
|
|
208
|
+
[END_MACRO]
|
|
209
|
+
|
|
210
|
+
[MACRO] PTR_READ_UNALIGNED_U8 %out_value, %ptr_reg
|
|
211
|
+
%out_value = load %ptr_reg+0 as u8
|
|
212
|
+
[END_MACRO]
|
|
213
|
+
|
|
214
|
+
[MACRO] PTR_READ_VOLATILE_U8 %out_value, %ptr_reg
|
|
215
|
+
%out_value = load %ptr_reg+0 as u8
|
|
216
|
+
[END_MACRO]
|
|
217
|
+
|
|
218
|
+
[MACRO] PTR_WRITE_U64 %ptr_reg, %value
|
|
219
|
+
store %ptr_reg+0, %value as u64
|
|
220
|
+
[END_MACRO]
|
|
221
|
+
|
|
222
|
+
// Rust method-name alias over PTR_WRITE_U64.
|
|
223
|
+
[MACRO] PTR_WRITE %ptr_reg, %value
|
|
224
|
+
EXPAND PTR_WRITE_U64 %ptr_reg, %value
|
|
225
|
+
[END_MACRO]
|
|
226
|
+
|
|
227
|
+
[MACRO] PTR_WRITE_UNALIGNED_U64 %ptr_reg, %value
|
|
228
|
+
store %ptr_reg+0, %value as u64
|
|
229
|
+
[END_MACRO]
|
|
230
|
+
|
|
231
|
+
// Rust method-name alias over PTR_WRITE_UNALIGNED_U64.
|
|
232
|
+
[MACRO] PTR_WRITE_UNALIGNED %ptr_reg, %value
|
|
233
|
+
EXPAND PTR_WRITE_UNALIGNED_U64 %ptr_reg, %value
|
|
234
|
+
[END_MACRO]
|
|
235
|
+
|
|
236
|
+
[MACRO] PTR_WRITE_VOLATILE_U64 %ptr_reg, %value
|
|
237
|
+
store %ptr_reg+0, %value as u64
|
|
238
|
+
[END_MACRO]
|
|
239
|
+
|
|
240
|
+
// Rust method-name alias over PTR_WRITE_VOLATILE_U64.
|
|
241
|
+
[MACRO] PTR_WRITE_VOLATILE %ptr_reg, %value
|
|
242
|
+
EXPAND PTR_WRITE_VOLATILE_U64 %ptr_reg, %value
|
|
243
|
+
[END_MACRO]
|
|
244
|
+
|
|
245
|
+
[MACRO] PTR_WRITE_U8 %ptr_reg, %value
|
|
246
|
+
store %ptr_reg+0, %value as u8
|
|
247
|
+
[END_MACRO]
|
|
248
|
+
|
|
249
|
+
[MACRO] PTR_WRITE_UNALIGNED_U8 %ptr_reg, %value
|
|
250
|
+
store %ptr_reg+0, %value as u8
|
|
251
|
+
[END_MACRO]
|
|
252
|
+
|
|
253
|
+
[MACRO] PTR_WRITE_VOLATILE_U8 %ptr_reg, %value
|
|
254
|
+
store %ptr_reg+0, %value as u8
|
|
255
|
+
[END_MACRO]
|
|
256
|
+
|
|
257
|
+
[MACRO] PTR_SWAP_U64 %lhs_ptr, %rhs_ptr
|
|
258
|
+
__ptr_swap_lhs_%lhs_ptr = load %lhs_ptr+0 as u64
|
|
259
|
+
__ptr_swap_rhs_%lhs_ptr = load %rhs_ptr+0 as u64
|
|
260
|
+
store %lhs_ptr+0, __ptr_swap_rhs_%lhs_ptr as u64
|
|
261
|
+
store %rhs_ptr+0, __ptr_swap_lhs_%lhs_ptr as u64
|
|
262
|
+
!__ptr_swap_rhs_%lhs_ptr
|
|
263
|
+
!__ptr_swap_lhs_%lhs_ptr
|
|
264
|
+
[END_MACRO]
|
|
265
|
+
|
|
266
|
+
// Rust method-name alias over PTR_SWAP_U64.
|
|
267
|
+
[MACRO] PTR_SWAP %lhs_ptr, %rhs_ptr
|
|
268
|
+
EXPAND PTR_SWAP_U64 %lhs_ptr, %rhs_ptr
|
|
269
|
+
[END_MACRO]
|
|
270
|
+
|
|
271
|
+
[MACRO] PTR_SWAP_NONOVERLAPPING_U64 %lhs_ptr, %rhs_ptr
|
|
272
|
+
EXPAND PTR_SWAP_U64 %lhs_ptr, %rhs_ptr
|
|
273
|
+
[END_MACRO]
|
|
274
|
+
|
|
275
|
+
// Rust method-name alias over PTR_SWAP_NONOVERLAPPING_U64.
|
|
276
|
+
[MACRO] PTR_SWAP_NONOVERLAPPING %lhs_ptr, %rhs_ptr
|
|
277
|
+
EXPAND PTR_SWAP_NONOVERLAPPING_U64 %lhs_ptr, %rhs_ptr
|
|
278
|
+
[END_MACRO]
|
|
279
|
+
|
|
280
|
+
[MACRO] PTR_REPLACE_U64 %out_old, %ptr_reg, %new_value
|
|
281
|
+
%out_old = load %ptr_reg+0 as u64
|
|
282
|
+
store %ptr_reg+0, %new_value as u64
|
|
283
|
+
[END_MACRO]
|
|
284
|
+
|
|
285
|
+
// Rust method-name alias over PTR_REPLACE_U64.
|
|
286
|
+
[MACRO] PTR_REPLACE %out_old, %ptr_reg, %new_value
|
|
287
|
+
EXPAND PTR_REPLACE_U64 %out_old, %ptr_reg, %new_value
|
|
288
|
+
[END_MACRO]
|
|
289
|
+
|
|
290
|
+
[MACRO] PTR_TAKE_U64 %out_old, %ptr_reg
|
|
291
|
+
%out_old = load %ptr_reg+0 as u64
|
|
292
|
+
store %ptr_reg+0, 0 as u64
|
|
293
|
+
[END_MACRO]
|
|
294
|
+
|
|
295
|
+
// Rust method-name alias over PTR_TAKE_U64.
|
|
296
|
+
[MACRO] PTR_TAKE %out_old, %ptr_reg
|
|
297
|
+
EXPAND PTR_TAKE_U64 %out_old, %ptr_reg
|
|
298
|
+
[END_MACRO]
|
|
299
|
+
|
|
300
|
+
[MACRO] PTR_COPY_BYTES %dst_ptr, %src_ptr, %byte_count
|
|
301
|
+
call @sa_mem_copy(&%dst_ptr, &%src_ptr, %byte_count)
|
|
302
|
+
[END_MACRO]
|
|
303
|
+
|
|
304
|
+
[MACRO] PTR_COPY_NONOVERLAPPING_BYTES %dst_ptr, %src_ptr, %byte_count
|
|
305
|
+
call @sa_mem_copy(&%dst_ptr, &%src_ptr, %byte_count)
|
|
306
|
+
[END_MACRO]
|
|
307
|
+
|
|
308
|
+
[MACRO] PTR_WRITE_BYTES %dst_ptr, %byte_value, %byte_count
|
|
309
|
+
call @sa_mem_set(&%dst_ptr, %byte_value, %byte_count)
|
|
310
|
+
[END_MACRO]
|
|
311
|
+
|
|
312
|
+
[MACRO] PTR_COPY_U64S %dst_ptr, %src_ptr, %count
|
|
313
|
+
__ptr_copy_bytes_%dst_ptr = mul %count, 8
|
|
314
|
+
call @sa_mem_copy(&%dst_ptr, &%src_ptr, __ptr_copy_bytes_%dst_ptr)
|
|
315
|
+
!__ptr_copy_bytes_%dst_ptr
|
|
316
|
+
[END_MACRO]
|
|
317
|
+
|
|
318
|
+
[MACRO] PTR_COPY_NONOVERLAPPING_U64S %dst_ptr, %src_ptr, %count
|
|
319
|
+
__ptr_copy_nonoverlap_bytes_%dst_ptr = mul %count, 8
|
|
320
|
+
call @sa_mem_copy(&%dst_ptr, &%src_ptr, __ptr_copy_nonoverlap_bytes_%dst_ptr)
|
|
321
|
+
!__ptr_copy_nonoverlap_bytes_%dst_ptr
|
|
322
|
+
[END_MACRO]
|
|
323
|
+
|
|
324
|
+
[MACRO] NONNULL_NEW %out_ok, %nonnull_ptr, %ptr_reg
|
|
325
|
+
EXPAND PTR_IS_NONNULL %out_ok, %ptr_reg
|
|
326
|
+
store %nonnull_ptr+NonNull_ptr, %ptr_reg as ptr
|
|
327
|
+
[END_MACRO]
|
|
328
|
+
|
|
329
|
+
[MACRO] NONNULL_NEW_UNCHECKED %nonnull_ptr, %ptr_reg
|
|
330
|
+
store %nonnull_ptr+NonNull_ptr, %ptr_reg as ptr
|
|
331
|
+
[END_MACRO]
|
|
332
|
+
|
|
333
|
+
[MACRO] NONNULL_AS_PTR %out_ptr, %nonnull_ptr
|
|
334
|
+
%out_ptr = load %nonnull_ptr+NonNull_ptr as ptr
|
|
335
|
+
[END_MACRO]
|
|
336
|
+
|
|
337
|
+
[MACRO] NONNULL_AS_REF %out_ptr, %nonnull_ptr
|
|
338
|
+
%out_ptr = load %nonnull_ptr+NonNull_ptr as ptr
|
|
339
|
+
[END_MACRO]
|
|
340
|
+
|
|
341
|
+
[MACRO] NONNULL_AS_MUT %out_ptr, %nonnull_ptr
|
|
342
|
+
%out_ptr = load %nonnull_ptr+NonNull_ptr as ptr
|
|
343
|
+
[END_MACRO]
|
|
344
|
+
|
|
345
|
+
[MACRO] NONNULL_ADDR %out_addr, %nonnull_ptr
|
|
346
|
+
__nonnull_addr_ptr_%out_addr = load %nonnull_ptr+NonNull_ptr as ptr
|
|
347
|
+
EXPAND PTR_ADDR %out_addr, __nonnull_addr_ptr_%out_addr
|
|
348
|
+
!__nonnull_addr_ptr_%out_addr
|
|
349
|
+
[END_MACRO]
|
|
350
|
+
|
|
351
|
+
[MACRO] NONNULL_EXPOSE_PROVENANCE %out_addr, %nonnull_ptr
|
|
352
|
+
EXPAND NONNULL_ADDR %out_addr, %nonnull_ptr
|
|
353
|
+
[END_MACRO]
|
|
354
|
+
|
|
355
|
+
[MACRO] NONNULL_BYTE_ADD %out_nonnull, %nonnull_ptr, %byte_offset
|
|
356
|
+
__nonnull_add_ptr_%out_nonnull = load %nonnull_ptr+NonNull_ptr as ptr
|
|
357
|
+
__nonnull_add_next_%out_nonnull = ptr_add __nonnull_add_ptr_%out_nonnull, %byte_offset
|
|
358
|
+
store %out_nonnull+NonNull_ptr, __nonnull_add_next_%out_nonnull as ptr
|
|
359
|
+
!__nonnull_add_next_%out_nonnull
|
|
360
|
+
!__nonnull_add_ptr_%out_nonnull
|
|
361
|
+
[END_MACRO]
|
|
362
|
+
|
|
363
|
+
[MACRO] NONNULL_BYTE_SUB %out_nonnull, %nonnull_ptr, %byte_offset
|
|
364
|
+
__nonnull_sub_ptr_%out_nonnull = load %nonnull_ptr+NonNull_ptr as ptr
|
|
365
|
+
__nonnull_sub_offset_%out_nonnull = sub 0, %byte_offset
|
|
366
|
+
__nonnull_sub_next_%out_nonnull = ptr_add __nonnull_sub_ptr_%out_nonnull, __nonnull_sub_offset_%out_nonnull
|
|
367
|
+
store %out_nonnull+NonNull_ptr, __nonnull_sub_next_%out_nonnull as ptr
|
|
368
|
+
!__nonnull_sub_next_%out_nonnull
|
|
369
|
+
!__nonnull_sub_offset_%out_nonnull
|
|
370
|
+
!__nonnull_sub_ptr_%out_nonnull
|
|
371
|
+
[END_MACRO]
|
|
372
|
+
|
|
373
|
+
[MACRO] NONNULL_WRAPPING_BYTE_ADD %out_nonnull, %nonnull_ptr, %byte_offset
|
|
374
|
+
EXPAND NONNULL_BYTE_ADD %out_nonnull, %nonnull_ptr, %byte_offset
|
|
375
|
+
[END_MACRO]
|
|
376
|
+
|
|
377
|
+
[MACRO] NONNULL_WRAPPING_BYTE_SUB %out_nonnull, %nonnull_ptr, %byte_offset
|
|
378
|
+
EXPAND NONNULL_BYTE_SUB %out_nonnull, %nonnull_ptr, %byte_offset
|
|
379
|
+
[END_MACRO]
|
|
380
|
+
|
|
381
|
+
[MACRO] NONNULL_ADD_U64 %out_nonnull, %nonnull_ptr, %index
|
|
382
|
+
__nonnull_add_u64_bytes_%out_nonnull = mul %index, 8
|
|
383
|
+
EXPAND NONNULL_BYTE_ADD %out_nonnull, %nonnull_ptr, __nonnull_add_u64_bytes_%out_nonnull
|
|
384
|
+
!__nonnull_add_u64_bytes_%out_nonnull
|
|
385
|
+
[END_MACRO]
|
|
386
|
+
|
|
387
|
+
// Rust method-name alias over NONNULL_ADD_U64.
|
|
388
|
+
[MACRO] NONNULL_ADD %out_nonnull, %nonnull_ptr, %index
|
|
389
|
+
EXPAND NONNULL_ADD_U64 %out_nonnull, %nonnull_ptr, %index
|
|
390
|
+
[END_MACRO]
|
|
391
|
+
|
|
392
|
+
[MACRO] NONNULL_SUB_U64 %out_nonnull, %nonnull_ptr, %index
|
|
393
|
+
__nonnull_sub_u64_bytes_%out_nonnull = mul %index, 8
|
|
394
|
+
EXPAND NONNULL_BYTE_SUB %out_nonnull, %nonnull_ptr, __nonnull_sub_u64_bytes_%out_nonnull
|
|
395
|
+
!__nonnull_sub_u64_bytes_%out_nonnull
|
|
396
|
+
[END_MACRO]
|
|
397
|
+
|
|
398
|
+
// Rust method-name alias over NONNULL_SUB_U64.
|
|
399
|
+
[MACRO] NONNULL_SUB %out_nonnull, %nonnull_ptr, %index
|
|
400
|
+
EXPAND NONNULL_SUB_U64 %out_nonnull, %nonnull_ptr, %index
|
|
401
|
+
[END_MACRO]
|
|
402
|
+
|
|
403
|
+
[MACRO] NONNULL_WRAPPING_ADD_U64 %out_nonnull, %nonnull_ptr, %index
|
|
404
|
+
EXPAND NONNULL_ADD_U64 %out_nonnull, %nonnull_ptr, %index
|
|
405
|
+
[END_MACRO]
|
|
406
|
+
|
|
407
|
+
// Rust method-name alias over NONNULL_WRAPPING_ADD_U64.
|
|
408
|
+
[MACRO] NONNULL_WRAPPING_ADD %out_nonnull, %nonnull_ptr, %index
|
|
409
|
+
EXPAND NONNULL_WRAPPING_ADD_U64 %out_nonnull, %nonnull_ptr, %index
|
|
410
|
+
[END_MACRO]
|
|
411
|
+
|
|
412
|
+
[MACRO] NONNULL_WRAPPING_SUB_U64 %out_nonnull, %nonnull_ptr, %index
|
|
413
|
+
EXPAND NONNULL_SUB_U64 %out_nonnull, %nonnull_ptr, %index
|
|
414
|
+
[END_MACRO]
|
|
415
|
+
|
|
416
|
+
// Rust method-name alias over NONNULL_WRAPPING_SUB_U64.
|
|
417
|
+
[MACRO] NONNULL_WRAPPING_SUB %out_nonnull, %nonnull_ptr, %index
|
|
418
|
+
EXPAND NONNULL_WRAPPING_SUB_U64 %out_nonnull, %nonnull_ptr, %index
|
|
419
|
+
[END_MACRO]
|
|
420
|
+
|
|
421
|
+
[MACRO] NONNULL_OFFSET_FROM_BYTES %out_offset, %nonnull_ptr, %base_nonnull
|
|
422
|
+
__nonnull_offset_ptr_%out_offset = load %nonnull_ptr+NonNull_ptr as ptr
|
|
423
|
+
__nonnull_offset_base_%out_offset = load %base_nonnull+NonNull_ptr as ptr
|
|
424
|
+
EXPAND PTR_OFFSET_FROM_BYTES %out_offset, __nonnull_offset_ptr_%out_offset, __nonnull_offset_base_%out_offset
|
|
425
|
+
!__nonnull_offset_base_%out_offset
|
|
426
|
+
!__nonnull_offset_ptr_%out_offset
|
|
427
|
+
[END_MACRO]
|
|
428
|
+
|
|
429
|
+
[MACRO] NONNULL_OFFSET_FROM_U64 %out_offset, %nonnull_ptr, %base_nonnull
|
|
430
|
+
__nonnull_offset_u64_ptr_%out_offset = load %nonnull_ptr+NonNull_ptr as ptr
|
|
431
|
+
__nonnull_offset_u64_base_%out_offset = load %base_nonnull+NonNull_ptr as ptr
|
|
432
|
+
EXPAND PTR_OFFSET_FROM_U64 %out_offset, __nonnull_offset_u64_ptr_%out_offset, __nonnull_offset_u64_base_%out_offset
|
|
433
|
+
!__nonnull_offset_u64_base_%out_offset
|
|
434
|
+
!__nonnull_offset_u64_ptr_%out_offset
|
|
435
|
+
[END_MACRO]
|
|
436
|
+
|
|
437
|
+
// Rust method-name alias over NONNULL_OFFSET_FROM_U64.
|
|
438
|
+
[MACRO] NONNULL_OFFSET_FROM %out_offset, %nonnull_ptr, %base_nonnull
|
|
439
|
+
EXPAND NONNULL_OFFSET_FROM_U64 %out_offset, %nonnull_ptr, %base_nonnull
|
|
440
|
+
[END_MACRO]
|
|
441
|
+
|
|
442
|
+
[MACRO] NONNULL_BYTE_OFFSET_FROM_UNSIGNED %out_offset, %nonnull_ptr, %base_nonnull
|
|
443
|
+
EXPAND NONNULL_OFFSET_FROM_BYTES %out_offset, %nonnull_ptr, %base_nonnull
|
|
444
|
+
[END_MACRO]
|
|
445
|
+
|
|
446
|
+
[MACRO] NONNULL_OFFSET_FROM_UNSIGNED_U64 %out_offset, %nonnull_ptr, %base_nonnull
|
|
447
|
+
EXPAND NONNULL_OFFSET_FROM_U64 %out_offset, %nonnull_ptr, %base_nonnull
|
|
448
|
+
[END_MACRO]
|
|
449
|
+
|
|
450
|
+
// Rust method-name alias over NONNULL_OFFSET_FROM_UNSIGNED_U64.
|
|
451
|
+
[MACRO] NONNULL_OFFSET_FROM_UNSIGNED %out_offset, %nonnull_ptr, %base_nonnull
|
|
452
|
+
EXPAND NONNULL_OFFSET_FROM_UNSIGNED_U64 %out_offset, %nonnull_ptr, %base_nonnull
|
|
453
|
+
[END_MACRO]
|
|
454
|
+
|
|
455
|
+
[MACRO] NONNULL_IS_NONNULL %out_bool, %nonnull_ptr
|
|
456
|
+
__nonnull_ptr_%out_bool = load %nonnull_ptr+NonNull_ptr as ptr
|
|
457
|
+
EXPAND PTR_IS_NONNULL %out_bool, __nonnull_ptr_%out_bool
|
|
458
|
+
!__nonnull_ptr_%out_bool
|
|
459
|
+
[END_MACRO]
|
|
460
|
+
|
|
461
|
+
[MACRO] NONNULL_IS_NULL %out_bool, %nonnull_ptr
|
|
462
|
+
__nonnull_ptr_%out_bool = load %nonnull_ptr+NonNull_ptr as ptr
|
|
463
|
+
EXPAND PTR_IS_NULL %out_bool, __nonnull_ptr_%out_bool
|
|
464
|
+
!__nonnull_ptr_%out_bool
|
|
465
|
+
[END_MACRO]
|
|
466
|
+
|
|
467
|
+
[MACRO] NONNULL_IS_ALIGNED_TO %out_bool, %nonnull_ptr, %align
|
|
468
|
+
__nonnull_align_ptr_%out_bool = load %nonnull_ptr+NonNull_ptr as ptr
|
|
469
|
+
EXPAND PTR_IS_ALIGNED_TO %out_bool, __nonnull_align_ptr_%out_bool, %align
|
|
470
|
+
!__nonnull_align_ptr_%out_bool
|
|
471
|
+
[END_MACRO]
|
|
472
|
+
|
|
473
|
+
[MACRO] NONNULL_EQ %out_bool, %lhs_nonnull, %rhs_nonnull
|
|
474
|
+
__nonnull_lhs_%out_bool = load %lhs_nonnull+NonNull_ptr as ptr
|
|
475
|
+
__nonnull_rhs_%out_bool = load %rhs_nonnull+NonNull_ptr as ptr
|
|
476
|
+
%out_bool = eq __nonnull_lhs_%out_bool, __nonnull_rhs_%out_bool
|
|
477
|
+
!__nonnull_rhs_%out_bool
|
|
478
|
+
!__nonnull_lhs_%out_bool
|
|
479
|
+
[END_MACRO]
|
|
480
|
+
|
|
481
|
+
[MACRO] NONNULL_NE %out_bool, %lhs_nonnull, %rhs_nonnull
|
|
482
|
+
__nonnull_lhs_%out_bool = load %lhs_nonnull+NonNull_ptr as ptr
|
|
483
|
+
__nonnull_rhs_%out_bool = load %rhs_nonnull+NonNull_ptr as ptr
|
|
484
|
+
%out_bool = ne __nonnull_lhs_%out_bool, __nonnull_rhs_%out_bool
|
|
485
|
+
!__nonnull_rhs_%out_bool
|
|
486
|
+
!__nonnull_lhs_%out_bool
|
|
487
|
+
[END_MACRO]
|
|
488
|
+
|
|
489
|
+
[MACRO] NONNULL_GUARANTEED_EQ %out_ok, %out_bool, %lhs_nonnull, %rhs_nonnull
|
|
490
|
+
EXPAND NONNULL_EQ %out_bool, %lhs_nonnull, %rhs_nonnull
|
|
491
|
+
%out_ok = add 0, 1
|
|
492
|
+
[END_MACRO]
|
|
493
|
+
|
|
494
|
+
[MACRO] NONNULL_GUARANTEED_NE %out_ok, %out_bool, %lhs_nonnull, %rhs_nonnull
|
|
495
|
+
EXPAND NONNULL_NE %out_bool, %lhs_nonnull, %rhs_nonnull
|
|
496
|
+
%out_ok = add 0, 1
|
|
497
|
+
[END_MACRO]
|
|
498
|
+
|
|
499
|
+
[MACRO] NONNULL_CAST %out_nonnull, %nonnull_ptr
|
|
500
|
+
__nonnull_cast_ptr_%out_nonnull = load %nonnull_ptr+NonNull_ptr as ptr
|
|
501
|
+
store %out_nonnull+NonNull_ptr, __nonnull_cast_ptr_%out_nonnull as ptr
|
|
502
|
+
!__nonnull_cast_ptr_%out_nonnull
|
|
503
|
+
[END_MACRO]
|
package/sa_std/ptr.sal
ADDED
package/sa_std/result.sa
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "core/result.sal"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
@import "rust_core.sal"
|
|
2
|
+
@import "core/cell.sal"
|
|
3
|
+
@import "core/cell.sa"
|
|
4
|
+
@import "core/refcell.sal"
|
|
5
|
+
@import "core/refcell.sa"
|
|
6
|
+
@import "core/rc.sal"
|
|
7
|
+
@import "core/rc.sa"
|
|
8
|
+
@import "core/box.sal"
|
|
9
|
+
@import "core/box.sa"
|
|
10
|
+
@import "core/derive.sal"
|
|
11
|
+
@import "core/derive.sa"
|
|
12
|
+
@import "core/weak.sal"
|
|
13
|
+
@import "core/weak.sa"
|
|
14
|
+
@import "core/arc.sal"
|
|
15
|
+
@import "core/arc.sa"
|
|
16
|
+
@import "core/bit.sa"
|
|
17
|
+
@import "sync/rwlock.sal"
|
|
18
|
+
@import "sync/rwlock.sa"
|
|
19
|
+
@import "sync/mutex.sal"
|
|
20
|
+
@import "sync/mutex.sa"
|
|
21
|
+
@import "sync/barrier.sal"
|
|
22
|
+
@import "sync/barrier.sa"
|
|
23
|
+
@import "sync/condvar.sal"
|
|
24
|
+
@import "sync/condvar.sa"
|
|
25
|
+
@import "sync/mpsc_list.sa"
|
|
26
|
+
@import "collections/linked_list.sal"
|
|
27
|
+
@import "collections/linked_list.sa"
|
|
28
|
+
|
|
29
|
+
@import "core/trait_object.sal"
|
|
30
|
+
@import "core/trait_object.sa"
|
|
31
|
+
@import "core/waker.sal"
|
|
32
|
+
@import "core/waker.sa"
|
|
33
|
+
@import "core/future.sal"
|
|
34
|
+
@import "core/future.sa"
|
|
35
|
+
@import "core/task.sal"
|
|
36
|
+
@import "core/task.sa"
|
|
37
|
+
@import "core/option.sal"
|
|
38
|
+
@import "core/option.sa"
|
|
39
|
+
@import "core/result.sal"
|
|
40
|
+
@import "core/result.sa"
|
|
41
|
+
@import "core/dispatch.sal"
|
|
42
|
+
@import "core/dispatch.sa"
|
|
43
|
+
@import "core/panic.sa"
|
|
44
|
+
@import "core/iter.sal"
|
|
45
|
+
@import "core/iter.sa"
|
|
46
|
+
@import "core/loop.sa"
|
|
47
|
+
@import "core/control.sa"
|
|
48
|
+
@import "core/hash.sa"
|
|
49
|
+
@import "core/cleanup.sa"
|
|
50
|
+
@import "core/ascii.sal"
|
|
51
|
+
@import "core/ascii.sa"
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
@import "core/cell.sal"
|
|
2
|
+
@import "core/refcell.sal"
|
|
3
|
+
@import "core/rc.sal"
|
|
4
|
+
@import "core/weak.sal"
|
|
5
|
+
@import "core/trait_object.sal"
|
|
6
|
+
@import "core/waker.sal"
|
|
7
|
+
@import "core/future.sal"
|
|
8
|
+
@import "core/task.sal"
|
|
9
|
+
@import "core/option.sal"
|
|
10
|
+
@import "core/result.sal"
|
|
11
|
+
@import "core/iter.sal"
|
|
12
|
+
|
|
13
|
+
#def RustCore_VERSION = 1
|
|
14
|
+
#def RustCore_SUPPORTS_OPTION = 1
|
|
15
|
+
#def RustCore_SUPPORTS_RESULT = 1
|
|
16
|
+
#def RustCore_SUPPORTS_PANIC = 1
|
|
17
|
+
#def RustCore_SUPPORTS_ITER = 1
|
|
18
|
+
#def RustCore_SUPPORTS_CELL = 1
|
|
19
|
+
#def RustCore_SUPPORTS_REFCELL = 1
|
|
20
|
+
#def RustCore_SUPPORTS_RC = 1
|
|
21
|
+
#def RustCore_SUPPORTS_WEAK = 1
|
|
22
|
+
#def RustCore_SUPPORTS_TRAIT_OBJECT = 1
|
|
23
|
+
#def RustCore_SUPPORTS_WAKER = 1
|
|
24
|
+
#def RustCore_SUPPORTS_FUTURE = 1
|
|
25
|
+
#def RustCore_SUPPORTS_TASK = 1
|
|
26
|
+
#def RustCore_SUPPORTS_ASCII = 1
|
package/sa_std/sa.mod
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# sa_std package manifest
|
|
2
|
+
#
|
|
3
|
+
# The compiler-shipped standard library is sourced from this repo tree.
|
|
4
|
+
# The package declaration makes the boundary explicit for sa.pkg resolution;
|
|
5
|
+
# dependency, version, feature, and ABI-release fields remain unsupported by
|
|
6
|
+
# the current manifest grammar and are documented as architecture follow-up.
|
|
7
|
+
package "sa_std"
|