Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(692)

Side by Side Diff: test/mjsunit/wasm/wasm-constants.js

Issue 2440953002: [wasm] Binary 0xD: update encoding of opcodes, types, and add immediates. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Flags: --expose-wasm 5 // Flags: --expose-wasm
6 6
7 function bytes() { 7 function bytes() {
8 var buffer = new ArrayBuffer(arguments.length); 8 var buffer = new ArrayBuffer(arguments.length);
9 var view = new Uint8Array(buffer); 9 var view = new Uint8Array(buffer);
10 for (var i = 0; i < arguments.length; i++) { 10 for (var i = 0; i < arguments.length; i++) {
11 var val = arguments[i]; 11 var val = arguments[i];
12 if ((typeof val) == "string") val = val.charCodeAt(0); 12 if ((typeof val) == "string") val = val.charCodeAt(0);
13 view[i] = val | 0; 13 view[i] = val | 0;
14 } 14 }
15 return buffer; 15 return buffer;
16 } 16 }
17 17
18 // Header declaration constants 18 // Header declaration constants
19 var kWasmH0 = 0; 19 var kWasmH0 = 0;
20 var kWasmH1 = 0x61; 20 var kWasmH1 = 0x61;
21 var kWasmH2 = 0x73; 21 var kWasmH2 = 0x73;
22 var kWasmH3 = 0x6d; 22 var kWasmH3 = 0x6d;
23 23
24 var kWasmV0 = 0xC; 24 var kWasmV0 = 0xD;
25 var kWasmV1 = 0; 25 var kWasmV1 = 0;
26 var kWasmV2 = 0; 26 var kWasmV2 = 0;
27 var kWasmV3 = 0; 27 var kWasmV3 = 0;
28 28
29 var kHeaderSize = 8; 29 var kHeaderSize = 8;
30 var kPageSize = 65536; 30 var kPageSize = 65536;
31 31
32 function bytesWithHeader() { 32 function bytesWithHeader() {
33 var buffer = new ArrayBuffer(kHeaderSize + arguments.length); 33 var buffer = new ArrayBuffer(kHeaderSize + arguments.length);
34 var view = new Uint8Array(buffer); 34 var view = new Uint8Array(buffer);
35 view[0] = kWasmH0; 35 view[0] = kWasmH0;
36 view[1] = kWasmH1; 36 view[1] = kWasmH1;
37 view[2] = kWasmH2; 37 view[2] = kWasmH2;
38 view[3] = kWasmH3; 38 view[3] = kWasmH3;
39 view[4] = kWasmV0; 39 view[4] = kWasmV0;
40 view[5] = kWasmV1; 40 view[5] = kWasmV1;
41 view[6] = kWasmV2; 41 view[6] = kWasmV2;
42 view[7] = kWasmV3; 42 view[7] = kWasmV3;
43 for (var i = 0; i < arguments.length; i++) { 43 for (var i = 0; i < arguments.length; i++) {
44 var val = arguments[i]; 44 var val = arguments[i];
45 if ((typeof val) == "string") val = val.charCodeAt(0); 45 if ((typeof val) == "string") val = val.charCodeAt(0);
46 view[kHeaderSize + i] = val | 0; 46 view[kHeaderSize + i] = val | 0;
47 } 47 }
48 return buffer; 48 return buffer;
49 } 49 }
50 50
51 var kDeclNoLocals = 0; 51 let kDeclNoLocals = 0;
52 52
53 // Section declaration constants 53 // Section declaration constants
54 var kUnknownSectionCode = 0; 54 let kUnknownSectionCode = 0;
55 var kTypeSectionCode = 1; // Function signature declarations 55 let kTypeSectionCode = 1; // Function signature declarations
56 var kImportSectionCode = 2; // Import declarations 56 let kImportSectionCode = 2; // Import declarations
57 var kFunctionSectionCode = 3; // Function declarations 57 let kFunctionSectionCode = 3; // Function declarations
58 var kTableSectionCode = 4; // Indirect function table and other tables 58 let kTableSectionCode = 4; // Indirect function table and other tables
59 var kMemorySectionCode = 5; // Memory attributes 59 let kMemorySectionCode = 5; // Memory attributes
60 var kGlobalSectionCode = 6; // Global declarations 60 let kGlobalSectionCode = 6; // Global declarations
61 var kExportSectionCode = 7; // Exports 61 let kExportSectionCode = 7; // Exports
62 var kStartSectionCode = 8; // Start function declaration 62 let kStartSectionCode = 8; // Start function declaration
63 var kElementSectionCode = 9; // Elements section 63 let kElementSectionCode = 9; // Elements section
64 var kCodeSectionCode = 10; // Function code 64 let kCodeSectionCode = 10; // Function code
65 var kDataSectionCode = 11; // Data segments 65 let kDataSectionCode = 11; // Data segments
66 var kNameSectionCode = 12; // Name section (encoded as string) 66 let kNameSectionCode = 12; // Name section (encoded as string)
67 67
68 var kWasmFunctionTypeForm = 0x40; 68 let kWasmFunctionTypeForm = 0x60;
69 var kWasmAnyFunctionTypeForm = 0x20; 69 let kWasmAnyFunctionTypeForm = 0x70;
70 70
71 var kResizableMaximumFlag = 1; 71 let kResizableMaximumFlag = 1;
72 72
73 // Function declaration flags 73 // Function declaration flags
74 var kDeclFunctionName = 0x01; 74 let kDeclFunctionName = 0x01;
75 var kDeclFunctionImport = 0x02; 75 let kDeclFunctionImport = 0x02;
76 var kDeclFunctionLocals = 0x04; 76 let kDeclFunctionLocals = 0x04;
77 var kDeclFunctionExport = 0x08; 77 let kDeclFunctionExport = 0x08;
78 78
79 // Local types 79 // Local types
80 var kAstStmt = 0; 80 let kAstStmt = 0x40;
81 var kAstI32 = 1; 81 let kAstI32 = 0x7f;
82 var kAstI64 = 2; 82 let kAstI64 = 0x7e;
83 var kAstF32 = 3; 83 let kAstF32 = 0x7d;
84 var kAstF64 = 4; 84 let kAstF64 = 0x7c;
85 var kAstS128 = 5; 85 let kAstS128 = 0x7b;
86 86
87 var kExternalFunction = 0; 87 let kExternalFunction = 0;
88 var kExternalTable = 1; 88 let kExternalTable = 1;
89 var kExternalMemory = 2; 89 let kExternalMemory = 2;
90 var kExternalGlobal = 3; 90 let kExternalGlobal = 3;
91
92 let kTableZero = 0;
93 let kMemoryZero = 0;
91 94
92 // Useful signatures 95 // Useful signatures
93 var kSig_i_i = makeSig([kAstI32], [kAstI32]); 96 let kSig_i_i = makeSig([kAstI32], [kAstI32]);
94 var kSig_i_l = makeSig([kAstI64], [kAstI32]); 97 let kSig_i_l = makeSig([kAstI64], [kAstI32]);
95 var kSig_i_ii = makeSig([kAstI32, kAstI32], [kAstI32]); 98 let kSig_i_ii = makeSig([kAstI32, kAstI32], [kAstI32]);
96 var kSig_i_iii = makeSig([kAstI32, kAstI32, kAstI32], [kAstI32]); 99 let kSig_i_iii = makeSig([kAstI32, kAstI32, kAstI32], [kAstI32]);
97 var kSig_d_dd = makeSig([kAstF64, kAstF64], [kAstF64]); 100 let kSig_d_dd = makeSig([kAstF64, kAstF64], [kAstF64]);
98 var kSig_l_ll = makeSig([kAstI64, kAstI64], [kAstI64]); 101 let kSig_l_ll = makeSig([kAstI64, kAstI64], [kAstI64]);
99 var kSig_i_dd = makeSig([kAstF64, kAstF64], [kAstI32]); 102 let kSig_i_dd = makeSig([kAstF64, kAstF64], [kAstI32]);
100 var kSig_v_v = makeSig([], []); 103 let kSig_v_v = makeSig([], []);
101 var kSig_i_v = makeSig([], [kAstI32]); 104 let kSig_i_v = makeSig([], [kAstI32]);
102 var kSig_l_v = makeSig([], [kAstI64]); 105 let kSig_l_v = makeSig([], [kAstI64]);
103 var kSig_f_v = makeSig([], [kAstF64]); 106 let kSig_f_v = makeSig([], [kAstF64]);
104 var kSig_d_v = makeSig([], [kAstF64]); 107 let kSig_d_v = makeSig([], [kAstF64]);
105 var kSig_v_i = makeSig([kAstI32], []); 108 let kSig_v_i = makeSig([kAstI32], []);
106 var kSig_v_ii = makeSig([kAstI32, kAstI32], []); 109 let kSig_v_ii = makeSig([kAstI32, kAstI32], []);
107 var kSig_v_iii = makeSig([kAstI32, kAstI32, kAstI32], []); 110 let kSig_v_iii = makeSig([kAstI32, kAstI32, kAstI32], []);
108 var kSig_v_l = makeSig([kAstI64], []); 111 let kSig_v_l = makeSig([kAstI64], []);
109 var kSig_v_d = makeSig([kAstF64], []); 112 let kSig_v_d = makeSig([kAstF64], []);
110 var kSig_v_dd = makeSig([kAstF64, kAstF64], []); 113 let kSig_v_dd = makeSig([kAstF64, kAstF64], []);
111 var kSig_v_ddi = makeSig([kAstF64, kAstF64, kAstI32], []); 114 let kSig_v_ddi = makeSig([kAstF64, kAstF64, kAstI32], []);
112 var kSig_s_v = makeSig([], [kAstS128]); 115 let kSig_s_v = makeSig([], [kAstS128]);
113 116
114 function makeSig(params, results) { 117 function makeSig(params, results) {
115 return {params: params, results: results}; 118 return {params: params, results: results};
116 } 119 }
117 120
118 function makeSig_v_x(x) { 121 function makeSig_v_x(x) {
119 return makeSig([x], []); 122 return makeSig([x], []);
120 } 123 }
121 124
122 function makeSig_v_xx(x) { 125 function makeSig_v_xx(x) {
123 return makeSig([x, x], []); 126 return makeSig([x, x], []);
124 } 127 }
125 128
126 function makeSig_r_v(r) { 129 function makeSig_r_v(r) {
127 return makeSig([], [r]); 130 return makeSig([], [r]);
128 } 131 }
129 132
130 function makeSig_r_x(r, x) { 133 function makeSig_r_x(r, x) {
131 return makeSig([x], [r]); 134 return makeSig([x], [r]);
132 } 135 }
133 136
134 function makeSig_r_xx(r, x) { 137 function makeSig_r_xx(r, x) {
135 return makeSig([x, x], [r]); 138 return makeSig([x, x], [r]);
136 } 139 }
137 140
138 // Opcodes 141 // Opcodes
139 var kExprUnreachable = 0x00; 142 let kExprUnreachable = 0x00;
140 var kExprNop = 0x0a; 143 let kExprNop = 0x01;
141 var kExprBlock = 0x01; 144 let kExprBlock = 0x02;
142 var kExprLoop = 0x02; 145 let kExprLoop = 0x03;
143 var kExprIf = 0x03; 146 let kExprIf = 0x04;
144 var kExprElse = 0x04; 147 let kExprElse = 0x05;
145 var kExprSelect = 0x05; 148 let kExprTry = 0x06;
146 var kExprBr = 0x06; 149 let kExprCatch = 0x07;
147 var kExprBrIf = 0x07; 150 let kExprThrow = 0x08;
148 var kExprBrTable = 0x08; 151 let kExprEnd = 0x0b;
149 var kExprReturn = 0x09; 152 let kExprBr = 0x0c;
150 var kExprThrow = 0xfa; 153 let kExprBrIf = 0x0d;
151 var kExprTry = 0xfb; 154 let kExprBrTable = 0x0e;
152 var kExprCatch = 0xfe; 155 let kExprReturn = 0x0f;
153 var kExprEnd = 0x0f; 156 let kExprCallFunction = 0x10;
154 var kExprTeeLocal = 0x19; 157 let kExprCallIndirect = 0x11;
155 var kExprDrop = 0x0b; 158 let kExprDrop = 0x1a;
159 let kExprSelect = 0x1b;
160 let kExprGetLocal = 0x20;
161 let kExprSetLocal = 0x21;
162 let kExprTeeLocal = 0x22;
163 let kExprGetGlobal = 0x23;
164 let kExprSetGlobal = 0x24;
165 let kExprI32Const = 0x41;
166 let kExprI64Const = 0x42;
167 let kExprF32Const = 0x43;
168 let kExprF64Const = 0x44;
169 let kExprI8Const = 0xcb;
170 let kExprI32LoadMem = 0x28;
171 let kExprI64LoadMem = 0x29;
172 let kExprF32LoadMem = 0x2a;
173 let kExprF64LoadMem = 0x2b;
174 let kExprI32LoadMem8S = 0x2c;
175 let kExprI32LoadMem8U = 0x2d;
176 let kExprI32LoadMem16S = 0x2e;
177 let kExprI32LoadMem16U = 0x2f;
178 let kExprI64LoadMem8S = 0x30;
179 let kExprI64LoadMem8U = 0x31;
180 let kExprI64LoadMem16S = 0x32;
181 let kExprI64LoadMem16U = 0x33;
182 let kExprI64LoadMem32S = 0x34;
183 let kExprI64LoadMem32U = 0x35;
184 let kExprI32StoreMem = 0x36;
185 let kExprI64StoreMem = 0x37;
186 let kExprF32StoreMem = 0x38;
187 let kExprF64StoreMem = 0x39;
188 let kExprI32StoreMem8 = 0x3a;
189 let kExprI32StoreMem16 = 0x3b;
190 let kExprI64StoreMem8 = 0x3c;
191 let kExprI64StoreMem16 = 0x3d;
192 let kExprI64StoreMem32 = 0x3e;
193 let kExprMemorySize = 0x3f;
194 let kExprGrowMemory = 0x40;
195 let kExprI32Eqz = 0x45;
196 let kExprI32Eq = 0x46;
197 let kExprI32Ne = 0x47;
198 let kExprI32LtS = 0x48;
rossberg 2016/10/21 11:41:23 Same order mismatch for comparisons in this file.
titzer 2016/10/21 12:29:39 Done.
199 let kExprI32LeS = 0x49;
200 let kExprI32LtU = 0x4a;
201 let kExprI32LeU = 0x4b;
202 let kExprI32GtS = 0x4c;
203 let kExprI32GeS = 0x4d;
204 let kExprI32GtU = 0x4e;
205 let kExprI32GeU = 0x4f;
206 let kExprI64Eqz = 0x50;
207 let kExprI64Eq = 0x51;
208 let kExprI64Ne = 0x52;
209 let kExprI64LtS = 0x53;
210 let kExprI64LeS = 0x54;
211 let kExprI64LtU = 0x55;
212 let kExprI64LeU = 0x56;
213 let kExprI64GtS = 0x57;
214 let kExprI64GeS = 0x58;
215 let kExprI64GtU = 0x59;
216 let kExprI64GeU = 0x5a;
217 let kExprF32Eq = 0x5b;
218 let kExprF32Ne = 0x5c;
219 let kExprF32Lt = 0x5d;
220 let kExprF32Le = 0x5e;
221 let kExprF32Gt = 0x5f;
222 let kExprF32Ge = 0x60;
223 let kExprF64Eq = 0x61;
224 let kExprF64Ne = 0x62;
225 let kExprF64Lt = 0x63;
226 let kExprF64Le = 0x64;
227 let kExprF64Gt = 0x65;
228 let kExprF64Ge = 0x66;
229 let kExprI32Clz = 0x67;
230 let kExprI32Ctz = 0x68;
231 let kExprI32Popcnt = 0x69;
232 let kExprI32Add = 0x6a;
233 let kExprI32Sub = 0x6b;
234 let kExprI32Mul = 0x6c;
235 let kExprI32DivS = 0x6d;
236 let kExprI32DivU = 0x6e;
237 let kExprI32RemS = 0x6f;
238 let kExprI32RemU = 0x70;
239 let kExprI32And = 0x71;
240 let kExprI32Ior = 0x72;
241 let kExprI32Xor = 0x73;
242 let kExprI32Shl = 0x74;
243 let kExprI32ShrS = 0x75;
244 let kExprI32ShrU = 0x76;
245 let kExprI32Rol = 0x77;
246 let kExprI32Ror = 0x78;
247 let kExprI64Clz = 0x79;
248 let kExprI64Ctz = 0x7a;
249 let kExprI64Popcnt = 0x7b;
250 let kExprI64Add = 0x7c;
251 let kExprI64Sub = 0x7d;
252 let kExprI64Mul = 0x7e;
253 let kExprI64DivS = 0x7f;
254 let kExprI64DivU = 0x80;
255 let kExprI64RemS = 0x81;
256 let kExprI64RemU = 0x82;
257 let kExprI64And = 0x83;
258 let kExprI64Ior = 0x84;
259 let kExprI64Xor = 0x85;
260 let kExprI64Shl = 0x86;
261 let kExprI64ShrS = 0x87;
262 let kExprI64ShrU = 0x88;
263 let kExprI64Rol = 0x89;
264 let kExprI64Ror = 0x8a;
265 let kExprF32Abs = 0x8b;
266 let kExprF32Neg = 0x8c;
267 let kExprF32CopySign = 0x8d;
268 let kExprF32Ceil = 0x8e;
269 let kExprF32Floor = 0x8f;
270 let kExprF32Trunc = 0x90;
271 let kExprF32NearestInt = 0x91;
272 let kExprF32Sqrt = 0x92;
273 let kExprF32Add = 0x93;
274 let kExprF32Sub = 0x94;
275 let kExprF32Mul = 0x95;
276 let kExprF32Div = 0x96;
277 let kExprF32Min = 0x97;
278 let kExprF32Max = 0x98;
279 let kExprF64Abs = 0x99;
280 let kExprF64Neg = 0x9a;
281 let kExprF64CopySign = 0x9b;
282 let kExprF64Ceil = 0x9c;
283 let kExprF64Floor = 0x9d;
284 let kExprF64Trunc = 0x9e;
285 let kExprF64NearestInt = 0x9f;
286 let kExprF64Sqrt = 0xa0;
287 let kExprF64Add = 0xa1;
288 let kExprF64Sub = 0xa2;
289 let kExprF64Mul = 0xa3;
290 let kExprF64Div = 0xa4;
291 let kExprF64Min = 0xa5;
292 let kExprF64Max = 0xa6;
293 let kExprI32ConvertI64 = 0xa7;
294 let kExprI32SConvertF32 = 0xa8;
295 let kExprI32UConvertF32 = 0xa9;
296 let kExprI32SConvertF64 = 0xaa;
297 let kExprI32UConvertF64 = 0xab;
298 let kExprI64SConvertI32 = 0xac;
299 let kExprI64UConvertI32 = 0xad;
300 let kExprI64SConvertF32 = 0xae;
301 let kExprI64UConvertF32 = 0xaf;
302 let kExprI64SConvertF64 = 0xb0;
303 let kExprI64UConvertF64 = 0xb1;
304 let kExprF32SConvertI32 = 0xb2;
305 let kExprF32UConvertI32 = 0xb3;
306 let kExprF32SConvertI64 = 0xb4;
307 let kExprF32UConvertI64 = 0xb5;
308 let kExprF32ConvertF64 = 0xb6;
309 let kExprF64SConvertI32 = 0xb7;
310 let kExprF64UConvertI32 = 0xb8;
311 let kExprF64SConvertI64 = 0xb9;
312 let kExprF64UConvertI64 = 0xba;
313 let kExprF64ConvertF32 = 0xbb;
314 let kExprI32ReinterpretF32 = 0xbc;
315 let kExprI64ReinterpretF64 = 0xbd;
316 let kExprF32ReinterpretI32 = 0xbe;
317 let kExprF64ReinterpretI64 = 0xbf;
156 318
157 var kExprI32Const = 0x10; 319 let kTrapUnreachable = 0;
158 var kExprI64Const = 0x11; 320 let kTrapMemOutOfBounds = 1;
159 var kExprF64Const = 0x12; 321 let kTrapDivByZero = 2;
160 var kExprF32Const = 0x13; 322 let kTrapDivUnrepresentable = 3;
161 var kExprGetLocal = 0x14; 323 let kTrapRemByZero = 4;
162 var kExprSetLocal = 0x15; 324 let kTrapFloatUnrepresentable = 5;
163 var kExprCallFunction = 0x16; 325 let kTrapFuncInvalid = 6;
164 var kExprCallIndirect = 0x17; 326 let kTrapFuncSigMismatch = 7;
165 var kExprI8Const = 0xcb; 327 let kTrapInvalidIndex = 8;
166 var kExprGetGlobal = 0xbb;
167 var kExprSetGlobal = 0xbc;
168 328
169 var kExprI32LoadMem8S = 0x20; 329 let kTrapMsgs = [
170 var kExprI32LoadMem8U = 0x21;
171 var kExprI32LoadMem16S = 0x22;
172 var kExprI32LoadMem16U = 0x23;
173 var kExprI64LoadMem8S = 0x24;
174 var kExprI64LoadMem8U = 0x25;
175 var kExprI64LoadMem16S = 0x26;
176 var kExprI64LoadMem16U = 0x27;
177 var kExprI64LoadMem32S = 0x28;
178 var kExprI64LoadMem32U = 0x29;
179 var kExprI32LoadMem = 0x2a;
180 var kExprI64LoadMem = 0x2b;
181 var kExprF32LoadMem = 0x2c;
182 var kExprF64LoadMem = 0x2d;
183
184 var kExprI32StoreMem8 = 0x2e;
185 var kExprI32StoreMem16 = 0x2f;
186 var kExprI64StoreMem8 = 0x30;
187 var kExprI64StoreMem16 = 0x31;
188 var kExprI64StoreMem32 = 0x32;
189 var kExprI32StoreMem = 0x33;
190 var kExprI64StoreMem = 0x34;
191 var kExprF32StoreMem = 0x35;
192 var kExprF64StoreMem = 0x36;
193
194 var kExprMemorySize = 0x3b;
195 var kExprGrowMemory = 0x39;
196
197 var kExprI32Add = 0x40;
198 var kExprI32Sub = 0x41;
199 var kExprI32Mul = 0x42;
200 var kExprI32DivS = 0x43;
201 var kExprI32DivU = 0x44;
202 var kExprI32RemS = 0x45;
203 var kExprI32RemU = 0x46;
204 var kExprI32And = 0x47;
205 var kExprI32Ior = 0x48;
206 var kExprI32Xor = 0x49;
207 var kExprI32Shl = 0x4a;
208 var kExprI32ShrU = 0x4b;
209 var kExprI32ShrS = 0x4c;
210 var kExprI32Eq = 0x4d;
211 var kExprI32Ne = 0x4e;
212 var kExprI32LtS = 0x4f;
213 var kExprI32LeS = 0x50;
214 var kExprI32LtU = 0x51;
215 var kExprI32LeU = 0x52;
216 var kExprI32GtS = 0x53;
217 var kExprI32GeS = 0x54;
218 var kExprI32GtU = 0x55;
219 var kExprI32GeU = 0x56;
220 var kExprI32Clz = 0x57;
221 var kExprI32Ctz = 0x58;
222 var kExprI32Popcnt = 0x59;
223 var kExprI32Eqz = 0x5a;
224 var kExprI64Add = 0x5b;
225 var kExprI64Sub = 0x5c;
226 var kExprI64Mul = 0x5d;
227 var kExprI64DivS = 0x5e;
228 var kExprI64DivU = 0x5f;
229 var kExprI64RemS = 0x60;
230 var kExprI64RemU = 0x61;
231 var kExprI64And = 0x62;
232 var kExprI64Ior = 0x63;
233 var kExprI64Xor = 0x64;
234 var kExprI64Shl = 0x65;
235 var kExprI64ShrU = 0x66;
236 var kExprI64ShrS = 0x67;
237 var kExprI64Eq = 0x68;
238 var kExprI64Ne = 0x69;
239 var kExprI64LtS = 0x6a;
240 var kExprI64LeS = 0x6b;
241 var kExprI64LtU = 0x6c;
242 var kExprI64LeU = 0x6d;
243 var kExprI64GtS = 0x6e;
244 var kExprI64GeS = 0x6f;
245 var kExprI64GtU = 0x70;
246 var kExprI64GeU = 0x71;
247 var kExprI64Clz = 0x72;
248 var kExprI64Ctz = 0x73;
249 var kExprI64Popcnt = 0x74;
250 var kExprF32Add = 0x75;
251 var kExprF32Sub = 0x76;
252 var kExprF32Mul = 0x77;
253 var kExprF32Div = 0x78;
254 var kExprF32Min = 0x79;
255 var kExprF32Max = 0x7a;
256 var kExprF32Abs = 0x7b;
257 var kExprF32Neg = 0x7c;
258 var kExprF32CopySign = 0x7d;
259 var kExprF32Ceil = 0x7e;
260 var kExprF32Floor = 0x7f;
261 var kExprF32Trunc = 0x80;
262 var kExprF32NearestInt = 0x81;
263 var kExprF32Sqrt = 0x82;
264 var kExprF32Eq = 0x83;
265 var kExprF32Ne = 0x84;
266 var kExprF32Lt = 0x85;
267 var kExprF32Le = 0x86;
268 var kExprF32Gt = 0x87;
269 var kExprF32Ge = 0x88;
270 var kExprF64Add = 0x89;
271 var kExprF64Sub = 0x8a;
272 var kExprF64Mul = 0x8b;
273 var kExprF64Div = 0x8c;
274 var kExprF64Min = 0x8d;
275 var kExprF64Max = 0x8e;
276 var kExprF64Abs = 0x8f;
277 var kExprF64Neg = 0x90;
278 var kExprF64CopySign = 0x91;
279 var kExprF64Ceil = 0x92;
280 var kExprF64Floor = 0x93;
281 var kExprF64Trunc = 0x94;
282 var kExprF64NearestInt = 0x95;
283 var kExprF64Sqrt = 0x96;
284 var kExprF64Eq = 0x97;
285 var kExprF64Ne = 0x98;
286 var kExprF64Lt = 0x99;
287 var kExprF64Le = 0x9a;
288 var kExprF64Gt = 0x9b;
289 var kExprF64Ge = 0x9c;
290 var kExprI32SConvertF32 = 0x9d;
291 var kExprI32SConvertF64 = 0x9e;
292 var kExprI32UConvertF32 = 0x9f;
293 var kExprI32UConvertF64 = 0xa0;
294 var kExprI32ConvertI64 = 0xa1;
295 var kExprI64SConvertF32 = 0xa2;
296 var kExprI64SConvertF64 = 0xa3;
297 var kExprI64UConvertF32 = 0xa4;
298 var kExprI64UConvertF64 = 0xa5;
299 var kExprI64SConvertI32 = 0xa6;
300 var kExprI64UConvertI32 = 0xa7;
301 var kExprF32SConvertI32 = 0xa8;
302 var kExprF32UConvertI32 = 0xa9;
303 var kExprF32SConvertI64 = 0xaa;
304 var kExprF32UConvertI64 = 0xab;
305 var kExprF32ConvertF64 = 0xac;
306 var kExprF32ReinterpretI32 = 0xad;
307 var kExprF64SConvertI32 = 0xae;
308 var kExprF64UConvertI32 = 0xaf;
309 var kExprF64SConvertI64 = 0xb0;
310 var kExprF64UConvertI64 = 0xb1;
311 var kExprF64ConvertF32 = 0xb2;
312 var kExprF64ReinterpretI64 = 0xb3;
313 var kExprI32ReinterpretF32 = 0xb4;
314 var kExprI64ReinterpretF64 = 0xb5;
315 var kExprI32Ror = 0xb6;
316 var kExprI32Rol = 0xb7;
317 var kExprI64Ror = 0xb8;
318 var kExprI64Rol = 0xb9;
319
320 var kTrapUnreachable = 0;
321 var kTrapMemOutOfBounds = 1;
322 var kTrapDivByZero = 2;
323 var kTrapDivUnrepresentable = 3;
324 var kTrapRemByZero = 4;
325 var kTrapFloatUnrepresentable = 5;
326 var kTrapFuncInvalid = 6;
327 var kTrapFuncSigMismatch = 7;
328 var kTrapInvalidIndex = 8;
329
330 var kTrapMsgs = [
331 "unreachable", 330 "unreachable",
332 "memory access out of bounds", 331 "memory access out of bounds",
333 "divide by zero", 332 "divide by zero",
334 "divide result unrepresentable", 333 "divide result unrepresentable",
335 "remainder by zero", 334 "remainder by zero",
336 "integer result unrepresentable", 335 "integer result unrepresentable",
337 "invalid function", 336 "invalid function",
338 "function signature mismatch", 337 "function signature mismatch",
339 "invalid index into function table" 338 "invalid index into function table"
340 ]; 339 ];
(...skipping 25 matching lines...) Expand all
366 eval(code); 365 eval(code);
367 } 366 }
368 } catch (e) { 367 } catch (e) {
369 assertEquals("number", typeof e); 368 assertEquals("number", typeof e);
370 assertEquals(value, e); 369 assertEquals(value, e);
371 // Success. 370 // Success.
372 return; 371 return;
373 } 372 }
374 throw new MjsUnitAssertionError("Did not throw at all, expected: " + value); 373 throw new MjsUnitAssertionError("Did not throw at all, expected: " + value);
375 } 374 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698