Commit a193fe3
committed
hsc2hs: batch cross-compilation for massive speedup (#154)
* hsc2hs: batch cross-compilation for massive speedup
Replace hackage hsc2hs-0.68.10 with stable-haskell/hsc2hs fork that
includes batch cross-compilation support. This reduces C compiler
invocations from hundreds/thousands per .hsc file to just 1-2 total
by batching all constant-like directives (#const, #size, #alignment,
step with graceful fallback to per-directive compilation.
Key changes in the fork (bf966e8):
- Batch collection of all batchable directives with conditional stack tracking
- Single C file generation with all constants as global variables
- Assembly parsing via ATTParser to extract all values at once
- Graceful try/catch around ATT.parse for compilers producing non-AT&T
assembly (e.g. emcc for WebAssembly), falling through to per-directive path
- --no-batch flag for debugging/fallback
Performance impact per .hsc file:
- Before (non-via-asm): ~28 compilations per directive (e.g. 4089 for Flags.hsc)
- Before (via-asm): 1 compilation per directive (e.g. 147 for Flags.hsc)
- After (batch): 2 compilations total per file (validity check + batch)
Fork: https://github.com/stable-haskell/hsc2hs/tree/feat/batch-cross-compilation
* fix: update hsc2hs fork with Windows CodeView debug section fix
Update hsc2hs fork reference to include fix for ATT parser crash on
Windows where Clang emits CodeView .debug$S sections even with -g0.
The parser now filters out debug sections and handles unrecognized
instruction patterns gracefully.1 parent 9b71cef commit a193fe3
1 file changed
Lines changed: 76 additions & 62 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
| 1 | + | |
| 2 | + | |
| 3 | + | |
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
8 | 12 | | |
9 | 13 | | |
10 | 14 | | |
| |||
38 | 42 | | |
39 | 43 | | |
40 | 44 | | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | 45 | | |
45 | 46 | | |
46 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
47 | 51 | | |
48 | 52 | | |
49 | | - | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
50 | 83 | | |
51 | 84 | | |
52 | 85 | | |
| |||
84 | 117 | | |
85 | 118 | | |
86 | 119 | | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
125 | | - | |
126 | | - | |
127 | | - | |
128 | | - | |
129 | | - | |
130 | | - | |
131 | | - | |
132 | | - | |
133 | | - | |
134 | | - | |
135 | | - | |
136 | 120 | | |
137 | 121 | | |
138 | 122 | | |
| |||
148 | 132 | | |
149 | 133 | | |
150 | 134 | | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
151 | 155 | | |
152 | | - | |
| 156 | + | |
153 | 157 | | |
154 | 158 | | |
155 | 159 | | |
| |||
196 | 200 | | |
197 | 201 | | |
198 | 202 | | |
199 | | - | |
200 | | - | |
201 | | - | |
| 203 | + | |
| 204 | + | |
202 | 205 | | |
203 | | - | |
204 | | - | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
205 | 212 | | |
206 | 213 | | |
207 | 214 | | |
| |||
212 | 219 | | |
213 | 220 | | |
214 | 221 | | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
0 commit comments