Skip to content

Commit 8d894d0

Browse files
committed
Make sure constant locals are inlined, see #6
1 parent 2ed3c22 commit 8d894d0

File tree

7 files changed

+251
-101
lines changed

7 files changed

+251
-101
lines changed

examples/game-of-life/assembly/game-of-life.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// A simplified version of the game of life as seen on http://dcode.io
22

3-
let w: u32; // width
4-
let h: u32; // height
5-
let s: u32; // total size
3+
var w: u32; // width
4+
var h: u32; // height
5+
var s: u32; // total size
66

77
/** Initializes width and height. */
88
export function init(w_: u32, h_: u32): void {
@@ -13,10 +13,10 @@ export function init(w_: u32, h_: u32): void {
1313

1414
/** Performs one step. */
1515
export function step(): void {
16-
let y: u32, ym1: u32, yp1: u32; // y, y-1 and y+1
17-
let x: u32, xm1: u32, xp1: u32; // x, x-1 and x+1
18-
let hm1: u32 = h - 1, wm1: u32 = w - 1;
19-
let n: u32, v: u8, c: u32 = 0;
16+
var y: u32, ym1: u32, yp1: u32; // y, y-1 and y+1
17+
var x: u32, xm1: u32, xp1: u32; // x, x-1 and x+1
18+
var hm1: u32 = h - 1, wm1: u32 = w - 1;
19+
var n: u32, v: u8, c: u32 = 0;
2020
for (y = 0; y < h; ++y) {
2121
ym1 = select<u32>(hm1, y - 1, y == 0);
2222
yp1 = select<u32>(0, y + 1, y == hm1);

examples/i64-polyfill/assembly/i64.ts

+29-29
Original file line numberDiff line numberDiff line change
@@ -10,180 +10,180 @@ export function getHi(): u32 {
1010
}
1111

1212
function clz_(loLeft: u32, hiLeft: u32): void {
13-
const ret: u64 = clz<u64>(<u64>loLeft | <u64>hiLeft << 32);
13+
var ret = clz<u64>(<u64>loLeft | <u64>hiLeft << 32);
1414
lo = <u32>ret;
1515
hi = 0;
1616
}
1717
export { clz_ as clz };
1818

1919
function ctz_(loLeft: u32, hiLeft: u32): void {
20-
const ret: u64 = ctz<u64>(<u64>loLeft | <u64>hiLeft << 32);
20+
var ret = ctz<u64>(<u64>loLeft | <u64>hiLeft << 32);
2121
lo = <u32>ret;
2222
hi = 0;
2323
}
2424
export { ctz_ as ctz };
2525

2626
function popcnt_(loLeft: u32, hiLeft: u32): void {
27-
const ret: u64 = popcnt<u64>(<u64>loLeft | <u64>hiLeft << 32);
27+
var ret = popcnt<u64>(<u64>loLeft | <u64>hiLeft << 32);
2828
lo = <u32>ret;
2929
hi = 0;
3030
}
3131
export { popcnt_ as popcnt };
3232

3333
export function eqz(loLeft: u32, hiLeft: u32): void {
34-
const ret: bool = !(<u64>loLeft | <u64>hiLeft << 32);
34+
var ret: bool = !(<u64>loLeft | <u64>hiLeft << 32);
3535
lo = <u32>ret;
3636
hi = 0;
3737
}
3838

3939
export function add(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
40-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) + (<u64>loRight | <u64>hiRight << 32);
40+
var ret = (<u64>loLeft | <u64>hiLeft << 32) + (<u64>loRight | <u64>hiRight << 32);
4141
lo = <u32>ret;
4242
hi = <u32>(ret >> 32);
4343
}
4444

4545
export function sub(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
46-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) - (<u64>loRight | <u64>hiRight << 32);
46+
var ret = (<u64>loLeft | <u64>hiLeft << 32) - (<u64>loRight | <u64>hiRight << 32);
4747
lo = <u32>ret;
4848
hi = <u32>(ret >> 32);
4949
}
5050

5151
export function mul(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
52-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) * (<u64>loRight | <u64>hiRight << 32);
52+
var ret = (<u64>loLeft | <u64>hiLeft << 32) * (<u64>loRight | <u64>hiRight << 32);
5353
lo = <u32>ret;
5454
hi = <u32>(ret >> 32);
5555
}
5656

5757
export function div_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
58-
const ret: u64 = <u64>(<i64>(<u64>loLeft | <u64>hiLeft << 32) / <i64>(<u64>loRight | <u64>hiRight << 32));
58+
var ret = <u64>(<i64>(<u64>loLeft | <u64>hiLeft << 32) / <i64>(<u64>loRight | <u64>hiRight << 32));
5959
lo = <u32>ret;
6060
hi = <u32>(ret >> 32);
6161
}
6262

6363
export function div_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
64-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) / (<u64>loRight | <u64>hiRight << 32);
64+
var ret = (<u64>loLeft | <u64>hiLeft << 32) / (<u64>loRight | <u64>hiRight << 32);
6565
lo = <u32>ret;
6666
hi = <u32>(ret >> 32);
6767
}
6868

6969
export function rem_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
70-
const ret: u64 = <u64>(<i64>(<u64>loLeft | <u64>hiLeft << 32) % <i64>(<u64>loRight | <u64>hiRight << 32));
70+
var ret = <u64>(<i64>(<u64>loLeft | <u64>hiLeft << 32) % <i64>(<u64>loRight | <u64>hiRight << 32));
7171
lo = <u32>ret;
7272
hi = <u32>(ret >> 32);
7373
}
7474

7575
export function rem_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
76-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) % (<u64>loRight | <u64>hiRight << 32);
76+
var ret = (<u64>loLeft | <u64>hiLeft << 32) % (<u64>loRight | <u64>hiRight << 32);
7777
lo = <u32>ret;
7878
hi = <u32>(ret >>> 32);
7979
}
8080

8181
export function and(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
82-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) & (<u64>loRight | <u64>hiRight << 32);
82+
var ret = (<u64>loLeft | <u64>hiLeft << 32) & (<u64>loRight | <u64>hiRight << 32);
8383
lo = <u32>ret;
8484
hi = <u32>(ret >>> 32);
8585
}
8686

8787
export function or(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
88-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) | (<u64>loRight | <u64>hiRight << 32);
88+
var ret = (<u64>loLeft | <u64>hiLeft << 32) | (<u64>loRight | <u64>hiRight << 32);
8989
lo = <u32>ret;
9090
hi = <u32>(ret >>> 32);
9191
}
9292

9393
export function xor(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
94-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) ^ (<u64>loRight | <u64>hiRight << 32);
94+
var ret = (<u64>loLeft | <u64>hiLeft << 32) ^ (<u64>loRight | <u64>hiRight << 32);
9595
lo = <u32>ret;
9696
hi = <u32>(ret >>> 32);
9797
}
9898

9999
export function shl(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
100-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) << (<u64>loRight | <u64>hiRight << 32);
100+
var ret = (<u64>loLeft | <u64>hiLeft << 32) << (<u64>loRight | <u64>hiRight << 32);
101101
lo = <u32>ret;
102102
hi = <u32>(ret >>> 32);
103103
}
104104

105105
export function shr_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
106-
const ret: u64 = <u64>(<i64>(<u64>loLeft | <u64>hiLeft << 32) >> <i64>(<u64>loRight | <u64>hiRight << 32));
106+
var ret = <u64>(<i64>(<u64>loLeft | <u64>hiLeft << 32) >> <i64>(<u64>loRight | <u64>hiRight << 32));
107107
lo = <u32>ret;
108108
hi = <u32>(ret >>> 32);
109109
}
110110

111111
export function shr_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
112-
const ret: u64 = (<u64>loLeft | <u64>hiLeft << 32) >> (<u64>loRight | <u64>hiRight << 32);
112+
var ret = (<u64>loLeft | <u64>hiLeft << 32) >> (<u64>loRight | <u64>hiRight << 32);
113113
lo = <u32>ret;
114114
hi = <u32>(ret >>> 32);
115115
}
116116

117117
function rotl_(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
118-
const ret: u64 = rotl<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
118+
var ret = rotl<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
119119
lo = <u32>ret;
120120
hi = <u32>(ret >>> 32);
121121
}
122122
export { rotl_ as rotl };
123123

124124
function rotr_(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
125-
const ret: u64 = rotr<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
125+
var ret = rotr<u64>(<u64>loLeft | <u64>hiLeft << 32, <u64>loRight | <u64>hiRight << 32);
126126
lo = <u32>ret;
127127
hi = <u32>(ret >>> 32);
128128
}
129129
export { rotr_ as rotr };
130130

131131
export function eq(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
132-
const ret: bool = (<u64>loLeft | <u64>hiLeft << 32) == (<u64>loRight | <u64>hiRight << 32);
132+
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) == (<u64>loRight | <u64>hiRight << 32);
133133
lo = <u32>ret;
134134
hi = 0;
135135
}
136136

137137
export function ne(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
138-
const ret: bool = (<u64>loLeft | <u64>hiLeft << 32) != (<u64>loRight | <u64>hiRight << 32);
138+
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) != (<u64>loRight | <u64>hiRight << 32);
139139
lo = <u32>ret;
140140
hi = 0;
141141
}
142142

143143
export function lt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
144-
const ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) < <i64>(<u64>loRight | <u64>hiRight << 32);
144+
var ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) < <i64>(<u64>loRight | <u64>hiRight << 32);
145145
lo = <u32>ret;
146146
hi = 0;
147147
}
148148

149149
export function lt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
150-
const ret: bool = (<u64>loLeft | <u64>hiLeft << 32) < (<u64>loRight | <u64>hiRight << 32);
150+
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) < (<u64>loRight | <u64>hiRight << 32);
151151
lo = <u32>ret;
152152
hi = 0;
153153
}
154154

155155
export function le_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
156-
const ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) <= <i64>(<u64>loRight | <u64>hiRight << 32);
156+
var ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) <= <i64>(<u64>loRight | <u64>hiRight << 32);
157157
lo = <u32>ret;
158158
hi = 0;
159159
}
160160

161161
export function le_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
162-
const ret: bool = (<u64>loLeft | <u64>hiLeft << 32) <= (<u64>loRight | <u64>hiRight << 32);
162+
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) <= (<u64>loRight | <u64>hiRight << 32);
163163
lo = <u32>ret;
164164
hi = 0;
165165
}
166166

167167
export function gt_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
168-
const ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) > <i64>(<u64>loRight | <u64>hiRight << 32);
168+
var ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) > <i64>(<u64>loRight | <u64>hiRight << 32);
169169
lo = <u32>ret;
170170
hi = 0;
171171
}
172172

173173
export function gt_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
174-
const ret: bool = (<u64>loLeft | <u64>hiLeft << 32) > (<u64>loRight | <u64>hiRight << 32);
174+
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) > (<u64>loRight | <u64>hiRight << 32);
175175
lo = <u32>ret;
176176
hi = 0;
177177
}
178178

179179
export function ge_s(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
180-
const ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) >= <i64>(<u64>loRight | <u64>hiRight << 32);
180+
var ret: bool = <i64>(<u64>loLeft | <u64>hiLeft << 32) >= <i64>(<u64>loRight | <u64>hiRight << 32);
181181
lo = <u32>ret;
182182
hi = 0;
183183
}
184184

185185
export function ge_u(loLeft: u32, hiLeft: u32, loRight: u32, hiRight: u32): void {
186-
const ret: bool = (<u64>loLeft | <u64>hiLeft << 32) >= (<u64>loRight | <u64>hiRight << 32);
186+
var ret: bool = (<u64>loLeft | <u64>hiLeft << 32) >= (<u64>loRight | <u64>hiRight << 32);
187187
lo = <u32>ret;
188188
hi = 0;
189189
}

0 commit comments

Comments
 (0)