xbintsc 0.3.5 → 0.3.7
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/README.md +81 -8
- package/README.zh-CN.md +78 -8
- package/dist/src/cli/main.d.ts +1 -0
- package/dist/src/cli/main.js +13 -1
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/codegen/generator/context.d.ts +12 -0
- package/dist/src/codegen/generator/context.js +28 -1
- package/dist/src/codegen/generator/context.js.map +1 -1
- package/dist/src/codegen/generator/state.d.ts +8 -0
- package/dist/src/codegen/generator/state.js.map +1 -1
- package/dist/src/codegen/generator/statements/control-flow.js +1 -8
- package/dist/src/codegen/generator/statements/control-flow.js.map +1 -1
- package/dist/src/codegen/generator/tables.d.ts +11 -0
- package/dist/src/codegen/generator/tables.js +13 -0
- package/dist/src/codegen/generator/tables.js.map +1 -1
- package/dist/src/driver/compiler.js +22 -4
- package/dist/src/driver/compiler.js.map +1 -1
- package/dist/src/driver/toolchain-download.js +26 -0
- package/dist/src/driver/toolchain-download.js.map +1 -1
- package/dist/src/extensions/native.d.ts +92 -0
- package/dist/src/extensions/native.js +217 -0
- package/dist/src/extensions/native.js.map +1 -0
- package/dist/src/extensions/registry.d.ts +13 -0
- package/dist/src/extensions/registry.js +10 -0
- package/dist/src/extensions/registry.js.map +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/tests/cli/main.test.js +15 -0
- package/dist/tests/cli/main.test.js.map +1 -1
- package/dist/tests/codegen/llvm.test.js +24 -0
- package/dist/tests/codegen/llvm.test.js.map +1 -1
- package/dist/tests/driver/toolchain-download.test.js +15 -0
- package/dist/tests/driver/toolchain-download.test.js.map +1 -1
- package/dist/tests/driver/toolchain-provider.test.js +21 -1
- package/dist/tests/driver/toolchain-provider.test.js.map +1 -1
- package/dist/tests/e2e/native-extensions.test.d.ts +13 -0
- package/dist/tests/e2e/native-extensions.test.js +175 -0
- package/dist/tests/e2e/native-extensions.test.js.map +1 -0
- package/dist/tests/extensions/native.test.d.ts +1 -0
- package/dist/tests/extensions/native.test.js +101 -0
- package/dist/tests/extensions/native.test.js.map +1 -0
- package/dist/tests/helpers.d.ts +4 -1
- package/dist/tests/helpers.js +2 -1
- package/dist/tests/helpers.js.map +1 -1
- package/package.json +1 -1
- package/runtime/rt_internal.h +5 -3
- package/runtime/xt_ext.h +109 -0
- package/runtime/xt_ext.rs +173 -0
- package/runtime/xt_io.c +15 -14
- package/src/cli/main.ts +13 -1
- package/src/codegen/generator/context.ts +29 -1
- package/src/codegen/generator/state.ts +5 -0
- package/src/codegen/generator/statements/control-flow.ts +1 -8
- package/src/codegen/generator/tables.ts +14 -0
- package/src/driver/compiler.ts +25 -4
- package/src/driver/toolchain-download.ts +27 -0
- package/src/extensions/native.ts +270 -0
- package/src/extensions/registry.ts +21 -0
- package/src/index.ts +10 -0
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ The design goals are:
|
|
|
14
14
|
3. **Extensive tests** — per-module unit tests plus end-to-end tests that compile and run real binaries.
|
|
15
15
|
4. **Pluggable extensions** — Node `fs`, Bun APIs, … are optional compile modules, not core code.
|
|
16
16
|
5. **Self-hosting** — the compiler compiles itself: `src/cli/main.ts` builds into a native `xbintsc` binary whose emitted LLVM IR is a fixpoint across generations. CI builds these binaries for every platform and a release attaches them.
|
|
17
|
-
6. **Multi-platform** — macOS, Linux and Windows on
|
|
17
|
+
6. **Multi-platform** — macOS, Linux and Windows on x64 and arm64 (Apple Silicon / AArch64), validated by GitHub Actions on native runners.
|
|
18
18
|
|
|
19
19
|
## How it works
|
|
20
20
|
|
|
@@ -97,12 +97,52 @@ xbintsc emit examples/hello.ts | head
|
|
|
97
97
|
xbintsc run examples/read-file.ts --ext node
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
-
#### Prebuilt standalone archives
|
|
100
|
+
#### Prebuilt standalone archives (recommended, no Node.js needed)
|
|
101
101
|
|
|
102
|
-
Every GitHub Release
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
Every [GitHub Release](https://github.com/zy445566/xbintsc/releases/latest) attaches a
|
|
103
|
+
self-contained archive per platform, plus a `.sha256` checksum next to it:
|
|
104
|
+
|
|
105
|
+
| Platform | Archive |
|
|
106
|
+
| --- | --- |
|
|
107
|
+
| Windows x64 / arm64 | `xbintsc-win32-x64.tar.zst` / `xbintsc-win32-arm64.tar.zst` |
|
|
108
|
+
| Linux x64 / arm64 | `xbintsc-linux-x64.tar.zst` / `xbintsc-linux-arm64.tar.zst` |
|
|
109
|
+
| macOS x64 / arm64 (Apple Silicon) | `xbintsc-darwin-x64.tar.zst` / `xbintsc-darwin-arm64.tar.zst` |
|
|
110
|
+
|
|
111
|
+
(`.tar.gz` is used only when `zstd` is unavailable on the build machine.)
|
|
112
|
+
|
|
113
|
+
Each archive unpacks to a `xbintsc-<os>-<arch>/` folder that already contains the
|
|
114
|
+
compiler (`bin/xbintsc[.exe]`), the C runtime and the bundled toolchain, so it needs
|
|
115
|
+
**no Node.js and no system compiler**. See
|
|
116
|
+
[Requirements → Prebuilt releases](doc/requirements.md#prebuilt-releases-recommended)
|
|
117
|
+
for the (minimal) per-platform requirements.
|
|
118
|
+
|
|
119
|
+
**Windows example** — download an archive from the
|
|
120
|
+
[Releases page](https://github.com/zy445566/xbintsc/releases/latest) (here
|
|
121
|
+
`xbintsc-win32-x64.tar.zst`; use `-arm64` on Windows on ARM), then in PowerShell
|
|
122
|
+
(Windows 10+ ships `tar`):
|
|
123
|
+
|
|
124
|
+
```powershell
|
|
125
|
+
# 1. Verify the checksum (optional but recommended)
|
|
126
|
+
(Get-FileHash .\xbintsc-win32-x64.tar.zst -Algorithm SHA256).Hash
|
|
127
|
+
Get-Content .\xbintsc-win32-x64.tar.zst.sha256
|
|
128
|
+
|
|
129
|
+
# 2. Unpack
|
|
130
|
+
tar -xf .\xbintsc-win32-x64.tar.zst
|
|
131
|
+
|
|
132
|
+
# 3. Compile and run hello.ts (below)
|
|
133
|
+
.\xbintsc-win32-x64\bin\xbintsc.exe run .\hello.ts
|
|
134
|
+
|
|
135
|
+
# 4. ...or emit a standalone hello.exe
|
|
136
|
+
.\xbintsc-win32-x64\bin\xbintsc.exe build .\hello.ts --out .\build
|
|
137
|
+
.\build\hello.exe
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
// hello.ts
|
|
142
|
+
console.log("Hello from xbintsc!");
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Tip: add `xbintsc-win32-x64\bin` to `PATH` to call `xbintsc` instead of the full path.
|
|
106
146
|
|
|
107
147
|
### As a developer (from source)
|
|
108
148
|
|
|
@@ -138,6 +178,7 @@ CLI options:
|
|
|
138
178
|
--emit <kind> exe | obj | ir (default: exe)
|
|
139
179
|
-O0..-O3 Optimization level (default: -O2)
|
|
140
180
|
--ext <names> Comma separated extensions (e.g. node)
|
|
181
|
+
--ext-native <m> Register a C++/Rust extension from a JSON manifest
|
|
141
182
|
--force Ignore the incremental cache
|
|
142
183
|
--verbose Print progress information
|
|
143
184
|
```
|
|
@@ -204,6 +245,35 @@ Node module coverage:
|
|
|
204
245
|
- [Node extension: implemented](./doc/node-implemented.md)
|
|
205
246
|
- [Node extension: unimplemented](./doc/node-unimplemented.md)
|
|
206
247
|
|
|
248
|
+
### Native extensions (C++ / Rust)
|
|
249
|
+
|
|
250
|
+
Extensions do not have to be written in C or TypeScript. Any library that
|
|
251
|
+
exposes `extern "C"` entry points with the runtime ABI
|
|
252
|
+
(`xt_value fn(int32_t argc, xt_value *argv)`) can be linked in. Build the C++ or
|
|
253
|
+
Rust code into an object file or static archive, describe it with a small JSON
|
|
254
|
+
manifest, and pass the manifest to `--ext-native`:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
./examples/extensions/cpp/build.sh
|
|
258
|
+
xbintsc run examples/extensions/cpp/demo.ts \
|
|
259
|
+
--ext-native examples/extensions/cpp/xbintsc.manifest.json
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
```jsonc
|
|
263
|
+
{
|
|
264
|
+
"name": "mathx-cpp",
|
|
265
|
+
"objects": ["build/libmathx.a"],
|
|
266
|
+
"linkerFlagsByPlatform": { "linux": ["-lstdc++"], "darwin": ["-lc++"], "win32": ["-lc++", "-static"] },
|
|
267
|
+
"builtins": { "cppClamp": { "symbol": "mathx_clamp" } },
|
|
268
|
+
"modules": { "mathx": { "exports": { "add": { "symbol": "mathx_add" } } } }
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
`import { add } from "mathx"` then lowers to the C++/Rust symbol exactly like a
|
|
273
|
+
C runtime binding. See [`examples/extensions/`](./examples/extensions) for
|
|
274
|
+
working C++ and Rust projects, and `runtime/xt_ext.h` / `runtime/xt_ext.rs` for
|
|
275
|
+
the authoring helpers.
|
|
276
|
+
|
|
207
277
|
## Tests
|
|
208
278
|
|
|
209
279
|
```bash
|
|
@@ -217,9 +287,12 @@ Tests are organised by module under `tests/` (`lexer`, `parser`, `binder`,
|
|
|
217
287
|
|
|
218
288
|
## Requirements
|
|
219
289
|
|
|
220
|
-
See [Requirements](./doc/requirements.md) for the full, per-platform list.
|
|
290
|
+
See [Requirements](./doc/requirements.md) for the full, per-platform list. If you
|
|
291
|
+
only use the prebuilt standalone binaries, the relevant part is
|
|
292
|
+
[Requirements → Prebuilt releases](./doc/requirements.md#prebuilt-releases-recommended)
|
|
293
|
+
(Windows/Linux bundle their toolchain; macOS needs the Xcode Command Line Tools).
|
|
221
294
|
|
|
222
|
-
- Node.js
|
|
295
|
+
- Node.js 22+ — only to run/build from source; released binaries are standalone
|
|
223
296
|
- macOS: the Xcode Command Line Tools (`xcode-select --install`)
|
|
224
297
|
- Windows: nothing extra — the MinGW-w64 toolchain is bundled
|
|
225
298
|
- Linux: a system C library (glibc)
|
package/README.zh-CN.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
3. **测试充分** —— 每个模块单元测试,外加真正编译并运行二进制的端到端测试。
|
|
14
14
|
4. **可插拔扩展** —— Node `fs`、Bun API 等是可选的编译模块,而非核心代码。
|
|
15
15
|
5. **自举(self-hosting)** —— 编译器可编译自身:`src/cli/main.ts` 能构建为原生 `xbintsc` 二进制,其产出的 LLVM IR 跨代达到不动点。CI 会为各平台构建这些二进制,Release 则附上这些产物。
|
|
16
|
-
6. **多平台** ——
|
|
16
|
+
6. **多平台** —— 在 x64 与 arm64(Apple Silicon / AArch64)上支持 macOS、Linux 与 Windows,并由 GitHub Actions 在各自架构的原生 runner 上验证。
|
|
17
17
|
|
|
18
18
|
## 工作原理
|
|
19
19
|
|
|
@@ -91,12 +91,51 @@ xbintsc emit examples/hello.ts | head
|
|
|
91
91
|
xbintsc run examples/read-file.ts --ext node
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
-
####
|
|
94
|
+
#### 预编译独立发布包(推荐,无需 Node.js)
|
|
95
95
|
|
|
96
|
-
每个 GitHub Release
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
每个 [GitHub Release](https://github.com/zy445566/xbintsc/releases/latest) 都会附上
|
|
97
|
+
各平台的自包含归档,并在旁边附 `.sha256` 校验文件:
|
|
98
|
+
|
|
99
|
+
| 平台 | 归档 |
|
|
100
|
+
| --- | --- |
|
|
101
|
+
| Windows x64 / arm64 | `xbintsc-win32-x64.tar.zst` / `xbintsc-win32-arm64.tar.zst` |
|
|
102
|
+
| Linux x64 / arm64 | `xbintsc-linux-x64.tar.zst` / `xbintsc-linux-arm64.tar.zst` |
|
|
103
|
+
| macOS x64 / arm64(Apple Silicon) | `xbintsc-darwin-x64.tar.zst` / `xbintsc-darwin-arm64.tar.zst` |
|
|
104
|
+
|
|
105
|
+
(仅当构建机没有 `zstd` 时才会回退为 `.tar.gz`。)
|
|
106
|
+
|
|
107
|
+
每个归档解压后都是一个 `xbintsc-<os>-<arch>/` 目录,其中已包含编译器
|
|
108
|
+
(`bin/xbintsc[.exe]`)、C 运行时与自带工具链,因此**无需 Node.js,也无需系统编译器**。
|
|
109
|
+
各平台(极简)的运行前置条件见
|
|
110
|
+
[使用前置要求 → 预编译发布包](doc/zh-CN/requirements.md#预编译发布包推荐)。
|
|
111
|
+
|
|
112
|
+
**Windows 示例** —— 从
|
|
113
|
+
[Releases 页面](https://github.com/zy445566/xbintsc/releases/latest) 下载对应归档
|
|
114
|
+
(此处为 `xbintsc-win32-x64.tar.zst`;Windows on ARM 请用 `-arm64`),
|
|
115
|
+
然后在 PowerShell 中执行(Windows 10+ 自带 `tar`):
|
|
116
|
+
|
|
117
|
+
```powershell
|
|
118
|
+
# 1. 校验哈希(可选,但推荐)
|
|
119
|
+
(Get-FileHash .\xbintsc-win32-x64.tar.zst -Algorithm SHA256).Hash
|
|
120
|
+
Get-Content .\xbintsc-win32-x64.tar.zst.sha256
|
|
121
|
+
|
|
122
|
+
# 2. 解压
|
|
123
|
+
tar -xf .\xbintsc-win32-x64.tar.zst
|
|
124
|
+
|
|
125
|
+
# 3. 编译并运行 hello.ts(见下)
|
|
126
|
+
.\xbintsc-win32-x64\bin\xbintsc.exe run .\hello.ts
|
|
127
|
+
|
|
128
|
+
# 4. ...或产出独立的 hello.exe
|
|
129
|
+
.\xbintsc-win32-x64\bin\xbintsc.exe build .\hello.ts --out .\build
|
|
130
|
+
.\build\hello.exe
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
```ts
|
|
134
|
+
// hello.ts
|
|
135
|
+
console.log("Hello from xbintsc!");
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
提示:把 `xbintsc-win32-x64\bin` 加入 `PATH`,即可直接用 `xbintsc` 命令。
|
|
100
139
|
|
|
101
140
|
### 作为开发者(从源码)
|
|
102
141
|
|
|
@@ -131,6 +170,7 @@ CLI 选项:
|
|
|
131
170
|
--emit <kind> exe | obj | ir(默认 exe)
|
|
132
171
|
-O0..-O3 优化级别(默认 -O2)
|
|
133
172
|
--ext <names> 逗号分隔扩展(如 node)
|
|
173
|
+
--ext-native <m> 从 JSON manifest 注册 C++/Rust 扩展
|
|
134
174
|
--force 忽略增量缓存
|
|
135
175
|
--verbose 打印进度信息
|
|
136
176
|
```
|
|
@@ -194,6 +234,33 @@ Node 模块覆盖情况:
|
|
|
194
234
|
- [Node 扩展:已实现](./doc/zh-CN/node-implemented.md)
|
|
195
235
|
- [Node 扩展:未实现](./doc/zh-CN/node-unimplemented.md)
|
|
196
236
|
|
|
237
|
+
### 原生扩展(C++ / Rust)
|
|
238
|
+
|
|
239
|
+
扩展并非只能用 C 或 TypeScript 编写。只要库以 `extern "C"` 暴露运行时 ABI 的
|
|
240
|
+
入口(`xt_value fn(int32_t argc, xt_value *argv)`),就可以被链接进来。把
|
|
241
|
+
C++ 或 Rust 代码编译为对象文件或静态库,用一个很小的 JSON manifest 描述它,
|
|
242
|
+
再通过 `--ext-native` 传入:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
./examples/extensions/cpp/build.sh
|
|
246
|
+
xbintsc run examples/extensions/cpp/demo.ts \
|
|
247
|
+
--ext-native examples/extensions/cpp/xbintsc.manifest.json
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
```jsonc
|
|
251
|
+
{
|
|
252
|
+
"name": "mathx-cpp",
|
|
253
|
+
"objects": ["build/libmathx.a"],
|
|
254
|
+
"linkerFlagsByPlatform": { "linux": ["-lstdc++"], "darwin": ["-lc++"], "win32": ["-lc++", "-static"] },
|
|
255
|
+
"builtins": { "cppClamp": { "symbol": "mathx_clamp" } },
|
|
256
|
+
"modules": { "mathx": { "exports": { "add": { "symbol": "mathx_add" } } } }
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
之后 `import { add } from "mathx"` 会像 C 运行时绑定一样下降为 C++/Rust 符号。
|
|
261
|
+
可运行的 C++ 与 Rust 工程见 [`examples/extensions/`](./examples/extensions),编写
|
|
262
|
+
辅助见 `runtime/xt_ext.h` / `runtime/xt_ext.rs`。
|
|
263
|
+
|
|
197
264
|
## 测试
|
|
198
265
|
|
|
199
266
|
```bash
|
|
@@ -207,9 +274,12 @@ npm run test:e2e # 仅编译并运行的测试
|
|
|
207
274
|
|
|
208
275
|
## 运行要求
|
|
209
276
|
|
|
210
|
-
完整的分平台要求见 [使用前置要求](./doc/zh-CN/requirements.md)
|
|
277
|
+
完整的分平台要求见 [使用前置要求](./doc/zh-CN/requirements.md)。若只使用预编译的
|
|
278
|
+
独立二进制,相关部分为
|
|
279
|
+
[使用前置要求 → 预编译发布包](./doc/zh-CN/requirements.md#预编译发布包推荐)
|
|
280
|
+
(Windows/Linux 自带工具链;macOS 需要 Xcode Command Line Tools)。
|
|
211
281
|
|
|
212
|
-
- Node.js
|
|
282
|
+
- Node.js 22+ —— 仅从源码运行/构建时需要;发布版二进制是独立的
|
|
213
283
|
- macOS:Xcode Command Line Tools(`xcode-select --install`)
|
|
214
284
|
- Windows:无需额外安装 —— 自带 MinGW-w64 工具链
|
|
215
285
|
- Linux:系统 C 库(glibc)
|
package/dist/src/cli/main.d.ts
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* available programmatically through the driver API:
|
|
6
6
|
*
|
|
7
7
|
* xbintsc build <file> [-o out] [--emit ir|obj|exe] [-O0..3] [--ext node]
|
|
8
|
+
* [--ext-native manifest.json]
|
|
8
9
|
* xbintsc run <file> [-- args...]
|
|
9
10
|
* xbintsc emit <file> # print LLVM IR to stdout
|
|
10
11
|
* xbintsc doctor # report the resolved toolchain
|
package/dist/src/cli/main.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* available programmatically through the driver API:
|
|
6
6
|
*
|
|
7
7
|
* xbintsc build <file> [-o out] [--emit ir|obj|exe] [-O0..3] [--ext node]
|
|
8
|
+
* [--ext-native manifest.json]
|
|
8
9
|
* xbintsc run <file> [-- args...]
|
|
9
10
|
* xbintsc emit <file> # print LLVM IR to stdout
|
|
10
11
|
* xbintsc doctor # report the resolved toolchain
|
|
@@ -22,11 +23,12 @@ import { resolveToolchain } from "../driver/toolchain-provider.js";
|
|
|
22
23
|
import { realRunner } from "../driver/toolchain.js";
|
|
23
24
|
import { createDefaultRegistry } from "../extensions/registry.js";
|
|
24
25
|
import { nodeExtension } from "../extensions/node/index.js";
|
|
26
|
+
import { nativeExtensionFromManifest } from "../extensions/native.js";
|
|
25
27
|
const defaultIo = {
|
|
26
28
|
stdout: (text) => process.stdout.write(text),
|
|
27
29
|
stderr: (text) => process.stderr.write(text),
|
|
28
30
|
};
|
|
29
|
-
const VALUE_FLAGS = new Set(["output", "out", "emit", "optimize", "ext"]);
|
|
31
|
+
const VALUE_FLAGS = new Set(["output", "out", "emit", "optimize", "ext", "ext-native"]);
|
|
30
32
|
function parseArgs(argv) {
|
|
31
33
|
const positionals = [];
|
|
32
34
|
const flags = new Map();
|
|
@@ -94,6 +96,14 @@ function buildRegistry(flags) {
|
|
|
94
96
|
throw new Error(`Unknown extension '${name}'`);
|
|
95
97
|
}
|
|
96
98
|
}
|
|
99
|
+
// Each `--ext-native` value is a manifest path describing a pre-built C++ or
|
|
100
|
+
// Rust library; several manifests may be comma separated.
|
|
101
|
+
const native = flags.get("ext-native");
|
|
102
|
+
if (typeof native === "string") {
|
|
103
|
+
for (const manifest of native.split(",").map((n) => n.trim()).filter(Boolean)) {
|
|
104
|
+
registry.register(nativeExtensionFromManifest(manifest));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
97
107
|
return registry;
|
|
98
108
|
}
|
|
99
109
|
function printDiagnostics(diagnostics, fileName, io) {
|
|
@@ -124,6 +134,8 @@ Options:
|
|
|
124
134
|
--emit <kind> exe | obj | ir (default: exe)
|
|
125
135
|
-O0..-O3 Optimization level (default: -O2)
|
|
126
136
|
--ext <names> Comma separated extensions (e.g. node)
|
|
137
|
+
--ext-native <m> Register a C++/Rust extension from a JSON manifest
|
|
138
|
+
(comma separated for several)
|
|
127
139
|
--force Ignore the incremental cache
|
|
128
140
|
--verbose Print progress information
|
|
129
141
|
`;
|
package/dist/src/cli/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/cli/main.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/cli/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAmB,MAAM,8BAA8B,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAiB,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAA0B,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAOtE,MAAM,SAAS,GAAU;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IAC5C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;CAC7C,CAAC;AASF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;AAExF,SAAS,SAAS,CAAC,IAAuB;IACxC,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IAClD,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,cAAc,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,cAAc,GAAG,IAAI,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACvD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,KAAK,CAAC,GAAG,CAAC,IAAK,EAAE,WAAW,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,WAAW,CAAC,GAAG,CAAC,IAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,KAAK,CAAC,GAAG,CAAC,IAAK,EAAE,IAAI,CAAC,CAAC;oBACvB,KAAK,EAAE,CAAC;gBACV,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,GAAG,CAAC,IAAK,EAAE,IAAI,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,IAAK,EAAE,IAAI,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;YAC9C,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC7B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;oBAC1B,KAAK,EAAE,CAAC;gBACV,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,aAAa,CAAC,KAAoC;IACzD,MAAM,QAAQ,GAAG,qBAAqB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAClC,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7E,IAAI,IAAI,KAAK,MAAM;gBAAE,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;;gBACjD,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,GAAG,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IACD,6EAA6E;IAC7E,0DAA0D;IAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9E,QAAQ,CAAC,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAkC,EAAE,QAAgB,EAAE,EAAS;IACvF,IAAI,MAA8B,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,SAAS,CAAC;IACrB,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG,WAAW,gBAAgB;;;;;;;;;;;;;;;;;;;;CAoBvC,CAAC;AAEF,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC7D,CAAC;AAED,2DAA2D;AAC3D,SAAS,MAAM,CAAC,EAAS;IACvB,EAAE,CAAC,MAAM,CAAC,WAAW,gBAAgB,IAAI,CAAC,CAAC;IAC3C,EAAE,CAAC,MAAM,CAAC,gBAAgB,YAAY,EAAE,IAAI,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC;QAC9F,EAAE,CAAC,MAAM,CAAC,gBAAgB,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;QACrE,EAAE,CAAC,MAAM,CAAC,gBAAgB,SAAS,CAAC,OAAO,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,EAAE,CAAC,MAAM,CAAC,sFAAsF,CAAC,CAAC;IACpG,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,gBAAgB,cAAc,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,EAAE,CAAC,MAAM,CAAC,uDAAuD,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,gBAAgB,aAAa,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,EAAE,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,IAAuB,EAAE,KAAY,SAAS;IAChE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAE7B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACvD,EAAE,CAAC,MAAM,CAAC,WAAW,gBAAgB,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,EAAE,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;YACpD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC1D,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,EAAE,CAAC;YACpD,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACzC,OAAO,CAAC,CAAC;QACX,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,EAAE,CAAC,MAAM,CAAC,YAAY,OAAO,2BAA2B,CAAC,CAAC;YAC1D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,IAAI,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAA0B,IAAI,KAAK,CAAC;QACvE,MAAM,QAAQ,GAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAwB,IAAI,GAAG,CAAC;QAC3E,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE;YAC1B,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAY,CAAC,CAAC,CAAC,SAAS;YACvG,MAAM,EAAE,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC,CAAC,CAAC,SAAS;YACjG,IAAI;YACJ,QAAQ,EAAE,QAAiC;YAC3C,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3C,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;SACtC,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,EAAE,CAAC;YAC3D,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,EAAE,CAAC,MAAM,CAAC,kBAAkB,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACtF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,EAAE,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC;YAChD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACtF,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,EAAE,CAAC,MAAM,CAAC,6BAA6B,OAAO,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3F,IAAI,MAAM,EAAE,CAAC;IACX,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -16,6 +16,11 @@ export declare class GeneratorContext {
|
|
|
16
16
|
readonly diagnostics: DiagnosticBag;
|
|
17
17
|
readonly builtins: Readonly<Record<string, BuiltinFunction>>;
|
|
18
18
|
readonly modules: Readonly<Record<string, ExtensionModule>>;
|
|
19
|
+
/** Host the emitted IR targets (the process by default; see `CodegenOptions`). */
|
|
20
|
+
readonly target: {
|
|
21
|
+
readonly platform: string;
|
|
22
|
+
readonly arch: string;
|
|
23
|
+
};
|
|
19
24
|
/** Imported symbol id -> the module binding it refers to. */
|
|
20
25
|
readonly importExports: Map<number, ModuleExport>;
|
|
21
26
|
/** Imported symbol id -> the namespace it aliases (e.g. `path`). */
|
|
@@ -57,6 +62,13 @@ export declare class GeneratorContext {
|
|
|
57
62
|
emit(line: string): void;
|
|
58
63
|
terminate(line: string): void;
|
|
59
64
|
reg(): string;
|
|
65
|
+
/**
|
|
66
|
+
* Emit the `setjmp` that opens a `try` frame and return the register holding
|
|
67
|
+
* its result. The frame address is always passed explicitly because Windows
|
|
68
|
+
* `_setjmp` stores it in `_JUMP_BUFFER.Frame` for `longjmp` to unwind to; the
|
|
69
|
+
* extra argument is ignored by the one-argument `_setjmp` on Linux/macOS.
|
|
70
|
+
*/
|
|
71
|
+
emitSetjmp(frame: string): string;
|
|
60
72
|
label(prefix: string): string;
|
|
61
73
|
startBlock(label: string): void;
|
|
62
74
|
alloca(): string;
|
|
@@ -9,13 +9,15 @@ import { bind, SymbolKind } from "../../binder/binder.js";
|
|
|
9
9
|
import { DiagnosticCode } from "../../diagnostics/diagnostic.js";
|
|
10
10
|
import { SyntaxKind } from "../../ast/nodes.js";
|
|
11
11
|
import { i64, XT_UNDEFINED } from "../values.js";
|
|
12
|
-
import { escapeBytes, isErrorFamily, kindName, utf8Bytes } from "./tables.js";
|
|
12
|
+
import { escapeBytes, isErrorFamily, kindName, requiresSetjmpex, utf8Bytes } from "./tables.js";
|
|
13
13
|
export class GeneratorContext {
|
|
14
14
|
binding;
|
|
15
15
|
sourceFile;
|
|
16
16
|
diagnostics;
|
|
17
17
|
builtins;
|
|
18
18
|
modules;
|
|
19
|
+
/** Host the emitted IR targets (the process by default; see `CodegenOptions`). */
|
|
20
|
+
target;
|
|
19
21
|
/** Imported symbol id -> the module binding it refers to. */
|
|
20
22
|
importExports = new Map();
|
|
21
23
|
/** Imported symbol id -> the namespace it aliases (e.g. `path`). */
|
|
@@ -41,6 +43,7 @@ export class GeneratorContext {
|
|
|
41
43
|
this.binding = bind(sourceFile);
|
|
42
44
|
this.builtins = options.builtins ?? {};
|
|
43
45
|
this.modules = options.modules ?? {};
|
|
46
|
+
this.target = options.target ?? { platform: process.platform, arch: process.arch };
|
|
44
47
|
this.resolveImports();
|
|
45
48
|
}
|
|
46
49
|
/**
|
|
@@ -118,6 +121,30 @@ export class GeneratorContext {
|
|
|
118
121
|
reg() {
|
|
119
122
|
return `%r${this.current.reg++}`;
|
|
120
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Emit the `setjmp` that opens a `try` frame and return the register holding
|
|
126
|
+
* its result. The frame address is always passed explicitly because Windows
|
|
127
|
+
* `_setjmp` stores it in `_JUMP_BUFFER.Frame` for `longjmp` to unwind to; the
|
|
128
|
+
* extra argument is ignored by the one-argument `_setjmp` on Linux/macOS.
|
|
129
|
+
*/
|
|
130
|
+
emitSetjmp(frame) {
|
|
131
|
+
if (requiresSetjmpex(this.target.platform, this.target.arch)) {
|
|
132
|
+
// Windows ARM64 has no `_setjmp`; use `_setjmpex`, which expects the
|
|
133
|
+
// caller's stack pointer on entry (`llvm.sponentry`).
|
|
134
|
+
this.extraDeclarations.add("declare i8* @llvm.sponentry()");
|
|
135
|
+
this.extraDeclarations.add("declare i32 @_setjmpex(i8*, i8*) returns_twice");
|
|
136
|
+
const entry = this.reg();
|
|
137
|
+
this.emit(` ${entry} = call i8* @llvm.sponentry()`);
|
|
138
|
+
const jump = this.reg();
|
|
139
|
+
this.emit(` ${jump} = call i32 @_setjmpex(i8* ${frame}, i8* ${entry})`);
|
|
140
|
+
return jump;
|
|
141
|
+
}
|
|
142
|
+
const frameAddress = this.reg();
|
|
143
|
+
this.emit(` ${frameAddress} = call i8* @llvm.frameaddress(i32 0)`);
|
|
144
|
+
const jump = this.reg();
|
|
145
|
+
this.emit(` ${jump} = call i32 @_setjmp(i8* ${frame}, i8* ${frameAddress})`);
|
|
146
|
+
return jump;
|
|
147
|
+
}
|
|
121
148
|
label(prefix) {
|
|
122
149
|
return `${prefix}.${this.current.label++}`;
|
|
123
150
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/codegen/generator/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAE,UAAU,EAAoC,MAAM,wBAAwB,CAAC;AAE5F,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,UAAU,EAA2E,MAAM,oBAAoB,CAAC;AACzH,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAQjD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/codegen/generator/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,5 +55,13 @@ export interface CodegenOptions {
|
|
|
55
55
|
readonly builtins?: Readonly<Record<string, BuiltinFunction>>;
|
|
56
56
|
/** Importable modules supplied by registered extensions. */
|
|
57
57
|
readonly modules?: Readonly<Record<string, ExtensionModule>>;
|
|
58
|
+
/**
|
|
59
|
+
* Host the IR is generated for. xbintsc builds for its own host, so this
|
|
60
|
+
* defaults to the running process; it is overridable for tests.
|
|
61
|
+
*/
|
|
62
|
+
readonly target?: {
|
|
63
|
+
readonly platform: string;
|
|
64
|
+
readonly arch: string;
|
|
65
|
+
};
|
|
58
66
|
}
|
|
59
67
|
export declare const RUNTIME_DECLARATIONS: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../src/codegen/generator/state.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../../src/codegen/generator/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -133,14 +133,7 @@ export const controlFlowStatementMethods = {
|
|
|
133
133
|
this.emit(` ${frame} = call i8* @xt_try_enter()`);
|
|
134
134
|
this.emit(` store i8* ${frame}, i8** ${frameSlot}`);
|
|
135
135
|
this.emit(` store i64 0, i64* ${flagSlot}`);
|
|
136
|
-
|
|
137
|
-
// (`_JUMP_BUFFER.Frame`); `longjmp` uses it to run the unwind. clang lowers
|
|
138
|
-
// a C call to `_setjmp` exactly like this. The extra argument is ignored by
|
|
139
|
-
// the one-argument `_setjmp` on Linux/macOS.
|
|
140
|
-
const frameAddress = this.reg();
|
|
141
|
-
this.emit(` ${frameAddress} = call i8* @llvm.frameaddress(i32 0)`);
|
|
142
|
-
const jump = this.reg();
|
|
143
|
-
this.emit(` ${jump} = call i32 @_setjmp(i8* ${frame}, i8* ${frameAddress})`);
|
|
136
|
+
const jump = this.emitSetjmp(frame);
|
|
144
137
|
const isThrow = this.reg();
|
|
145
138
|
this.emit(` ${isThrow} = icmp ne i32 ${jump}, 0`);
|
|
146
139
|
const exceptionTarget = hasCatch ? catchLabel : exceptionLabel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-flow.js","sourceRoot":"","sources":["../../../../../src/codegen/generator/statements/control-flow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"control-flow.js","sourceRoot":"","sources":["../../../../../src/codegen/generator/statements/control-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
* Static tables and small pure helpers used by the LLVM generator.
|
|
3
3
|
*/
|
|
4
4
|
import { AssignmentOperator, BinaryOperator, type Node } from "../../ast/nodes.js";
|
|
5
|
+
/**
|
|
6
|
+
* True when a `try` frame must be saved with `_setjmpex` rather than `_setjmp`.
|
|
7
|
+
*
|
|
8
|
+
* 64-bit Windows on ARM has no `_setjmp`: both the UCRT and MinGW-w64 declare
|
|
9
|
+
* `setjmp` as `_setjmpex(buf, sponentry)` there, so the linker expects
|
|
10
|
+
* `_setjmpex` (with the caller's stack pointer at entry, `llvm.sponentry`,
|
|
11
|
+
* instead of its frame pointer). clang lowers a C `setjmp` on this target to
|
|
12
|
+
* exactly that pair. Checked at code-generation time because xbintsc builds for
|
|
13
|
+
* its own host.
|
|
14
|
+
*/
|
|
15
|
+
export declare function requiresSetjmpex(platform: string, arch: string): boolean;
|
|
5
16
|
export declare const BINARY_RUNTIME: Record<string, string | undefined>;
|
|
6
17
|
export declare const CONSOLE_METHODS: Record<string, string>;
|
|
7
18
|
export declare const MATH_FUNCTIONS: Set<string>;
|
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
* Static tables and small pure helpers used by the LLVM generator.
|
|
3
3
|
*/
|
|
4
4
|
import { BinaryOperator, SyntaxKind, } from "../../ast/nodes.js";
|
|
5
|
+
/**
|
|
6
|
+
* True when a `try` frame must be saved with `_setjmpex` rather than `_setjmp`.
|
|
7
|
+
*
|
|
8
|
+
* 64-bit Windows on ARM has no `_setjmp`: both the UCRT and MinGW-w64 declare
|
|
9
|
+
* `setjmp` as `_setjmpex(buf, sponentry)` there, so the linker expects
|
|
10
|
+
* `_setjmpex` (with the caller's stack pointer at entry, `llvm.sponentry`,
|
|
11
|
+
* instead of its frame pointer). clang lowers a C `setjmp` on this target to
|
|
12
|
+
* exactly that pair. Checked at code-generation time because xbintsc builds for
|
|
13
|
+
* its own host.
|
|
14
|
+
*/
|
|
15
|
+
export function requiresSetjmpex(platform, arch) {
|
|
16
|
+
return platform === "win32" && arch === "arm64";
|
|
17
|
+
}
|
|
5
18
|
export const BINARY_RUNTIME = {
|
|
6
19
|
[BinaryOperator.Add]: "xt_add",
|
|
7
20
|
[BinaryOperator.Subtract]: "xt_sub",
|