goscript 0.0.35 → 0.0.37
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/compiler/expr-call.go +26 -0
- package/compiler/spec-struct.go +41 -8
- package/compiler/spec-value.go +4 -0
- package/compiler/spec.go +1 -1
- package/compiler/stmt.go +26 -8
- package/dist/gs/internal/byteorder/index.d.ts +8 -0
- package/dist/gs/internal/byteorder/index.js +34 -0
- package/dist/gs/internal/byteorder/index.js.map +1 -0
- package/dist/gs/internal/testlog/index.d.ts +1 -0
- package/dist/gs/internal/testlog/index.js +5 -0
- package/dist/gs/internal/testlog/index.js.map +1 -0
- package/dist/gs/maps/iter.d.ts +1 -1
- package/dist/gs/os/dir.gs.d.ts +6 -0
- package/dist/gs/os/dir.gs.js +35 -0
- package/dist/gs/os/dir.gs.js.map +1 -0
- package/dist/gs/os/dir_unix.gs.d.ts +7 -0
- package/dist/gs/os/dir_unix.gs.js +113 -0
- package/dist/gs/os/dir_unix.gs.js.map +1 -0
- package/dist/gs/os/dirent_js.gs.d.ts +5 -0
- package/dist/gs/os/dirent_js.gs.js +20 -0
- package/dist/gs/os/dirent_js.gs.js.map +1 -0
- package/dist/gs/os/env.gs.d.ts +12 -0
- package/dist/gs/os/env.gs.js +157 -0
- package/dist/gs/os/env.gs.js.map +1 -0
- package/dist/gs/os/error.gs.d.ts +40 -0
- package/dist/gs/os/error.gs.js +158 -0
- package/dist/gs/os/error.gs.js.map +1 -0
- package/dist/gs/os/error_errno.gs.d.ts +1 -0
- package/dist/gs/os/error_errno.gs.js +5 -0
- package/dist/gs/os/error_errno.gs.js.map +1 -0
- package/dist/gs/os/exec.gs.d.ts +60 -0
- package/dist/gs/os/exec.gs.js +136 -0
- package/dist/gs/os/exec.gs.js.map +1 -0
- package/dist/gs/os/exec_nohandle.gs.d.ts +1 -0
- package/dist/gs/os/exec_nohandle.gs.js +2 -0
- package/dist/gs/os/exec_nohandle.gs.js.map +1 -0
- package/dist/gs/os/exec_posix.gs.d.ts +25 -0
- package/dist/gs/os/exec_posix.gs.js +67 -0
- package/dist/gs/os/exec_posix.gs.js.map +1 -0
- package/dist/gs/os/exec_unix.gs.d.ts +4 -0
- package/dist/gs/os/exec_unix.gs.js +46 -0
- package/dist/gs/os/exec_unix.gs.js.map +1 -0
- package/dist/gs/os/executable.gs.d.ts +2 -0
- package/dist/gs/os/executable.gs.js +16 -0
- package/dist/gs/os/executable.gs.js.map +1 -0
- package/dist/gs/os/executable_js.gs.d.ts +2 -0
- package/dist/gs/os/executable_js.gs.js +5 -0
- package/dist/gs/os/executable_js.gs.js.map +1 -0
- package/dist/gs/os/executable_wasm.gs.d.ts +2 -0
- package/dist/gs/os/executable_wasm.gs.js +6 -0
- package/dist/gs/os/executable_wasm.gs.js.map +1 -0
- package/dist/gs/os/file_constants_js.gs.d.ts +41 -0
- package/dist/gs/os/file_constants_js.gs.js +78 -0
- package/dist/gs/os/file_constants_js.gs.js.map +1 -0
- package/dist/gs/os/file_js.gs.d.ts +22 -0
- package/dist/gs/os/file_js.gs.js +73 -0
- package/dist/gs/os/file_js.gs.js.map +1 -0
- package/dist/gs/os/file_open_unix.gs.d.ts +6 -0
- package/dist/gs/os/file_open_unix.gs.js +10 -0
- package/dist/gs/os/file_open_unix.gs.js.map +1 -0
- package/dist/gs/os/file_posix_js.gs.d.ts +8 -0
- package/dist/gs/os/file_posix_js.gs.js +32 -0
- package/dist/gs/os/file_posix_js.gs.js.map +1 -0
- package/dist/gs/os/file_unix_js.gs.d.ts +27 -0
- package/dist/gs/os/file_unix_js.gs.js +64 -0
- package/dist/gs/os/file_unix_js.gs.js.map +1 -0
- package/dist/gs/os/getwd_js.gs.d.ts +6 -0
- package/dist/gs/os/getwd_js.gs.js +21 -0
- package/dist/gs/os/getwd_js.gs.js.map +1 -0
- package/dist/gs/os/index.d.ts +19 -0
- package/dist/gs/os/index.js +20 -0
- package/dist/gs/os/index.js.map +1 -0
- package/dist/gs/os/path.gs.d.ts +4 -0
- package/dist/gs/os/path.gs.js +32 -0
- package/dist/gs/os/path.gs.js.map +1 -0
- package/dist/gs/os/path_unix.gs.d.ts +4 -0
- package/dist/gs/os/path_unix.gs.js +40 -0
- package/dist/gs/os/path_unix.gs.js.map +1 -0
- package/dist/gs/os/pidfd_js.gs.d.ts +6 -0
- package/dist/gs/os/pidfd_js.gs.js +14 -0
- package/dist/gs/os/pidfd_js.gs.js.map +1 -0
- package/dist/gs/os/pipe_wasm.gs.d.ts +2 -0
- package/dist/gs/os/pipe_wasm.gs.js +14 -0
- package/dist/gs/os/pipe_wasm.gs.js.map +1 -0
- package/dist/gs/os/proc.gs.d.ts +11 -0
- package/dist/gs/os/proc.gs.js +68 -0
- package/dist/gs/os/proc.gs.js.map +1 -0
- package/dist/gs/os/proc_js.gs.d.ts +3 -0
- package/dist/gs/os/proc_js.gs.js +12 -0
- package/dist/gs/os/proc_js.gs.js.map +1 -0
- package/dist/gs/os/rawconn_js.gs.d.ts +10 -0
- package/dist/gs/os/rawconn_js.gs.js +26 -0
- package/dist/gs/os/rawconn_js.gs.js.map +1 -0
- package/dist/gs/os/removeall_js.gs.d.ts +2 -0
- package/dist/gs/os/removeall_js.gs.js +7 -0
- package/dist/gs/os/removeall_js.gs.js.map +1 -0
- package/dist/gs/os/root_js.gs.d.ts +23 -0
- package/dist/gs/os/root_js.gs.js +80 -0
- package/dist/gs/os/root_js.gs.js.map +1 -0
- package/dist/gs/os/root_nonwindows.gs.d.ts +2 -0
- package/dist/gs/os/root_nonwindows.gs.js +4 -0
- package/dist/gs/os/root_nonwindows.gs.js.map +1 -0
- package/dist/gs/os/root_noopenat.gs.d.ts +11 -0
- package/dist/gs/os/root_noopenat.gs.js +31 -0
- package/dist/gs/os/root_noopenat.gs.js.map +1 -0
- package/dist/gs/os/stat.gs.d.ts +24 -0
- package/dist/gs/os/stat.gs.js +20 -0
- package/dist/gs/os/stat.gs.js.map +1 -0
- package/dist/gs/os/stat_js.gs.d.ts +6 -0
- package/dist/gs/os/stat_js.gs.js +23 -0
- package/dist/gs/os/stat_js.gs.js.map +1 -0
- package/dist/gs/os/stat_unix_js.gs.d.ts +8 -0
- package/dist/gs/os/stat_unix_js.gs.js +16 -0
- package/dist/gs/os/stat_unix_js.gs.js.map +1 -0
- package/dist/gs/os/sticky_bsd.gs.d.ts +1 -0
- package/dist/gs/os/sticky_bsd.gs.js +3 -0
- package/dist/gs/os/sticky_bsd.gs.js.map +1 -0
- package/dist/gs/os/sys.gs.d.ts +2 -0
- package/dist/gs/os/sys.gs.js +10 -0
- package/dist/gs/os/sys.gs.js.map +1 -0
- package/dist/gs/os/sys_bsd.gs.d.ts +2 -0
- package/dist/gs/os/sys_bsd.gs.js +15 -0
- package/dist/gs/os/sys_bsd.gs.js.map +1 -0
- package/dist/gs/os/sys_js.gs.d.ts +2 -0
- package/dist/gs/os/sys_js.gs.js +6 -0
- package/dist/gs/os/sys_js.gs.js.map +1 -0
- package/dist/gs/os/tempfile.gs.d.ts +5 -0
- package/dist/gs/os/tempfile.gs.js +30 -0
- package/dist/gs/os/tempfile.gs.js.map +1 -0
- package/dist/gs/os/types.gs.d.ts +59 -0
- package/dist/gs/os/types.gs.js +123 -0
- package/dist/gs/os/types.gs.js.map +1 -0
- package/dist/gs/os/types_js.gs.d.ts +74 -0
- package/dist/gs/os/types_js.gs.js +147 -0
- package/dist/gs/os/types_js.gs.js.map +1 -0
- package/dist/gs/os/types_unix.gs.d.ts +40 -0
- package/dist/gs/os/types_unix.gs.js +87 -0
- package/dist/gs/os/types_unix.gs.js.map +1 -0
- package/dist/gs/os/wait_unimp.gs.d.ts +1 -0
- package/dist/gs/os/wait_unimp.gs.js +2 -0
- package/dist/gs/os/wait_unimp.gs.js.map +1 -0
- package/dist/gs/os/zero_copy_posix.gs.d.ts +4 -0
- package/dist/gs/os/zero_copy_posix.gs.js +27 -0
- package/dist/gs/os/zero_copy_posix.gs.js.map +1 -0
- package/dist/gs/os/zero_copy_stub.gs.d.ts +1 -0
- package/dist/gs/os/zero_copy_stub.gs.js +2 -0
- package/dist/gs/os/zero_copy_stub.gs.js.map +1 -0
- package/dist/gs/sync/atomic/doc.gs.d.ts +28 -0
- package/dist/gs/sync/atomic/doc.gs.js +265 -0
- package/dist/gs/sync/atomic/doc.gs.js.map +1 -0
- package/dist/gs/sync/atomic/doc_64.gs.d.ts +15 -0
- package/dist/gs/sync/atomic/doc_64.gs.js +165 -0
- package/dist/gs/sync/atomic/doc_64.gs.js.map +1 -0
- package/dist/gs/sync/atomic/index.d.ts +4 -0
- package/dist/gs/sync/atomic/index.js +5 -0
- package/dist/gs/sync/atomic/index.js.map +1 -0
- package/dist/gs/sync/atomic/type.gs.d.ts +130 -0
- package/dist/gs/sync/atomic/type.gs.js +433 -0
- package/dist/gs/sync/atomic/type.gs.js.map +1 -0
- package/dist/gs/sync/atomic/value.gs.d.ts +19 -0
- package/dist/gs/sync/atomic/value.gs.js +116 -0
- package/dist/gs/sync/atomic/value.gs.js.map +1 -0
- package/dist/gs/syscall/index.d.ts +80 -0
- package/dist/gs/syscall/index.js +163 -0
- package/dist/gs/syscall/index.js.map +1 -0
- package/dist/gs/unsafe/unsafe.d.ts +1 -0
- package/dist/gs/unsafe/unsafe.js +5 -0
- package/dist/gs/unsafe/unsafe.js.map +1 -1
- package/gs/internal/byteorder/index.ts +40 -0
- package/gs/internal/testlog/index.ts +7 -0
- package/gs/maps/iter.ts +1 -1
- package/gs/math/erfinv.gs.test.ts +2 -2
- package/gs/math/fma.gs.test.ts +5 -5
- package/gs/math/ldexp.gs.test.ts +5 -5
- package/gs/math/lgamma.gs.test.ts +2 -2
- package/gs/os/dir.gs.ts +42 -0
- package/gs/os/dir_unix.gs.ts +155 -0
- package/gs/os/dirent_js.gs.ts +27 -0
- package/gs/os/env.gs.ts +179 -0
- package/gs/os/error.gs.ts +205 -0
- package/gs/os/error_errno.gs.ts +12 -0
- package/gs/os/exec.gs.ts +198 -0
- package/gs/os/exec_nohandle.gs.ts +2 -0
- package/gs/os/exec_posix.gs.ts +95 -0
- package/gs/os/exec_unix.gs.ts +64 -0
- package/gs/os/executable.gs.ts +18 -0
- package/gs/os/executable_js.gs.ts +6 -0
- package/gs/os/executable_wasm.gs.ts +10 -0
- package/gs/os/file_constants_js.gs.ts +98 -0
- package/gs/os/file_js.gs.ts +99 -0
- package/gs/os/file_open_unix.gs.ts +15 -0
- package/gs/os/file_posix_js.gs.ts +40 -0
- package/gs/os/file_unix_js.gs.ts +94 -0
- package/gs/os/getwd_js.gs.ts +28 -0
- package/gs/os/index.ts +19 -0
- package/gs/os/path.gs.ts +35 -0
- package/gs/os/path_unix.gs.ts +49 -0
- package/gs/os/pidfd_js.gs.ts +25 -0
- package/gs/os/pipe_wasm.gs.ts +17 -0
- package/gs/os/proc.gs.ts +84 -0
- package/gs/os/proc_js.gs.ts +15 -0
- package/gs/os/rawconn_js.gs.ts +30 -0
- package/gs/os/removeall_js.gs.ts +9 -0
- package/gs/os/root_js.gs.ts +111 -0
- package/gs/os/root_nonwindows.gs.ts +6 -0
- package/gs/os/root_noopenat.gs.ts +45 -0
- package/gs/os/stat.gs.ts +38 -0
- package/gs/os/stat_js.gs.ts +30 -0
- package/gs/os/stat_unix_js.gs.ts +27 -0
- package/gs/os/sticky_bsd.gs.ts +4 -0
- package/gs/os/sys.gs.ts +12 -0
- package/gs/os/sys_bsd.gs.ts +17 -0
- package/gs/os/sys_js.gs.ts +9 -0
- package/gs/os/tempfile.gs.ts +34 -0
- package/gs/os/types.gs.ts +170 -0
- package/gs/os/types_js.gs.ts +205 -0
- package/gs/os/types_unix.gs.ts +118 -0
- package/gs/os/wait_unimp.gs.ts +2 -0
- package/gs/os/zero_copy_posix.gs.ts +35 -0
- package/gs/os/zero_copy_stub.gs.ts +4 -0
- package/gs/sync/atomic/doc.gs.ts +276 -0
- package/gs/sync/atomic/doc_64.gs.ts +168 -0
- package/gs/sync/atomic/index.ts +4 -0
- package/gs/sync/atomic/type.gs.ts +596 -0
- package/gs/sync/atomic/value.gs.ts +158 -0
- package/gs/syscall/index.ts +204 -0
- package/gs/unsafe/unsafe.ts +6 -0
- package/package.json +1 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import * as $ from "@goscript/builtin/builtin.js";
|
|
2
|
+
import * as fs from "@goscript/io/fs/index.js";
|
|
3
|
+
import * as syscall from "@goscript/syscall/index.js";
|
|
4
|
+
import * as time from "@goscript/time/index.js";
|
|
5
|
+
class fileStat {
|
|
6
|
+
get name() {
|
|
7
|
+
return this._fields.name.value;
|
|
8
|
+
}
|
|
9
|
+
set name(value) {
|
|
10
|
+
this._fields.name.value = value;
|
|
11
|
+
}
|
|
12
|
+
get size() {
|
|
13
|
+
return this._fields.size.value;
|
|
14
|
+
}
|
|
15
|
+
set size(value) {
|
|
16
|
+
this._fields.size.value = value;
|
|
17
|
+
}
|
|
18
|
+
get mode() {
|
|
19
|
+
return this._fields.mode.value;
|
|
20
|
+
}
|
|
21
|
+
set mode(value) {
|
|
22
|
+
this._fields.mode.value = value;
|
|
23
|
+
}
|
|
24
|
+
get modTime() {
|
|
25
|
+
return this._fields.modTime.value;
|
|
26
|
+
}
|
|
27
|
+
set modTime(value) {
|
|
28
|
+
this._fields.modTime.value = value;
|
|
29
|
+
}
|
|
30
|
+
get sys() {
|
|
31
|
+
return this._fields.sys.value;
|
|
32
|
+
}
|
|
33
|
+
set sys(value) {
|
|
34
|
+
this._fields.sys.value = value;
|
|
35
|
+
}
|
|
36
|
+
_fields;
|
|
37
|
+
constructor(init) {
|
|
38
|
+
this._fields = {
|
|
39
|
+
name: $.varRef(init?.name ?? ""),
|
|
40
|
+
size: $.varRef(init?.size ?? 0),
|
|
41
|
+
mode: $.varRef(init?.mode ?? 0),
|
|
42
|
+
modTime: $.varRef(init?.modTime?.clone() ?? time.Now()),
|
|
43
|
+
sys: $.varRef(init?.sys?.clone() ?? new syscall.Stat_t())
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
clone() {
|
|
47
|
+
const cloned = new fileStat();
|
|
48
|
+
cloned._fields = {
|
|
49
|
+
name: $.varRef(this._fields.name.value),
|
|
50
|
+
size: $.varRef(this._fields.size.value),
|
|
51
|
+
mode: $.varRef(this._fields.mode.value),
|
|
52
|
+
modTime: $.varRef(this._fields.modTime.value?.clone() ?? null),
|
|
53
|
+
sys: $.varRef(this._fields.sys.value?.clone() ?? null)
|
|
54
|
+
};
|
|
55
|
+
return cloned;
|
|
56
|
+
}
|
|
57
|
+
Name() {
|
|
58
|
+
const fs = this;
|
|
59
|
+
return fs.name;
|
|
60
|
+
}
|
|
61
|
+
IsDir() {
|
|
62
|
+
const fileStat = this;
|
|
63
|
+
return (fileStat.Mode() & fs.ModeDir) !== 0;
|
|
64
|
+
}
|
|
65
|
+
Size() {
|
|
66
|
+
const fs = this;
|
|
67
|
+
return fs.size;
|
|
68
|
+
}
|
|
69
|
+
Mode() {
|
|
70
|
+
const fileStat = this;
|
|
71
|
+
return fileStat.mode;
|
|
72
|
+
}
|
|
73
|
+
ModTime() {
|
|
74
|
+
const fs = this;
|
|
75
|
+
return fs.modTime;
|
|
76
|
+
}
|
|
77
|
+
Sys() {
|
|
78
|
+
const fs = this;
|
|
79
|
+
return fs.sys;
|
|
80
|
+
}
|
|
81
|
+
// Register this type with the runtime type system
|
|
82
|
+
static __typeInfo = $.registerStructType('fileStat', new fileStat(), [{ name: "Name", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "string" } }] }, { name: "IsDir", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "boolean" } }] }, { name: "Size", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "number" } }] }, { name: "Mode", args: [], returns: [{ type: { kind: $.TypeKind.Basic, name: "number" } }] }, { name: "ModTime", args: [], returns: [{ type: "Time" }] }, { name: "Sys", args: [], returns: [{ type: { kind: $.TypeKind.Interface, methods: [] } }] }], fileStat, { "name": { kind: $.TypeKind.Basic, name: "string" }, "size": { kind: $.TypeKind.Basic, name: "number" }, "mode": { kind: $.TypeKind.Basic, name: "number" }, "modTime": "Time", "sys": "Stat_t" });
|
|
83
|
+
}
|
|
84
|
+
export function sameFile(fs1, fs2) {
|
|
85
|
+
return fs1.sys.Dev == fs2.sys.Dev && fs1.sys.Ino == fs2.sys.Ino;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=types_unix.gs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types_unix.gs.js","sourceRoot":"","sources":["../../../gs/os/types_unix.gs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait_unimp.gs.js","sourceRoot":"","sources":["../../../gs/os/wait_unimp.gs.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import * as $ from "@goscript/builtin/builtin.js";
|
|
2
|
+
import * as io from "@goscript/io/index.js";
|
|
3
|
+
export declare function wrapSyscallError(name: string, err: $.GoError): $.GoError;
|
|
4
|
+
export declare function tryLimitedReader(r: io.Reader): [io.LimitedReader | null, io.Reader, number];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import * as $ from "@goscript/builtin/builtin.js";
|
|
2
|
+
import { NewSyscallError } from "./error.gs.js";
|
|
3
|
+
// wrapSyscallError takes an error and a syscall name. If the error is
|
|
4
|
+
// a syscall.Errno, it wraps it in an os.SyscallError using the syscall name.
|
|
5
|
+
export function wrapSyscallError(name, err) {
|
|
6
|
+
{
|
|
7
|
+
let { ok: ok } = $.typeAssert(err, 'syscall.Errno');
|
|
8
|
+
if (ok) {
|
|
9
|
+
err = NewSyscallError(name, err);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
return err;
|
|
13
|
+
}
|
|
14
|
+
// tryLimitedReader tries to assert the io.Reader to io.LimitedReader, it returns the io.LimitedReader,
|
|
15
|
+
// the underlying io.Reader and the remaining amount of bytes if the assertion succeeds,
|
|
16
|
+
// otherwise it just returns the original io.Reader and the theoretical unlimited remaining amount of bytes.
|
|
17
|
+
export function tryLimitedReader(r) {
|
|
18
|
+
// by default, copy until EOF
|
|
19
|
+
let remain = Number.MAX_SAFE_INTEGER - 1;
|
|
20
|
+
let { value: lr, ok: ok } = $.typeAssert(r, { kind: $.TypeKind.Pointer, elemType: 'io.LimitedReader' });
|
|
21
|
+
if (!ok) {
|
|
22
|
+
return [null, r, remain];
|
|
23
|
+
}
|
|
24
|
+
remain = lr.N;
|
|
25
|
+
return [lr, lr.R, remain];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=zero_copy_posix.gs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zero_copy_posix.gs.js","sourceRoot":"","sources":["../../../gs/os/zero_copy_posix.gs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,8BAA8B,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAMhD,sEAAsE;AACtE,6EAA6E;AAC7E,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAc;IAC5D,CAAC;QACA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAAgB,GAAG,EAAE,eAAe,CAAC,CAAA;QAClE,IAAI,EAAE,EAAE,CAAC;YACR,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACjC,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,uGAAuG;AACvG,wFAAwF;AACxF,4GAA4G;AAC5G,MAAM,UAAU,gBAAgB,CAAC,CAAY;IAC5C,6BAA6B;IAC7B,IAAI,MAAM,GAAW,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAA;IAEhD,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,UAAU,CAA0B,CAAC,EAAE,EAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAC,CAAC,CAAA;IAC9H,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,GAAG,EAAG,CAAC,CAAC,CAAA;IACd,OAAO,CAAC,EAAE,EAAE,EAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;AAC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zero_copy_stub.gs.js","sourceRoot":"","sources":["../../../gs/os/zero_copy_stub.gs.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as $ from "@goscript/builtin/builtin.js";
|
|
2
|
+
export type uintptr = number;
|
|
3
|
+
export type Pointer = any;
|
|
4
|
+
export declare function SwapInt32(addr: $.VarRef<number> | null, _new: number): number;
|
|
5
|
+
export declare function SwapUint32(addr: $.VarRef<number> | null, _new: number): number;
|
|
6
|
+
export declare function SwapUintptr(addr: $.VarRef<uintptr> | null, _new: uintptr): uintptr;
|
|
7
|
+
export declare function SwapPointer(addr: $.VarRef<Pointer> | null, _new: Pointer): Pointer;
|
|
8
|
+
export declare function CompareAndSwapInt32(addr: $.VarRef<number> | null, old: number, _new: number): boolean;
|
|
9
|
+
export declare function CompareAndSwapUint32(addr: $.VarRef<number> | null, old: number, _new: number): boolean;
|
|
10
|
+
export declare function CompareAndSwapUintptr(addr: $.VarRef<uintptr> | null, old: uintptr, _new: uintptr): boolean;
|
|
11
|
+
export declare function CompareAndSwapPointer(addr: $.VarRef<Pointer> | null, old: Pointer, _new: Pointer): boolean;
|
|
12
|
+
export declare function AddInt32(addr: $.VarRef<number> | null, delta: number): number;
|
|
13
|
+
export declare function AddUint32(addr: $.VarRef<number> | null, delta: number): number;
|
|
14
|
+
export declare function AddUintptr(addr: $.VarRef<uintptr> | null, delta: uintptr): uintptr;
|
|
15
|
+
export declare function AndInt32(addr: $.VarRef<number> | null, mask: number): number;
|
|
16
|
+
export declare function AndUint32(addr: $.VarRef<number> | null, mask: number): number;
|
|
17
|
+
export declare function AndUintptr(addr: $.VarRef<uintptr> | null, mask: uintptr): uintptr;
|
|
18
|
+
export declare function OrInt32(addr: $.VarRef<number> | null, mask: number): number;
|
|
19
|
+
export declare function OrUint32(addr: $.VarRef<number> | null, mask: number): number;
|
|
20
|
+
export declare function OrUintptr(addr: $.VarRef<uintptr> | null, mask: uintptr): uintptr;
|
|
21
|
+
export declare function LoadInt32(addr: $.VarRef<number> | null): number;
|
|
22
|
+
export declare function LoadUint32(addr: $.VarRef<number> | null): number;
|
|
23
|
+
export declare function LoadUintptr(addr: $.VarRef<uintptr> | null): uintptr;
|
|
24
|
+
export declare function LoadPointer(addr: $.VarRef<Pointer> | null): Pointer;
|
|
25
|
+
export declare function StoreInt32(addr: $.VarRef<number> | null, val: number): void;
|
|
26
|
+
export declare function StoreUint32(addr: $.VarRef<number> | null, val: number): void;
|
|
27
|
+
export declare function StoreUintptr(addr: $.VarRef<uintptr> | null, val: uintptr): void;
|
|
28
|
+
export declare function StorePointer(addr: $.VarRef<Pointer> | null, val: Pointer): void;
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
// SwapInt32 atomically stores new into *addr and returns the previous *addr value.
|
|
2
|
+
// Consider using the more ergonomic and less error-prone [Int32.Swap] instead.
|
|
3
|
+
//
|
|
4
|
+
//go:noescape
|
|
5
|
+
export function SwapInt32(addr, _new) {
|
|
6
|
+
if (!addr)
|
|
7
|
+
return 0;
|
|
8
|
+
let old = addr.value;
|
|
9
|
+
addr.value = _new;
|
|
10
|
+
return old;
|
|
11
|
+
}
|
|
12
|
+
// SwapUint32 atomically stores new into *addr and returns the previous *addr value.
|
|
13
|
+
// Consider using the more ergonomic and less error-prone [Uint32.Swap] instead.
|
|
14
|
+
//
|
|
15
|
+
//go:noescape
|
|
16
|
+
export function SwapUint32(addr, _new) {
|
|
17
|
+
if (!addr)
|
|
18
|
+
return 0;
|
|
19
|
+
let old = addr.value;
|
|
20
|
+
addr.value = _new;
|
|
21
|
+
return old;
|
|
22
|
+
}
|
|
23
|
+
// SwapUintptr atomically stores new into *addr and returns the previous *addr value.
|
|
24
|
+
// Consider using the more ergonomic and less error-prone [Uintptr.Swap] instead.
|
|
25
|
+
//
|
|
26
|
+
//go:noescape
|
|
27
|
+
export function SwapUintptr(addr, _new) {
|
|
28
|
+
if (!addr)
|
|
29
|
+
return 0;
|
|
30
|
+
let old = addr.value;
|
|
31
|
+
addr.value = _new;
|
|
32
|
+
return old;
|
|
33
|
+
}
|
|
34
|
+
// SwapPointer atomically stores new into *addr and returns the previous *addr value.
|
|
35
|
+
// Consider using the more ergonomic and less error-prone [Pointer.Swap] instead.
|
|
36
|
+
export function SwapPointer(addr, _new) {
|
|
37
|
+
if (!addr)
|
|
38
|
+
return null;
|
|
39
|
+
let old = addr.value;
|
|
40
|
+
addr.value = _new;
|
|
41
|
+
return old;
|
|
42
|
+
}
|
|
43
|
+
// CompareAndSwapInt32 executes the compare-and-swap operation for an int32 value.
|
|
44
|
+
// Consider using the more ergonomic and less error-prone [Int32.CompareAndSwap] instead.
|
|
45
|
+
//
|
|
46
|
+
//go:noescape
|
|
47
|
+
export function CompareAndSwapInt32(addr, old, _new) {
|
|
48
|
+
if (!addr)
|
|
49
|
+
return false;
|
|
50
|
+
if (addr.value === old) {
|
|
51
|
+
addr.value = _new;
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
// CompareAndSwapUint32 executes the compare-and-swap operation for a uint32 value.
|
|
57
|
+
// Consider using the more ergonomic and less error-prone [Uint32.CompareAndSwap] instead.
|
|
58
|
+
//
|
|
59
|
+
//go:noescape
|
|
60
|
+
export function CompareAndSwapUint32(addr, old, _new) {
|
|
61
|
+
if (!addr)
|
|
62
|
+
return false;
|
|
63
|
+
if (addr.value === old) {
|
|
64
|
+
addr.value = _new;
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
// CompareAndSwapUintptr executes the compare-and-swap operation for a uintptr value.
|
|
70
|
+
// Consider using the more ergonomic and less error-prone [Uintptr.CompareAndSwap] instead.
|
|
71
|
+
//
|
|
72
|
+
//go:noescape
|
|
73
|
+
export function CompareAndSwapUintptr(addr, old, _new) {
|
|
74
|
+
if (!addr)
|
|
75
|
+
return false;
|
|
76
|
+
if (addr.value === old) {
|
|
77
|
+
addr.value = _new;
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
// CompareAndSwapPointer executes the compare-and-swap operation for a unsafe.Pointer value.
|
|
83
|
+
// Consider using the more ergonomic and less error-prone [Pointer.CompareAndSwap] instead.
|
|
84
|
+
export function CompareAndSwapPointer(addr, old, _new) {
|
|
85
|
+
if (!addr)
|
|
86
|
+
return false;
|
|
87
|
+
if (addr.value === old) {
|
|
88
|
+
addr.value = _new;
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
// AddInt32 atomically adds delta to *addr and returns the new value.
|
|
94
|
+
// Consider using the more ergonomic and less error-prone [Int32.Add] instead.
|
|
95
|
+
//
|
|
96
|
+
//go:noescape
|
|
97
|
+
export function AddInt32(addr, delta) {
|
|
98
|
+
if (!addr)
|
|
99
|
+
return 0;
|
|
100
|
+
addr.value = (addr.value + delta) | 0; // Use bitwise OR to ensure 32-bit signed integer
|
|
101
|
+
return addr.value;
|
|
102
|
+
}
|
|
103
|
+
// AddUint32 atomically adds delta to *addr and returns the new value.
|
|
104
|
+
// To subtract a signed positive constant value c from x, do AddUint32(&x, ^uint32(c-1)).
|
|
105
|
+
// In particular, to decrement x, do AddUint32(&x, ^uint32(0)).
|
|
106
|
+
// Consider using the more ergonomic and less error-prone [Uint32.Add] instead.
|
|
107
|
+
//
|
|
108
|
+
//go:noescape
|
|
109
|
+
export function AddUint32(addr, delta) {
|
|
110
|
+
if (!addr)
|
|
111
|
+
return 0;
|
|
112
|
+
addr.value = (addr.value + delta) >>> 0; // Use unsigned right shift to ensure 32-bit unsigned integer
|
|
113
|
+
return addr.value;
|
|
114
|
+
}
|
|
115
|
+
// AddUintptr atomically adds delta to *addr and returns the new value.
|
|
116
|
+
// Consider using the more ergonomic and less error-prone [Uintptr.Add] instead.
|
|
117
|
+
//
|
|
118
|
+
//go:noescape
|
|
119
|
+
export function AddUintptr(addr, delta) {
|
|
120
|
+
if (!addr)
|
|
121
|
+
return 0;
|
|
122
|
+
addr.value = (addr.value + delta) >>> 0; // Use unsigned right shift for uintptr
|
|
123
|
+
return addr.value;
|
|
124
|
+
}
|
|
125
|
+
// AndInt32 atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
|
|
126
|
+
// and returns the old value.
|
|
127
|
+
// Consider using the more ergonomic and less error-prone [Int32.And] instead.
|
|
128
|
+
//
|
|
129
|
+
//go:noescape
|
|
130
|
+
export function AndInt32(addr, mask) {
|
|
131
|
+
if (!addr)
|
|
132
|
+
return 0;
|
|
133
|
+
let old = addr.value;
|
|
134
|
+
addr.value = (addr.value & mask) | 0; // Use bitwise OR to ensure 32-bit signed integer
|
|
135
|
+
return old;
|
|
136
|
+
}
|
|
137
|
+
// AndUint32 atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
|
|
138
|
+
// and returns the old value.
|
|
139
|
+
// Consider using the more ergonomic and less error-prone [Uint32.And] instead.
|
|
140
|
+
//
|
|
141
|
+
//go:noescape
|
|
142
|
+
export function AndUint32(addr, mask) {
|
|
143
|
+
if (!addr)
|
|
144
|
+
return 0;
|
|
145
|
+
let old = addr.value;
|
|
146
|
+
addr.value = (addr.value & mask) >>> 0; // Use unsigned right shift to ensure 32-bit unsigned integer
|
|
147
|
+
return old;
|
|
148
|
+
}
|
|
149
|
+
// AndUintptr atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
|
|
150
|
+
// and returns the old value.
|
|
151
|
+
// Consider using the more ergonomic and less error-prone [Uintptr.And] instead.
|
|
152
|
+
//
|
|
153
|
+
//go:noescape
|
|
154
|
+
export function AndUintptr(addr, mask) {
|
|
155
|
+
if (!addr)
|
|
156
|
+
return 0;
|
|
157
|
+
let old = addr.value;
|
|
158
|
+
addr.value = (addr.value & mask) >>> 0; // Use unsigned right shift for uintptr
|
|
159
|
+
return old;
|
|
160
|
+
}
|
|
161
|
+
// OrInt32 atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
|
|
162
|
+
// and returns the old value.
|
|
163
|
+
// Consider using the more ergonomic and less error-prone [Int32.Or] instead.
|
|
164
|
+
//
|
|
165
|
+
//go:noescape
|
|
166
|
+
export function OrInt32(addr, mask) {
|
|
167
|
+
if (!addr)
|
|
168
|
+
return 0;
|
|
169
|
+
let old = addr.value;
|
|
170
|
+
addr.value = (addr.value | mask) | 0; // Use bitwise OR to ensure 32-bit signed integer
|
|
171
|
+
return old;
|
|
172
|
+
}
|
|
173
|
+
// OrUint32 atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
|
|
174
|
+
// and returns the old value.
|
|
175
|
+
// Consider using the more ergonomic and less error-prone [Uint32.Or] instead.
|
|
176
|
+
//
|
|
177
|
+
//go:noescape
|
|
178
|
+
export function OrUint32(addr, mask) {
|
|
179
|
+
if (!addr)
|
|
180
|
+
return 0;
|
|
181
|
+
let old = addr.value;
|
|
182
|
+
addr.value = (addr.value | mask) >>> 0; // Use unsigned right shift to ensure 32-bit unsigned integer
|
|
183
|
+
return old;
|
|
184
|
+
}
|
|
185
|
+
// OrUintptr atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
|
|
186
|
+
// and returns the old value.
|
|
187
|
+
// Consider using the more ergonomic and less error-prone [Uintptr.Or] instead.
|
|
188
|
+
//
|
|
189
|
+
//go:noescape
|
|
190
|
+
export function OrUintptr(addr, mask) {
|
|
191
|
+
if (!addr)
|
|
192
|
+
return 0;
|
|
193
|
+
let old = addr.value;
|
|
194
|
+
addr.value = (addr.value | mask) >>> 0; // Use unsigned right shift for uintptr
|
|
195
|
+
return old;
|
|
196
|
+
}
|
|
197
|
+
// LoadInt32 atomically loads *addr.
|
|
198
|
+
// Consider using the more ergonomic and less error-prone [Int32.Load] instead.
|
|
199
|
+
//
|
|
200
|
+
//go:noescape
|
|
201
|
+
export function LoadInt32(addr) {
|
|
202
|
+
if (!addr)
|
|
203
|
+
return 0;
|
|
204
|
+
return addr.value;
|
|
205
|
+
}
|
|
206
|
+
// LoadUint32 atomically loads *addr.
|
|
207
|
+
// Consider using the more ergonomic and less error-prone [Uint32.Load] instead.
|
|
208
|
+
//
|
|
209
|
+
//go:noescape
|
|
210
|
+
export function LoadUint32(addr) {
|
|
211
|
+
if (!addr)
|
|
212
|
+
return 0;
|
|
213
|
+
return addr.value;
|
|
214
|
+
}
|
|
215
|
+
// LoadUintptr atomically loads *addr.
|
|
216
|
+
// Consider using the more ergonomic and less error-prone [Uintptr.Load] instead.
|
|
217
|
+
//
|
|
218
|
+
//go:noescape
|
|
219
|
+
export function LoadUintptr(addr) {
|
|
220
|
+
if (!addr)
|
|
221
|
+
return 0;
|
|
222
|
+
return addr.value;
|
|
223
|
+
}
|
|
224
|
+
// LoadPointer atomically loads *addr.
|
|
225
|
+
// Consider using the more ergonomic and less error-prone [Pointer.Load] instead.
|
|
226
|
+
export function LoadPointer(addr) {
|
|
227
|
+
if (!addr)
|
|
228
|
+
return null;
|
|
229
|
+
return addr.value;
|
|
230
|
+
}
|
|
231
|
+
// StoreInt32 atomically stores val into *addr.
|
|
232
|
+
// Consider using the more ergonomic and less error-prone [Int32.Store] instead.
|
|
233
|
+
//
|
|
234
|
+
//go:noescape
|
|
235
|
+
export function StoreInt32(addr, val) {
|
|
236
|
+
if (addr) {
|
|
237
|
+
addr.value = val | 0; // Use bitwise OR to ensure 32-bit signed integer
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
// StoreUint32 atomically stores val into *addr.
|
|
241
|
+
// Consider using the more ergonomic and less error-prone [Uint32.Store] instead.
|
|
242
|
+
//
|
|
243
|
+
//go:noescape
|
|
244
|
+
export function StoreUint32(addr, val) {
|
|
245
|
+
if (addr) {
|
|
246
|
+
addr.value = val >>> 0; // Use unsigned right shift to ensure 32-bit unsigned integer
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// StoreUintptr atomically stores val into *addr.
|
|
250
|
+
// Consider using the more ergonomic and less error-prone [Uintptr.Store] instead.
|
|
251
|
+
//
|
|
252
|
+
//go:noescape
|
|
253
|
+
export function StoreUintptr(addr, val) {
|
|
254
|
+
if (addr) {
|
|
255
|
+
addr.value = val >>> 0; // Use unsigned right shift for uintptr
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
// StorePointer atomically stores val into *addr.
|
|
259
|
+
// Consider using the more ergonomic and less error-prone [Pointer.Store] instead.
|
|
260
|
+
export function StorePointer(addr, val) {
|
|
261
|
+
if (addr) {
|
|
262
|
+
addr.value = val;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
//# sourceMappingURL=doc.gs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc.gs.js","sourceRoot":"","sources":["../../../../gs/sync/atomic/doc.gs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as $ from "@goscript/builtin/builtin.js";
|
|
2
|
+
export declare function SwapInt64(addr: $.VarRef<number> | null, _new: number): number;
|
|
3
|
+
export declare function SwapUint64(addr: $.VarRef<number> | null, _new: number): number;
|
|
4
|
+
export declare function CompareAndSwapInt64(addr: $.VarRef<number> | null, old: number, _new: number): boolean;
|
|
5
|
+
export declare function CompareAndSwapUint64(addr: $.VarRef<number> | null, old: number, _new: number): boolean;
|
|
6
|
+
export declare function AddInt64(addr: $.VarRef<number> | null, delta: number): number;
|
|
7
|
+
export declare function AddUint64(addr: $.VarRef<number> | null, delta: number): number;
|
|
8
|
+
export declare function AndInt64(addr: $.VarRef<number> | null, mask: number): number;
|
|
9
|
+
export declare function AndUint64(addr: $.VarRef<number> | null, mask: number): number;
|
|
10
|
+
export declare function OrInt64(addr: $.VarRef<number> | null, mask: number): number;
|
|
11
|
+
export declare function OrUint64(addr: $.VarRef<number> | null, mask: number): number;
|
|
12
|
+
export declare function LoadInt64(addr: $.VarRef<number> | null): number;
|
|
13
|
+
export declare function LoadUint64(addr: $.VarRef<number> | null): number;
|
|
14
|
+
export declare function StoreInt64(addr: $.VarRef<number> | null, val: number): void;
|
|
15
|
+
export declare function StoreUint64(addr: $.VarRef<number> | null, val: number): void;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// SwapInt64 atomically stores new into *addr and returns the previous *addr value.
|
|
2
|
+
// Consider using the more ergonomic and less error-prone [Int64.Swap] instead
|
|
3
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
4
|
+
//
|
|
5
|
+
//go:noescape
|
|
6
|
+
export function SwapInt64(addr, _new) {
|
|
7
|
+
if (!addr)
|
|
8
|
+
return 0;
|
|
9
|
+
let old = addr.value;
|
|
10
|
+
addr.value = _new;
|
|
11
|
+
return old;
|
|
12
|
+
}
|
|
13
|
+
// SwapUint64 atomically stores new into *addr and returns the previous *addr value.
|
|
14
|
+
// Consider using the more ergonomic and less error-prone [Uint64.Swap] instead
|
|
15
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
16
|
+
//
|
|
17
|
+
//go:noescape
|
|
18
|
+
export function SwapUint64(addr, _new) {
|
|
19
|
+
if (!addr)
|
|
20
|
+
return 0;
|
|
21
|
+
let old = addr.value;
|
|
22
|
+
addr.value = _new;
|
|
23
|
+
return old;
|
|
24
|
+
}
|
|
25
|
+
// CompareAndSwapInt64 executes the compare-and-swap operation for an int64 value.
|
|
26
|
+
// Consider using the more ergonomic and less error-prone [Int64.CompareAndSwap] instead
|
|
27
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
28
|
+
//
|
|
29
|
+
//go:noescape
|
|
30
|
+
export function CompareAndSwapInt64(addr, old, _new) {
|
|
31
|
+
if (!addr)
|
|
32
|
+
return false;
|
|
33
|
+
if (addr.value === old) {
|
|
34
|
+
addr.value = _new;
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
// CompareAndSwapUint64 executes the compare-and-swap operation for a uint64 value.
|
|
40
|
+
// Consider using the more ergonomic and less error-prone [Uint64.CompareAndSwap] instead
|
|
41
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
42
|
+
//
|
|
43
|
+
//go:noescape
|
|
44
|
+
export function CompareAndSwapUint64(addr, old, _new) {
|
|
45
|
+
if (!addr)
|
|
46
|
+
return false;
|
|
47
|
+
if (addr.value === old) {
|
|
48
|
+
addr.value = _new;
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
// AddInt64 atomically adds delta to *addr and returns the new value.
|
|
54
|
+
// Consider using the more ergonomic and less error-prone [Int64.Add] instead
|
|
55
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
56
|
+
//
|
|
57
|
+
//go:noescape
|
|
58
|
+
export function AddInt64(addr, delta) {
|
|
59
|
+
if (!addr)
|
|
60
|
+
return 0;
|
|
61
|
+
addr.value = addr.value + delta;
|
|
62
|
+
return addr.value;
|
|
63
|
+
}
|
|
64
|
+
// AddUint64 atomically adds delta to *addr and returns the new value.
|
|
65
|
+
// To subtract a signed positive constant value c from x, do AddUint64(&x, ^uint64(c-1)).
|
|
66
|
+
// In particular, to decrement x, do AddUint64(&x, ^uint64(0)).
|
|
67
|
+
// Consider using the more ergonomic and less error-prone [Uint64.Add] instead
|
|
68
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
69
|
+
//
|
|
70
|
+
//go:noescape
|
|
71
|
+
export function AddUint64(addr, delta) {
|
|
72
|
+
if (!addr)
|
|
73
|
+
return 0;
|
|
74
|
+
addr.value = addr.value + delta;
|
|
75
|
+
return addr.value;
|
|
76
|
+
}
|
|
77
|
+
// AndInt64 atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
|
|
78
|
+
// and returns the old value.
|
|
79
|
+
// Consider using the more ergonomic and less error-prone [Int64.And] instead.
|
|
80
|
+
//
|
|
81
|
+
//go:noescape
|
|
82
|
+
export function AndInt64(addr, mask) {
|
|
83
|
+
if (!addr)
|
|
84
|
+
return 0;
|
|
85
|
+
let old = addr.value;
|
|
86
|
+
addr.value = addr.value & mask;
|
|
87
|
+
return old;
|
|
88
|
+
}
|
|
89
|
+
// AndUint64 atomically performs a bitwise AND operation on *addr using the bitmask provided as mask
|
|
90
|
+
// and returns the old.
|
|
91
|
+
// Consider using the more ergonomic and less error-prone [Uint64.And] instead.
|
|
92
|
+
//
|
|
93
|
+
//go:noescape
|
|
94
|
+
export function AndUint64(addr, mask) {
|
|
95
|
+
if (!addr)
|
|
96
|
+
return 0;
|
|
97
|
+
let old = addr.value;
|
|
98
|
+
addr.value = addr.value & mask;
|
|
99
|
+
return old;
|
|
100
|
+
}
|
|
101
|
+
// OrInt64 atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
|
|
102
|
+
// and returns the old value.
|
|
103
|
+
// Consider using the more ergonomic and less error-prone [Int64.Or] instead.
|
|
104
|
+
//
|
|
105
|
+
//go:noescape
|
|
106
|
+
export function OrInt64(addr, mask) {
|
|
107
|
+
if (!addr)
|
|
108
|
+
return 0;
|
|
109
|
+
let old = addr.value;
|
|
110
|
+
addr.value = addr.value | mask;
|
|
111
|
+
return old;
|
|
112
|
+
}
|
|
113
|
+
// OrUint64 atomically performs a bitwise OR operation on *addr using the bitmask provided as mask
|
|
114
|
+
// and returns the old value.
|
|
115
|
+
// Consider using the more ergonomic and less error-prone [Uint64.Or] instead.
|
|
116
|
+
//
|
|
117
|
+
//go:noescape
|
|
118
|
+
export function OrUint64(addr, mask) {
|
|
119
|
+
if (!addr)
|
|
120
|
+
return 0;
|
|
121
|
+
let old = addr.value;
|
|
122
|
+
addr.value = addr.value | mask;
|
|
123
|
+
return old;
|
|
124
|
+
}
|
|
125
|
+
// LoadInt64 atomically loads *addr.
|
|
126
|
+
// Consider using the more ergonomic and less error-prone [Int64.Load] instead
|
|
127
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
128
|
+
//
|
|
129
|
+
//go:noescape
|
|
130
|
+
export function LoadInt64(addr) {
|
|
131
|
+
if (!addr)
|
|
132
|
+
return 0;
|
|
133
|
+
return addr.value;
|
|
134
|
+
}
|
|
135
|
+
// LoadUint64 atomically loads *addr.
|
|
136
|
+
// Consider using the more ergonomic and less error-prone [Uint64.Load] instead
|
|
137
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
138
|
+
//
|
|
139
|
+
//go:noescape
|
|
140
|
+
export function LoadUint64(addr) {
|
|
141
|
+
if (!addr)
|
|
142
|
+
return 0;
|
|
143
|
+
return addr.value;
|
|
144
|
+
}
|
|
145
|
+
// StoreInt64 atomically stores val into *addr.
|
|
146
|
+
// Consider using the more ergonomic and less error-prone [Int64.Store] instead
|
|
147
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
148
|
+
//
|
|
149
|
+
//go:noescape
|
|
150
|
+
export function StoreInt64(addr, val) {
|
|
151
|
+
if (addr) {
|
|
152
|
+
addr.value = val;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// StoreUint64 atomically stores val into *addr.
|
|
156
|
+
// Consider using the more ergonomic and less error-prone [Uint64.Store] instead
|
|
157
|
+
// (particularly if you target 32-bit platforms; see the bugs section).
|
|
158
|
+
//
|
|
159
|
+
//go:noescape
|
|
160
|
+
export function StoreUint64(addr, val) {
|
|
161
|
+
if (addr) {
|
|
162
|
+
addr.value = val;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=doc_64.gs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doc_64.gs.js","sourceRoot":"","sources":["../../../../gs/sync/atomic/doc_64.gs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { AddInt32, AddUint32, AddUintptr, AndInt32, AndUint32, AndUintptr, CompareAndSwapInt32, CompareAndSwapPointer, CompareAndSwapUint32, CompareAndSwapUintptr, LoadInt32, LoadPointer, LoadUint32, LoadUintptr, OrInt32, OrUint32, OrUintptr, StoreInt32, StorePointer, StoreUint32, StoreUintptr, SwapInt32, SwapPointer, SwapUint32, SwapUintptr } from "./doc.gs.js";
|
|
2
|
+
export { AddInt64, AddUint64, AndInt64, AndUint64, CompareAndSwapInt64, CompareAndSwapUint64, LoadInt64, LoadUint64, OrInt64, OrUint64, StoreInt64, StoreUint64, SwapInt64, SwapUint64 } from "./doc_64.gs.js";
|
|
3
|
+
export { Bool, Int32, Int64, Pointer, Uint32, Uint64, Uintptr } from "./type.gs.js";
|
|
4
|
+
export { Value } from "./value.gs.js";
|