|
1 load(libdir + "asm.js"); |
|
2 |
|
3 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i32[0>>2] = 4.0; return i32[0>>2]|0; } return f'); |
|
4 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f32[0>>2] = 4; return +f32[0>>2]; } return f'); |
|
5 |
|
6 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { var x=0,y=0; return i8[x+y]|0 } return f'); |
|
7 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { var x=0,y=0; return u8[x+y]|0 } return f'); |
|
8 |
|
9 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[0>>0]|0 }; return f'); |
|
10 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[0>>1]|0 }; return f'); |
|
11 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[0>>4]|0 }; return f'); |
|
12 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[0]|0 }; return f'), this, null, new ArrayBuffer(4096))(), 0); |
|
13 |
|
14 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i = i32[i>>2]|0; return i|0}; return f'); |
|
15 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
16 assertEq(f(0), 0); |
|
17 |
|
18 setCachingEnabled(true); |
|
19 |
|
20 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i32[0] = i; return i8[0]|0}; return f'); |
|
21 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
22 assertEq(f(0),0); |
|
23 assertEq(f(0x7f),0x7f); |
|
24 assertEq(f(0xff),-1); |
|
25 assertEq(f(0x100),0); |
|
26 |
|
27 setCachingEnabled(false); |
|
28 |
|
29 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i32[0] = i; return u8[0]|0}; return f'); |
|
30 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
31 assertEq(f(0),0); |
|
32 assertEq(f(0x7f),0x7f); |
|
33 assertEq(f(0xff),0xff); |
|
34 assertEq(f(0x100),0); |
|
35 |
|
36 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i32[0] = i; return i16[0]|0}; return f'); |
|
37 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
38 assertEq(f(0),0); |
|
39 assertEq(f(0x7fff),0x7fff); |
|
40 assertEq(f(0xffff),-1); |
|
41 assertEq(f(0x10000),0); |
|
42 |
|
43 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i32[0] = i; return u16[0]|0}; return f'); |
|
44 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
45 assertEq(f(0),0); |
|
46 assertEq(f(0x7fff),0x7fff); |
|
47 assertEq(f(0xffff),0xffff); |
|
48 assertEq(f(0x10000),0); |
|
49 |
|
50 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i32[0] = i; return i32[0]|0}; return f'); |
|
51 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
52 assertEq(f(0),0); |
|
53 assertEq(f(0x7fffffff),0x7fffffff); |
|
54 assertEq(f(0xffffffff),-1); |
|
55 assertEq(f(0x100000000),0); |
|
56 |
|
57 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i32[0] = i; return u32[0]|0}; return f'); |
|
58 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
59 assertEq(f(0),0); |
|
60 assertEq(f(0x7fffffff),0x7fffffff); |
|
61 assertEq(f(0xffffffff),-1); |
|
62 assertEq(f(0x100000000),0); |
|
63 |
|
64 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i32[0] = i; return i8[0]|0}; return f'); |
|
65 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
66 assertEq(f(0),0); |
|
67 assertEq(f(0x7f),0x7f); |
|
68 assertEq(f(0xff),-1); |
|
69 assertEq(f(0x100),0); |
|
70 |
|
71 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i32[0] = i; return u8[0]|0}; return f'); |
|
72 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
73 assertEq(f(0),0); |
|
74 assertEq(f(0x7f),0x7f); |
|
75 assertEq(f(0xff),0xff); |
|
76 assertEq(f(0x100),0); |
|
77 |
|
78 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i8[0] = i; return i8[0]|0}; return f'); |
|
79 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
80 assertEq(f(0),0); |
|
81 assertEq(f(0x7f),0x7f); |
|
82 assertEq(f(0xff),-1); |
|
83 assertEq(f(0x100),0); |
|
84 |
|
85 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; i8[0] = i; return u8[0]|0}; return f'); |
|
86 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
87 assertEq(f(0),0); |
|
88 assertEq(f(0x7f),0x7f); |
|
89 assertEq(f(0xff),0xff); |
|
90 assertEq(f(0x100),0); |
|
91 |
|
92 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i,j) {i=i|0;j=+j; f64[i>>3] = j; return (~~+f64[i>>3])|0}; return f'); |
|
93 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
94 assertEq(f(0, 1.3), 1); |
|
95 assertEq(f(4088, 2.5), 2); |
|
96 assertEq(f(4096, 3.8), 0); |
|
97 |
|
98 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i,j) {i=i|0;j=+j; f64[i>>3] = j; return (~~f64[i>>3])|0}; return f'); |
|
99 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
100 assertEq(f(0, 1.3), 1); |
|
101 assertEq(f(4088, 2.5), 2); |
|
102 assertEq(f(4096, 3.8), 0); |
|
103 |
|
104 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i,j) {i=i|0;j=+j; f64[i>>3] = j; return +f64[i>>3]}; return f'); |
|
105 var f = asmLink(code, this, null, new ArrayBuffer(4096)); |
|
106 assertEq(f(0, 1.3), 1.3); |
|
107 assertEq(f(4088, 2.5), 2.5); |
|
108 assertEq(f(4096, 3.8), NaN); |
|
109 |
|
110 var i32 = new Int32Array(4096); |
|
111 i32[0] = 42; |
|
112 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i32[1] = i32[0] }; return f'), this, null, i32.buffer)(); |
|
113 assertEq(i32[1], 42); |
|
114 |
|
115 var f64 = new Float64Array(4096); |
|
116 f64[0] = 42; |
|
117 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f64[1] = f64[0] }; return f'), this, null, f64.buffer)(); |
|
118 assertEq(f64[1], 42); |
|
119 |
|
120 var i32 = new Int32Array(4096/4); |
|
121 i32[0] = 13; |
|
122 i32[1] = 0xfffeeee; |
|
123 var f = asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; return i32[((i<<2)+1)>>2]|0 }; return f'), this, null, i32.buffer); |
|
124 assertEq(f(0), 13); |
|
125 assertEq(f(1), 0xfffeeee); |
|
126 var f = asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; return i32[((i<<2)+2)>>2]|0 }; return f'), this, null, i32.buffer); |
|
127 assertEq(f(0), 13); |
|
128 assertEq(f(1), 0xfffeeee); |
|
129 var f = asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; return i32[(i<<1)>>2]|0 }; return f'), this, null, i32.buffer); |
|
130 assertEq(f(0), 13); |
|
131 assertEq(f(1), 13); |
|
132 assertEq(f(2), 0xfffeeee); |
|
133 assertEq(f(3), 0xfffeeee); |
|
134 |
|
135 var f = asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; return i32[(i<<2)>>2]|0 }; return f'), this, null, i32.buffer); |
|
136 assertEq(f(0), 13); |
|
137 assertEq(f(1), 0xfffeeee); |
|
138 |
|
139 var f = asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) {i=i|0; return i32[((i<<2)+4)>>2]|0 }; return f'), this, null, i32.buffer); |
|
140 assertEq(f(0), 0xfffeeee); |
|
141 |
|
142 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u8[7&0xffff] = 41 } return f'), this, null, BUF_64KB)(); |
|
143 assertEq(new Uint8Array(BUF_64KB)[7], 41); |
|
144 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i8[7&0xffff] = -41 } return f'), this, null, BUF_64KB)(); |
|
145 assertEq(new Int8Array(BUF_64KB)[7], -41); |
|
146 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u16[(6&0xffff)>>1] = 0xabc } return f'), this, null, BUF_64KB)(); |
|
147 assertEq(new Uint16Array(BUF_64KB)[3], 0xabc); |
|
148 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i16[(6&0xffff)>>1] = -0xabc } return f'), this, null, BUF_64KB)(); |
|
149 assertEq(new Int16Array(BUF_64KB)[3], -0xabc); |
|
150 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u32[(4&0xffff)>>2] = 0xabcde } return f'), this, null, BUF_64KB)(); |
|
151 assertEq(new Uint32Array(BUF_64KB)[1], 0xabcde); |
|
152 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i32[(4&0xffff)>>2] = -0xabcde } return f'), this, null, BUF_64KB)(); |
|
153 assertEq(new Int32Array(BUF_64KB)[1], -0xabcde); |
|
154 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f32[(4&0xffff)>>2] = 1.0 } return f'), this, null, BUF_64KB)(); |
|
155 assertEq(new Float32Array(BUF_64KB)[1], 1.0); |
|
156 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f64[(8&0xffff)>>3] = 1.3 } return f'), this, null, BUF_64KB)(); |
|
157 assertEq(new Float64Array(BUF_64KB)[1], 1.3); |
|
158 |
|
159 new Float32Array(BUF_64KB)[1] = 1.0; |
|
160 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f32[(4&0xffff)>>2] } return f'), this, null, BUF_64KB)(), 1.0); |
|
161 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'var toFloat32 = glob.Math.fround; function f() { return toFloat32(f32[(4&0xffff)>>2]) } return f'), this, null, BUF_64KB)(), 1.0); |
|
162 new Float64Array(BUF_64KB)[1] = 1.3; |
|
163 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f64[(8&0xffff)>>3] } return f'), this, null, BUF_64KB)(), 1.3); |
|
164 |
|
165 asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; u8[255]; u8[i] } return f'); |
|
166 asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; u8[i&0xff]; u8[255] } return f'); |
|
167 asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; u32[63]; u32[i>>2] } return f'); |
|
168 asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; u32[i>>2]; u32[63] } return f'); |
|
169 |
|
170 var code = asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; u32[64] } return f'); |
|
171 asmLink(code, this, null, new ArrayBuffer(4096)); |
|
172 |
|
173 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; u32[12] = i } return f'), this, null, BUF_64KB)(11); |
|
174 assertEq(new Int32Array(BUF_64KB)[12], 11); |
|
175 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[12]|0 } return f'), this, null, BUF_64KB)(), 11); |
|
176 new Float64Array(BUF_64KB)[0] = 3.5; |
|
177 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +-f64[0] } return f'), this, null, BUF_64KB)(), -3.5); |
|
178 |
|
179 // Test constant loads. |
|
180 var buf = new ArrayBuffer(8192); |
|
181 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u8[1] = -1 } return f'), this, null, buf)(); |
|
182 assertEq(new Uint8Array(buf)[0], 0); |
|
183 assertEq(new Uint8Array(buf)[1], 255); |
|
184 assertEq(new Uint8Array(buf)[2], 0); |
|
185 var buf = new ArrayBuffer(8192); |
|
186 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u8[4095] = -1 } return f'), this, null, buf)(); |
|
187 assertEq(new Uint8Array(buf)[4094], 0); |
|
188 assertEq(new Uint8Array(buf)[4095], 255); |
|
189 assertEq(new Uint8Array(buf)[4096], 0); |
|
190 var buf = new ArrayBuffer(8192); |
|
191 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u8[4096] = -1 } return f'), this, null, buf)(); |
|
192 assertEq(new Uint8Array(buf)[4095], 0); |
|
193 assertEq(new Uint8Array(buf)[4096], 255); |
|
194 assertEq(new Uint8Array(buf)[4097], 0); |
|
195 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u8[8192] = -1 } return f'), this, null, buf); |
|
196 var buf = new ArrayBuffer(262144); |
|
197 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u8[258048] = -1 } return f'), this, null, buf)(); |
|
198 assertEq(new Uint8Array(buf)[258047], 0); |
|
199 assertEq(new Uint8Array(buf)[258048], 255); |
|
200 assertEq(new Uint8Array(buf)[258049], 0); |
|
201 |
|
202 var buf = new ArrayBuffer(8192); |
|
203 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i8[1] = -1 } return f'), this, null, buf)(); |
|
204 assertEq(new Int8Array(buf)[0], 0); |
|
205 assertEq(new Int8Array(buf)[1], -1); |
|
206 assertEq(new Int8Array(buf)[2], 0); |
|
207 var buf = new ArrayBuffer(8192); |
|
208 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i8[4095] = -1 } return f'), this, null, buf)(); |
|
209 assertEq(new Int8Array(buf)[4094], 0); |
|
210 assertEq(new Int8Array(buf)[4095], -1); |
|
211 assertEq(new Int8Array(buf)[4096], 0); |
|
212 var buf = new ArrayBuffer(8192); |
|
213 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i8[4096] = -1 } return f'), this, null, buf)(); |
|
214 assertEq(new Int8Array(buf)[4095], 0); |
|
215 assertEq(new Int8Array(buf)[4096], -1); |
|
216 assertEq(new Int8Array(buf)[4097], 0); |
|
217 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i8[8192] = -1 } return f'), this, null, buf); |
|
218 var buf = new ArrayBuffer(262144); |
|
219 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i8[258048] = -1 } return f'), this, null, buf)(); |
|
220 assertEq(new Int8Array(buf)[258047], 0); |
|
221 assertEq(new Int8Array(buf)[258048], -1); |
|
222 assertEq(new Int8Array(buf)[258049], 0); |
|
223 |
|
224 var buf = new ArrayBuffer(8192); |
|
225 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u16[1] = -1 } return f'), this, null, buf)(); |
|
226 assertEq(new Uint16Array(buf)[0], 0); |
|
227 assertEq(new Uint16Array(buf)[1], 65535); |
|
228 assertEq(new Uint16Array(buf)[2], 0); |
|
229 var buf = new ArrayBuffer(8192); |
|
230 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u16[2047] = -1 } return f'), this, null, buf)(); |
|
231 assertEq(new Uint16Array(buf)[2046], 0); |
|
232 assertEq(new Uint16Array(buf)[2047], 65535); |
|
233 assertEq(new Uint16Array(buf)[2048], 0); |
|
234 var buf = new ArrayBuffer(8192); |
|
235 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u16[2048] = -1 } return f'), this, null, buf)(); |
|
236 assertEq(new Uint16Array(buf)[2047], 0); |
|
237 assertEq(new Uint16Array(buf)[2048], 65535); |
|
238 assertEq(new Uint16Array(buf)[2049], 0); |
|
239 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u16[4096] = -1 } return f'), this, null, buf); |
|
240 var buf = new ArrayBuffer(262144); |
|
241 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u16[126976] = -1 } return f'), this, null, buf)(); |
|
242 assertEq(new Uint16Array(buf)[126975], 0); |
|
243 assertEq(new Uint16Array(buf)[126976], 65535); |
|
244 assertEq(new Uint16Array(buf)[126977], 0); |
|
245 |
|
246 var buf = new ArrayBuffer(8192); |
|
247 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i16[1] = -1 } return f'), this, null, buf)(); |
|
248 assertEq(new Int16Array(buf)[0], 0); |
|
249 assertEq(new Int16Array(buf)[1], -1); |
|
250 assertEq(new Int16Array(buf)[2], 0); |
|
251 var buf = new ArrayBuffer(8192); |
|
252 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i16[2047] = -1 } return f'), this, null, buf)(); |
|
253 assertEq(new Int16Array(buf)[2046], 0); |
|
254 assertEq(new Int16Array(buf)[2047], -1); |
|
255 assertEq(new Int16Array(buf)[2048], 0); |
|
256 var buf = new ArrayBuffer(8192); |
|
257 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i16[2048] = -1 } return f'), this, null, buf)(); |
|
258 assertEq(new Int16Array(buf)[2047], 0); |
|
259 assertEq(new Int16Array(buf)[2048], -1); |
|
260 assertEq(new Int16Array(buf)[2049], 0); |
|
261 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i16[4096] = -1 } return f'), this, null, buf); |
|
262 var buf = new ArrayBuffer(262144); |
|
263 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i16[126976] = -1 } return f'), this, null, buf)(); |
|
264 assertEq(new Int16Array(buf)[126975], 0); |
|
265 assertEq(new Int16Array(buf)[126976], -1); |
|
266 assertEq(new Int16Array(buf)[126977], 0); |
|
267 |
|
268 var buf = new ArrayBuffer(8192); |
|
269 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u32[1] = -1 } return f'), this, null, buf)(); |
|
270 assertEq(new Uint32Array(buf)[0], 0); |
|
271 assertEq(new Uint32Array(buf)[1], 4294967295); |
|
272 assertEq(new Uint32Array(buf)[2], 0); |
|
273 var buf = new ArrayBuffer(8192); |
|
274 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u32[1023] = -1 } return f'), this, null, buf)(); |
|
275 assertEq(new Uint32Array(buf)[1022], 0); |
|
276 assertEq(new Uint32Array(buf)[1023], 4294967295); |
|
277 assertEq(new Uint32Array(buf)[1024], 0); |
|
278 var buf = new ArrayBuffer(8192); |
|
279 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u32[1024] = -1 } return f'), this, null, buf)(); |
|
280 assertEq(new Uint32Array(buf)[1023], 0); |
|
281 assertEq(new Uint32Array(buf)[1024], 4294967295); |
|
282 assertEq(new Uint32Array(buf)[1025], 0); |
|
283 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u32[2048] = -1 } return f'), this, null, buf); |
|
284 var buf = new ArrayBuffer(262144); |
|
285 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u32[61440] = -1 } return f'), this, null, buf)(); |
|
286 assertEq(new Uint32Array(buf)[61439], 0); |
|
287 assertEq(new Uint32Array(buf)[61440], 4294967295); |
|
288 assertEq(new Uint32Array(buf)[61441], 0); |
|
289 |
|
290 var buf = new ArrayBuffer(8192); |
|
291 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i32[1] = -1 } return f'), this, null, buf)(); |
|
292 assertEq(new Int32Array(buf)[0], 0); |
|
293 assertEq(new Int32Array(buf)[1], -1); |
|
294 assertEq(new Int32Array(buf)[2], 0); |
|
295 var buf = new ArrayBuffer(8192); |
|
296 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i32[1023] = -1 } return f'), this, null, buf)(); |
|
297 assertEq(new Int32Array(buf)[1022], 0); |
|
298 assertEq(new Int32Array(buf)[1023], -1); |
|
299 assertEq(new Int32Array(buf)[124], 0); |
|
300 var buf = new ArrayBuffer(8192); |
|
301 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i32[1024] = -1 } return f'), this, null, buf)(); |
|
302 assertEq(new Int32Array(buf)[1023], 0); |
|
303 assertEq(new Int32Array(buf)[1024], -1); |
|
304 assertEq(new Int32Array(buf)[1025], 0); |
|
305 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i32[2048] = -1 } return f'), this, null, buf); |
|
306 var buf = new ArrayBuffer(262144); |
|
307 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i32[61440] = -1 } return f'), this, null, buf)(); |
|
308 assertEq(new Int32Array(buf)[61439], 0); |
|
309 assertEq(new Int32Array(buf)[61440], -1); |
|
310 assertEq(new Int32Array(buf)[61441], 0); |
|
311 |
|
312 var buf = new ArrayBuffer(8192); |
|
313 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f32[1] = -1.0 } return f'), this, null, buf)(); |
|
314 assertEq(new Int32Array(buf)[0], 0); |
|
315 assertEq(new Float32Array(buf)[1], -1.0); |
|
316 assertEq(new Int32Array(buf)[2], 0); |
|
317 var buf = new ArrayBuffer(8192); |
|
318 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f32[1023] = -1.0 } return f'), this, null, buf)(); |
|
319 assertEq(new Int32Array(buf)[1022], 0); |
|
320 assertEq(new Float32Array(buf)[1023], -1.0); |
|
321 assertEq(new Int32Array(buf)[124], 0); |
|
322 var buf = new ArrayBuffer(8192); |
|
323 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f32[1024] = -1.0 } return f'), this, null, buf)(); |
|
324 assertEq(new Int32Array(buf)[1023], 0); |
|
325 assertEq(new Float32Array(buf)[1024], -1.0); |
|
326 assertEq(new Int32Array(buf)[1025], 0); |
|
327 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f32[2048] = -1.0 } return f'), this, null, buf); |
|
328 var buf = new ArrayBuffer(262144); |
|
329 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f32[61440] = -1.0 } return f'), this, null, buf)(); |
|
330 assertEq(new Float32Array(buf)[61439], 0.0); |
|
331 assertEq(new Float32Array(buf)[61440], -1.0); |
|
332 assertEq(new Float32Array(buf)[61441], 0.0); |
|
333 |
|
334 var buf = new ArrayBuffer(8192); |
|
335 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f64[1] = -1.0 } return f'), this, null, buf)(); |
|
336 assertEq(new Float64Array(buf)[0], 0.0); |
|
337 assertEq(new Float64Array(buf)[1], -1.0); |
|
338 assertEq(new Float64Array(buf)[2], 0.0); |
|
339 var buf = new ArrayBuffer(8192); |
|
340 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f64[511] = -1.0 } return f'), this, null, buf)(); |
|
341 assertEq(new Float64Array(buf)[510], 0.0); |
|
342 assertEq(new Float64Array(buf)[511], -1.0); |
|
343 assertEq(new Float64Array(buf)[512], 0.0); |
|
344 var buf = new ArrayBuffer(8192); |
|
345 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f64[512] = -1.0 } return f'), this, null, buf)(); |
|
346 assertEq(new Float64Array(buf)[511], 0.0); |
|
347 assertEq(new Float64Array(buf)[512], -1.0); |
|
348 assertEq(new Float64Array(buf)[513], 0.0); |
|
349 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f64[1024] = -1.0 } return f'), this, null, buf); |
|
350 var buf = new ArrayBuffer(262144); |
|
351 asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f64[28672] = -1.0 } return f'), this, null, buf)(); |
|
352 assertEq(new Float64Array(buf)[28671], 0.0); |
|
353 assertEq(new Float64Array(buf)[28672], -1.0); |
|
354 assertEq(new Float64Array(buf)[28673], 0.0); |
|
355 |
|
356 |
|
357 var buf = new ArrayBuffer(8192); |
|
358 new Uint8Array(buf)[1] = -1; |
|
359 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[1]|0; } return f'), this, null, buf)(),255); |
|
360 new Int8Array(buf)[1] = -1; |
|
361 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i8[1]|0; } return f'), this, null, buf)(),-1); |
|
362 var buf = new ArrayBuffer(262144); |
|
363 new Uint8Array(buf)[126976] = -1; |
|
364 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[126976]|0; } return f'), this, null, buf)(),255); |
|
365 new Int8Array(buf)[126976] = -1; |
|
366 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i8[126976]|0; } return f'), this, null, buf)(),-1); |
|
367 |
|
368 var buf = new ArrayBuffer(8192); |
|
369 new Uint16Array(buf)[1] = -1; |
|
370 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u16[1]|0; } return f'), this, null, buf)(),65535); |
|
371 new Int16Array(buf)[1] = -1; |
|
372 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i16[1]|0; } return f'), this, null, buf)(),-1); |
|
373 var buf = new ArrayBuffer(262144); |
|
374 new Uint16Array(buf)[126976] = -1; |
|
375 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u16[126976]|0; } return f'), this, null, buf)(),65535); |
|
376 new Int16Array(buf)[126976] = -1; |
|
377 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i16[126976]|0; } return f'), this, null, buf)(),-1); |
|
378 |
|
379 var buf = new ArrayBuffer(8192); |
|
380 new Uint32Array(buf)[1] = -1; |
|
381 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[1]|0; } return f'), this, null, buf)(),-1); |
|
382 new Int32Array(buf)[1] = -1; |
|
383 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[1]|0; } return f'), this, null, buf)(),-1); |
|
384 var buf = new ArrayBuffer(262144); |
|
385 new Int32Array(buf)[61440] = -1; |
|
386 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[61440]|0; } return f'), this, null, buf)(),-1); |
|
387 |
|
388 var buf = new ArrayBuffer(8192); |
|
389 new Float32Array(buf)[1] = -1.0; |
|
390 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f32[1]; } return f'), this, null, buf)(),-1.0); |
|
391 new Float32Array(buf)[1023] = -1.0; |
|
392 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f32[1023]; } return f'), this, null, buf)(),-1.0); |
|
393 new Float32Array(buf)[1024] = -1.0; |
|
394 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f32[1024]; } return f'), this, null, buf)(),-1.0); |
|
395 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f32[2048]; } return f'), this, null, buf); |
|
396 var buf = new ArrayBuffer(262144); |
|
397 new Float32Array(buf)[61440] = -1.0; |
|
398 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f32[61440]; } return f'), this, null, buf)(),-1.0); |
|
399 |
|
400 var buf = new ArrayBuffer(8192); |
|
401 new Float64Array(buf)[1] = -1.0; |
|
402 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f64[1]; } return f'), this, null, buf)(),-1.0); |
|
403 new Float64Array(buf)[511] = -1.0; |
|
404 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f64[511]; } return f'), this, null, buf)(),-1.0); |
|
405 new Float64Array(buf)[512] = -1.0; |
|
406 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f64[512]; } return f'), this, null, buf)(),-1.0); |
|
407 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f64[1024]; } return f'), this, null, buf); |
|
408 var buf = new ArrayBuffer(262144); |
|
409 new Float64Array(buf)[28672] = -1.0; |
|
410 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f64[28672]; } return f'), this, null, buf)(),-1.0); |
|
411 |
|
412 // Test bitwise-and optimizations. |
|
413 var buf = new ArrayBuffer(8192); |
|
414 new Uint8Array(buf)[8191] = -1; |
|
415 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[8191&8191]|0; } return f'), this, null, buf)(),255); |
|
416 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[(8191&8191)>>0]|0; } return f'), this, null, buf)(),255); |
|
417 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u8[8192&8191] = -1; u8[0] = 0; return u8[8192&8191]|0; } return f'), this, null, buf)(),0); |
|
418 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u8[(8192&8191)>>0] = -1; u8[0] = 0; return u8[(8192&8191)>>0]|0; } return f'), this, null, buf)(),0); |
|
419 new Int8Array(buf)[8191] = -1; |
|
420 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i8[8191&8191]|0; } return f'), this, null, buf)(),-1); |
|
421 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i8[(8191&8191)>>0]|0; } return f'), this, null, buf)(),-1); |
|
422 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i8[8192&8191] = -1; i8[0] = 0; return i8[8192&8191]|0; } return f'), this, null, buf)(),0); |
|
423 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i8[(8192&8191)>>0] = -1; i8[0] = 0; return i8[(8192&8191)>>0]|0; } return f'), this, null, buf)(),0); |
|
424 var buf = new ArrayBuffer(8192); |
|
425 new Uint16Array(buf)[4095] = -1; |
|
426 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u16[(8190&8191)>>1]|0; } return f'), this, null, buf)(),65535); |
|
427 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u16[(8191&8191)>>1]|0; } return f'), this, null, buf)(),65535); |
|
428 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u16[(8192&8191)>>1] = -1; u16[0] = 0; return u16[(8192&8191)>>1]|0; } return f'), this, null, buf)(),0); |
|
429 new Int16Array(buf)[4095] = -1; |
|
430 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i16[(8190&8191)>>1]|0; } return f'), this, null, buf)(),-1); |
|
431 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i16[(8191&8191)>>1]|0; } return f'), this, null, buf)(),-1); |
|
432 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i16[(8192&8191)>>1] = -1; i16[0] = 0; return i16[(8192&8191)>>1]|0; } return f'), this, null, buf)(),0); |
|
433 |
|
434 var buf = new ArrayBuffer(8192); |
|
435 new Uint32Array(buf)[2047] = -1; |
|
436 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(8188&8191)>>2]|0; } return f'), this, null, buf)(),-1); |
|
437 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(8191&8191)>>2]|0; } return f'), this, null, buf)(),-1); |
|
438 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { u32[(8192&8191)>>2] = -1; u32[0] = 0; return u32[(8192&8191)>>2]|0; } return f'), this, null, buf)(),0); |
|
439 new Int32Array(buf)[2047] = -1; |
|
440 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[(8188&8191)>>2]|0; } return f'), this, null, buf)(),-1); |
|
441 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[(8191&8191)>>2]|0; } return f'), this, null, buf)(),-1); |
|
442 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { i32[(8192&8191)>>2] = -1; i32[0] = 0; return i32[(8192&8191)>>2]|0; } return f'), this, null, buf)(),0); |
|
443 |
|
444 var buf = new ArrayBuffer(8192); |
|
445 new Float32Array(buf)[2047] = -1.0; |
|
446 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f32[(8188&8191)>>2]; } return f'), this, null, buf)(),-1.0); |
|
447 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f32[(8191&8191)>>2]; } return f'), this, null, buf)(),-1.0); |
|
448 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f32[(8192&8191)>>2] = -1.0; f32[0] = 0.0; return +f32[(8192&8191)>>2]; } return f'), this, null, buf)(),0.0); |
|
449 |
|
450 var buf = new ArrayBuffer(8192); |
|
451 new Float64Array(buf)[1023] = -1.0; |
|
452 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f64[(8184&8191)>>3]; } return f'), this, null, buf)(),-1.0); |
|
453 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return +f64[(8191&8191)>>3]; } return f'), this, null, buf)(),-1.0); |
|
454 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { f64[(8192&8191)>>3] = -1.0; f64[0] = 0.0; return +f64[(8192&8191)>>3]; } return f'), this, null, buf)(),0.0); |
|
455 |
|
456 // Bug 913867 |
|
457 var buf = new ArrayBuffer(8192); |
|
458 new Int32Array(buf)[0] = 0x55aa5a5a; |
|
459 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[(0&0)>>2]|0; } return f'), this, null, buf)(),0x55aa5a5a); |
|
460 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return i32[(4&0)>>2]|0; } return f'), this, null, buf)(),0x55aa5a5a); |
|
461 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f1() { i32[0] = 1; return 8; }; function f() { return i32[((f1()|0)&0)>>2]|0; } return f'), this, null, buf)(),1); |
|
462 assertEq(new Int32Array(buf)[0], 1); |
|
463 |
|
464 |
|
465 // Bug 882012 |
|
466 assertEq(asmLink(asmCompile('stdlib', 'foreign', 'heap', USE_ASM + "var id=foreign.id;var doubles=new stdlib.Float64Array(heap);function g(){doubles[0]=+id(2.0);return +doubles[0];}return g"), this, {id: function(x){return x;}}, BUF_64KB)(), 2.0); |
|
467 |
|
468 |
|
469 // Some literal constant paths. |
|
470 |
|
471 var buf = new ArrayBuffer(8192); |
|
472 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[0>>4294967295]|0; } return f'); |
|
473 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[0>>-1]|0; } return f'); |
|
474 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[0>>0x80000000]|0; } return f'); |
|
475 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[0>>-2147483648]|0; } return f'); |
|
476 |
|
477 new Uint32Array(buf)[0] = 0xAA; |
|
478 new Uint32Array(buf)[0x5A>>2] = 0xA5; |
|
479 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(0x5A&4294967295)>>2]|0; } return f'), this, null, buf)(),0xA5); |
|
480 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=4294967295; function f() { return u32[(0x5A&i)>>2]|0; } return f'), this, null, buf)(),0xA5); |
|
481 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(0x5A&-1)>>2]|0; } return f'), this, null, buf)(),0xA5); |
|
482 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-1; function f() { return u32[(0x5A&i)>>2]|0; } return f'), this, null, buf)(),0xA5); |
|
483 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(0x5A&0x80000000)>>2]|0; } return f'), this, null, buf)(),0xAA); |
|
484 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=0x80000000; function f() { return u32[(0x5A&i)>>2]|0; } return f'), this, null, buf)(),0xAA); |
|
485 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(0x5A&-2147483648)>>2]|0; } return f'), this, null, buf)(),0xAA); |
|
486 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-2147483648; function f() { return u32[(0x5A&i)>>2]|0; } return f'), this, null, buf)(),0xAA); |
|
487 |
|
488 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(4294967295&0x5A)>>2]|0; } return f'), this, null, buf)(),0xA5); |
|
489 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=4294967295; function f() { return u32[(i&0x5A)>>2]|0; } return f'), this, null, buf)(),0xA5); |
|
490 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(-1&0x5A)>>2]|0; } return f'), this, null, buf)(),0xA5); |
|
491 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-1; function f() { return u32[(i&0x5A)>>2]|0; } return f'), this, null, buf)(),0xA5); |
|
492 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(0x80000000&0x5A)>>2]|0; } return f'), this, null, buf)(),0xAA); |
|
493 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=0x80000000; function f() { return u32[(i&0x5A)>>2]|0; } return f'), this, null, buf)(),0xAA); |
|
494 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[(-2147483648&0x5A)>>2]|0; } return f'), this, null, buf)(),0xAA); |
|
495 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-2147483648; function f() { return u32[(-2147483648&0x5A)>>2]|0; } return f'), this, null, buf)(),0xAA); |
|
496 |
|
497 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[4294967295>>2]|0; } return f'), this, null, buf)(),0); |
|
498 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=4294967295; function f() { return u32[i>>2]|0; } return f'), this, null, buf)(),0); |
|
499 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[-1>>2]|0; } return f'), this, null, buf)(),0); |
|
500 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-1; function f() { return u32[i>>2]|0; } return f'), this, null, buf)(),0); |
|
501 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[0x80000000>>2]|0; } return f'), this, null, buf)(),0); |
|
502 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=0x80000000; function f() { return u32[i>>2]|0; } return f'), this, null, buf)(),0); |
|
503 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u32[-2147483648>>2]|0; } return f'), this, null, buf)(),0); |
|
504 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-2147483648; function f() { return u32[-2147483648>>2]|0; } return f'), this, null, buf)(),0); |
|
505 |
|
506 var buf = new ArrayBuffer(8192); |
|
507 new Uint8Array(buf)[0] = 0xAA; |
|
508 new Uint8Array(buf)[0x5A] = 0xA5; |
|
509 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x5A&4294967295]|0; } return f'), this, null, buf)(),0xA5); |
|
510 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=4294967295; function f() { return u8[0x5A&i]|0; } return f'), this, null, buf)(),0xA5); |
|
511 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x5A&-1]|0; } return f'), this, null, buf)(),0xA5); |
|
512 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-1; function f() { return u8[0x5A&i]|0; } return f'), this, null, buf)(),0xA5); |
|
513 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x5A&0x80000000]|0; } return f'), this, null, buf)(),0xAA); |
|
514 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=0x80000000; function f() { return u8[0x5A&i]|0; } return f'), this, null, buf)(),0xAA); |
|
515 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x5A&-2147483648]|0; } return f'), this, null, buf)(),0xAA); |
|
516 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-2147483648; function f() { return u8[0x5A&i]|0; } return f'), this, null, buf)(),0xAA); |
|
517 |
|
518 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[4294967295&0x5A]|0; } return f'), this, null, buf)(),0xA5); |
|
519 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=4294967295; function f() { return u8[i&0x5A]|0; } return f'), this, null, buf)(),0xA5); |
|
520 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[-1&0x5A]|0; } return f'), this, null, buf)(),0xA5); |
|
521 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-1; function f() { return u8[i&0x5A]|0; } return f'), this, null, buf)(),0xA5); |
|
522 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x80000000&0x5A]|0; } return f'), this, null, buf)(),0xAA); |
|
523 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=0x80000000; function f() { return u8[i&0x5A]|0; } return f'), this, null, buf)(),0xAA); |
|
524 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[-2147483648&0x5A]|0; } return f'), this, null, buf)(),0xAA); |
|
525 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-2147483648; function f() { return u8[i&0x5A]|0; } return f'), this, null, buf)(),0xAA); |
|
526 |
|
527 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[4294967295]|0; } return f'); |
|
528 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=4294967295; function f() { return u8[i]|0; } return f'); |
|
529 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[-1]|0; } return f'); |
|
530 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-1; function f() { return u8[i]|0; } return f'); |
|
531 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x80000000]|0; } return f'); |
|
532 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=0x80000000; function f() { return u8[i]|0; } return f'); |
|
533 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[-2147483648]|0; } return f'); |
|
534 assertAsmTypeFail('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-2147483648; function f() { return u8[i]|0; } return f'); |
|
535 |
|
536 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[4294967295>>0]|0; } return f'), this, null, buf)(),0); |
|
537 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=4294967295; function f() { return u8[i>>0]|0; } return f'), this, null, buf)(),0); |
|
538 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[-1>>0]|0; } return f'), this, null, buf)(),0); |
|
539 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-1; function f() { return u8[i>>0]|0; } return f'), this, null, buf)(),0); |
|
540 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x80000000>>0]|0; } return f'), this, null, buf)(),0); |
|
541 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=0x80000000; function f() { return u8[i>>0]|0; } return f'), this, null, buf)(),0); |
|
542 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[-2147483648>>0]|0; } return f'), this, null, buf)(),0); |
|
543 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'const i=-2147483648; function f() { return u8[i>>0]|0; } return f'), this, null, buf)(),0); |
|
544 |
|
545 // GVN checks |
|
546 var buf = new ArrayBuffer(8192); |
|
547 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'var i=0; function f() { var x = 0, y = 0; u8[0] = 1; u8[1] = 2; x = 0|u8[i]; i = x; y = 0|u8[i]; return y|0;} return f'), this, null, buf)(),2); |
|
548 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'var i=0; function f() { var x = 0, y = 0; u8[0] = 1; u8[1] = 2; x = 0|u8[i]; y = 0|u8[i]; return (x+y)|0;} return f'), this, null, buf)(),2); |
|
549 |
|
550 // Heap length constraints |
|
551 var buf = new ArrayBuffer(0x0fff); |
|
552 assertAsmLinkAlwaysFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
553 var buf = new ArrayBuffer(0x1000); |
|
554 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
555 var buf = new ArrayBuffer(0x1010); |
|
556 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
557 var buf = new ArrayBuffer(0x2000); |
|
558 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
559 var buf = new ArrayBuffer(0xfe000); |
|
560 new Uint8Array(buf)[0xfdfff] = 0xAA; |
|
561 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
562 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0xfdfff),0xAA); |
|
563 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0xfe000),0); |
|
564 var buf = new ArrayBuffer(0xfe010); |
|
565 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
566 var buf = new ArrayBuffer(0xff000); |
|
567 new Uint8Array(buf)[0xfefff] = 0xAA; |
|
568 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
569 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0xfefff),0xAA); |
|
570 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0xff000),0); |
|
571 var buf = new ArrayBuffer(0xff800); |
|
572 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
573 var buf = new ArrayBuffer(0x100000); |
|
574 new Uint8Array(buf)[0xfffff] = 0xAA; |
|
575 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
576 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0xfffff),0xAA); |
|
577 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x100000),0); |
|
578 var buf = new ArrayBuffer(0x104000); |
|
579 new Uint8Array(buf)[0x103fff] = 0xAA; |
|
580 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x103fff]|0; } return f'), this, null, buf)(),0xAA); |
|
581 var buf = new ArrayBuffer(0x3f8000); |
|
582 new Uint8Array(buf)[0x3f7fff] = 0xAA; |
|
583 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
584 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x3f7fff),0xAA); |
|
585 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x3f8000),0); |
|
586 var buf = new ArrayBuffer(0x3fc000); // 4080K |
|
587 new Uint8Array(buf)[0x3fbfff] = 0xAA; |
|
588 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
589 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x3fbfff),0xAA); |
|
590 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x3fc000),0); |
|
591 var buf = new ArrayBuffer(0x3fe000); |
|
592 assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
593 var buf = new ArrayBuffer(0x410000); |
|
594 new Uint8Array(buf)[0x40ffff] = 0xAA; |
|
595 assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x40ffff]|0; } return f'), this, null, buf)(),0xAA); |
|
596 // The rest are getting too large for regular testing. |
|
597 //var buf = new ArrayBuffer(0xfe8000); |
|
598 //assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
599 //var buf = new ArrayBuffer(0xff0000); // 16302K |
|
600 //new Uint8Array(buf)[0xfeffff] = 0xAA; |
|
601 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
602 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0xfeffff),0xAA); |
|
603 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0xff0000),0); |
|
604 //var buf = new ArrayBuffer(0xff8000); |
|
605 //assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
606 //var buf = new ArrayBuffer(0x3fb0000); |
|
607 //assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
608 //var buf = new ArrayBuffer(0x3fc0000); // 65280K |
|
609 //new Uint8Array(buf)[0x3fbffff] = 0xAA; |
|
610 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
611 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x3fbffff),0xAA); |
|
612 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x3fc0000),0); |
|
613 //var buf = new ArrayBuffer(0x3fe0000); |
|
614 //assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
615 //var buf = new ArrayBuffer(0xfe80000); |
|
616 //assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
617 //var buf = new ArrayBuffer(0xff00000); // 255M |
|
618 //new Uint8Array(buf)[0xfeffff] = 0xAA; |
|
619 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
620 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0xfeffff),0xAA); |
|
621 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0xff00000),0); |
|
622 //var buf = new ArrayBuffer(0xff80000); |
|
623 //assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
624 //var buf = new ArrayBuffer(0x10400000); |
|
625 //new Uint8Array(buf)[0x103fffff] = 0xAA; |
|
626 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f() { return u8[0x103fffff]|0; } return f'), this, null, buf)(),0xAA); |
|
627 //var buf = new ArrayBuffer(0x3fa00000); |
|
628 //assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
629 //var buf = new ArrayBuffer(0x3fc00000); // 1020M |
|
630 //new Uint8Array(buf)[0x3fbfffff] = 0xAA; |
|
631 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
632 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x3fbfffff),0xAA); |
|
633 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x3fc00000),0); |
|
634 //var buf = new ArrayBuffer(0x3fe00000); |
|
635 //assertAsmLinkFail(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf); |
|
636 //var buf = new ArrayBuffer(0x40000000); // 1024M |
|
637 //new Uint8Array(buf)[0x3fffffff] = 0xAA; |
|
638 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
639 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x3fffffff),0xAA); |
|
640 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x40000000),0); |
|
641 //var buf = new ArrayBuffer(0x4f000000); // 1264M - currently the largest possible heap length. |
|
642 //new Uint8Array(buf)[0x4effffff] = 0xAA; |
|
643 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0),0); |
|
644 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x4effffff),0xAA); |
|
645 //assertEq(asmLink(asmCompile('glob', 'imp', 'b', USE_ASM + HEAP_IMPORTS + 'function f(i) { i=i|0; return u8[i]|0; } return f'), this, null, buf)(0x4f000000),0); |
|
646 |