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

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

Issue 2345593003: [wasm] Master CL for Binary 0xC changes. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Signed/unsigned mismatch Created 4 years, 3 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 = 11; 24 var kWasmV0 = 12; // 0xC
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 var kDeclNoLocals = 0;
52 52
53 // Section declaration constants 53 // Section declaration constants
54 var kDeclMemory = 0x00; 54 var kUnknownSectionCode = 0;
55 var kDeclTypes = 0x01; 55 var kTypeSectionCode = 1; // Function signature declarations
56 var kDeclFunctions = 0x02; 56 var kImportSectionCode = 2; // Import declarations
57 var kDeclGlobals = 0x03; 57 var kFunctionSectionCode = 3; // Function declarations
58 var kDeclData = 0x04; 58 var kTableSectionCode = 4; // Indirect function table and other tables
59 var kDeclTable = 0x05; 59 var kMemorySectionCode = 5; // Memory attributes
60 var kDeclEnd = 0x06; 60 var kGlobalSectionCode = 6; // Global declarations
61 var kDeclStart = 0x07; 61 var kExportSectionCode = 7; // Exports
62 var kDeclImports = 0x08; 62 var kStartSectionCode = 8; // Start function declaration
63 var kDeclExports = 0x09; 63 var kElementSectionCode = 9; // Elements section
64 var kDeclFunctions = 0x0a; 64 var kCodeSectionCode = 10; // Function code
65 var kDeclCode = 0x0b; 65 var kDataSectionCode = 11; // Data segments
66 var kDeclNames = 0x0c; 66 var kNameSectionCode = 12; // Name section (encoded as string)
67 67
68 var kArity0 = 0;
69 var kArity1 = 1;
70 var kArity2 = 2;
71 var kArity3 = 3;
72 var kWasmFunctionTypeForm = 0x40; 68 var kWasmFunctionTypeForm = 0x40;
69 var kWasmAnyFunctionTypeForm = 0x20;
73 70
74 var section_names = [ 71 var kResizableMaximumFlag = 1;
75 "memory", "type", "old_function", "global", "data",
76 "table", "end", "start", "import", "export",
77 "function", "code", "name"];
78 72
79 // Function declaration flags 73 // Function declaration flags
80 var kDeclFunctionName = 0x01; 74 var kDeclFunctionName = 0x01;
81 var kDeclFunctionImport = 0x02; 75 var kDeclFunctionImport = 0x02;
82 var kDeclFunctionLocals = 0x04; 76 var kDeclFunctionLocals = 0x04;
83 var kDeclFunctionExport = 0x08; 77 var kDeclFunctionExport = 0x08;
84 78
85 // Local types 79 // Local types
86 var kAstStmt = 0; 80 var kAstStmt = 0;
87 var kAstI32 = 1; 81 var kAstI32 = 1;
88 var kAstI64 = 2; 82 var kAstI64 = 2;
89 var kAstF32 = 3; 83 var kAstF32 = 3;
90 var kAstF64 = 4; 84 var kAstF64 = 4;
91 85
86 var kExternalFunction = 0;
87 var kExternalTable = 1;
88 var kExternalMemory = 2;
89 var kExternalGlobal = 3;
90
92 // Useful signatures 91 // Useful signatures
93 var kSig_i = makeSig([], [kAstI32]); 92 var kSig_i = makeSig([], [kAstI32]);
94 var kSig_d = makeSig([], [kAstF64]); 93 var kSig_d = makeSig([], [kAstF64]);
95 var kSig_i_i = makeSig([kAstI32], [kAstI32]); 94 var kSig_i_i = makeSig([kAstI32], [kAstI32]);
96 var kSig_i_l = makeSig([kAstI64], [kAstI32]); 95 var kSig_i_l = makeSig([kAstI64], [kAstI32]);
97 var kSig_i_ii = makeSig([kAstI32, kAstI32], [kAstI32]); 96 var kSig_i_ii = makeSig([kAstI32, kAstI32], [kAstI32]);
98 var kSig_i_iii = makeSig([kAstI32, kAstI32, kAstI32], [kAstI32]); 97 var kSig_i_iii = makeSig([kAstI32, kAstI32, kAstI32], [kAstI32]);
99 var kSig_d_dd = makeSig([kAstF64, kAstF64], [kAstF64]); 98 var kSig_d_dd = makeSig([kAstF64, kAstF64], [kAstF64]);
100 var kSig_l_ll = makeSig([kAstI64, kAstI64], [kAstI64]); 99 var kSig_l_ll = makeSig([kAstI64, kAstI64], [kAstI64]);
101 var kSig_i_dd = makeSig([kAstF64, kAstF64], [kAstI32]); 100 var kSig_i_dd = makeSig([kAstF64, kAstF64], [kAstI32]);
(...skipping 23 matching lines...) Expand all
125 124
126 function makeSig_r_x(r, x) { 125 function makeSig_r_x(r, x) {
127 return makeSig([x], [r]); 126 return makeSig([x], [r]);
128 } 127 }
129 128
130 function makeSig_r_xx(r, x) { 129 function makeSig_r_xx(r, x) {
131 return makeSig([x, x], [r]); 130 return makeSig([x, x], [r]);
132 } 131 }
133 132
134 // Opcodes 133 // Opcodes
135 var kExprNop = 0x00; 134 var kExprUnreachable = 0x00;
135 var kExprNop = 0x0a;
136 var kExprBlock = 0x01; 136 var kExprBlock = 0x01;
137 var kExprLoop = 0x02; 137 var kExprLoop = 0x02;
138 var kExprIf = 0x03; 138 var kExprIf = 0x03;
139 var kExprElse = 0x04; 139 var kExprElse = 0x04;
140 var kExprSelect = 0x05; 140 var kExprSelect = 0x05;
141 var kExprBr = 0x06; 141 var kExprBr = 0x06;
142 var kExprBrIf = 0x07; 142 var kExprBrIf = 0x07;
143 var kExprBrTable = 0x08; 143 var kExprBrTable = 0x08;
144 var kExprReturn = 0x09; 144 var kExprReturn = 0x09;
145 var kExprUnreachable = 0x0a;
146 var kExprEnd = 0x0f; 145 var kExprEnd = 0x0f;
146 var kExprTeeLocal = 0x19;
147 var kExprDrop = 0x0b;
147 148
148 var kExprI32Const = 0x10; 149 var kExprI32Const = 0x10;
149 var kExprI64Const = 0x11; 150 var kExprI64Const = 0x11;
150 var kExprF64Const = 0x12; 151 var kExprF64Const = 0x12;
151 var kExprF32Const = 0x13; 152 var kExprF32Const = 0x13;
152 var kExprGetLocal = 0x14; 153 var kExprGetLocal = 0x14;
153 var kExprSetLocal = 0x15; 154 var kExprSetLocal = 0x15;
154 var kExprCallFunction = 0x16; 155 var kExprCallFunction = 0x16;
155 var kExprCallIndirect = 0x17; 156 var kExprCallIndirect = 0x17;
156 var kExprCallImport = 0x18;
157 var kExprI8Const = 0xcb; 157 var kExprI8Const = 0xcb;
158 var kExprGetGlobal = 0xbb; 158 var kExprGetGlobal = 0xbb;
159 var kExprSetGlobal = 0xbc; 159 var kExprSetGlobal = 0xbc;
160 160
161 var kExprI32LoadMem8S = 0x20; 161 var kExprI32LoadMem8S = 0x20;
162 var kExprI32LoadMem8U = 0x21; 162 var kExprI32LoadMem8U = 0x21;
163 var kExprI32LoadMem16S = 0x22; 163 var kExprI32LoadMem16S = 0x22;
164 var kExprI32LoadMem16U = 0x23; 164 var kExprI32LoadMem16U = 0x23;
165 var kExprI64LoadMem8S = 0x24; 165 var kExprI64LoadMem8S = 0x24;
166 var kExprI64LoadMem8U = 0x25; 166 var kExprI64LoadMem8U = 0x25;
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 } 341 }
342 threwException = false; 342 threwException = false;
343 } catch (e) { 343 } catch (e) {
344 assertEquals("object", typeof e); 344 assertEquals("object", typeof e);
345 assertEquals(kTrapMsgs[trap], e.message); 345 assertEquals(kTrapMsgs[trap], e.message);
346 // Success. 346 // Success.
347 return; 347 return;
348 } 348 }
349 throw new MjsUnitAssertionError("Did not trap, expected: " + kTrapMsgs[trap] ); 349 throw new MjsUnitAssertionError("Did not trap, expected: " + kTrapMsgs[trap] );
350 } 350 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698