| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 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 function StringRef(string) { | 5 function StringRef(string) { |
| 6 this.pos = -1; | 6 this.pos = -1; |
| 7 this.string = string; | 7 this.string = string; |
| 8 } | 8 } |
| 9 | 9 |
| 10 function DataRef(data) { | 10 function DataRef(data) { |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 emit_u8(bytes, this.memory.exp ? 1 : 0); | 151 emit_u8(bytes, this.memory.exp ? 1 : 0); |
| 152 } | 152 } |
| 153 | 153 |
| 154 // Add signatures section | 154 // Add signatures section |
| 155 if (this.signatures.length > 0) { | 155 if (this.signatures.length > 0) { |
| 156 if (debug) print("emitting signatures @ " + bytes.length); | 156 if (debug) print("emitting signatures @ " + bytes.length); |
| 157 emit_u8(bytes, kDeclSignatures); | 157 emit_u8(bytes, kDeclSignatures); |
| 158 emit_varint(bytes, this.signatures.length); | 158 emit_varint(bytes, this.signatures.length); |
| 159 for (sig of this.signatures) { | 159 for (sig of this.signatures) { |
| 160 var params = sig.length - 1; | 160 var params = sig.length - 1; |
| 161 emit_u8(bytes, params); | 161 emit_varint(bytes, params); |
| 162 for (var j = 0; j < sig.length; j++) { | 162 for (var j = 0; j < sig.length; j++) { |
| 163 emit_u8(bytes, sig[j]); | 163 emit_u8(bytes, sig[j]); |
| 164 } | 164 } |
| 165 } | 165 } |
| 166 } | 166 } |
| 167 | 167 |
| 168 // Add imports section | 168 // Add imports section |
| 169 if (this.imports.length > 0) { | 169 if (this.imports.length > 0) { |
| 170 if (debug) print("emitting imports @ " + bytes.length); | 170 if (debug) print("emitting imports @ " + bytes.length); |
| 171 emit_u8(bytes, kDeclImportTable); | 171 emit_u8(bytes, kDeclImportTable); |
| 172 emit_varint(bytes, this.imports.length); | 172 emit_varint(bytes, this.imports.length); |
| 173 for (imp of this.imports) { | 173 for (imp of this.imports) { |
| 174 emit_u16(bytes, imp.sig_index); | 174 emit_varint(bytes, imp.sig_index); |
| 175 emit_string(bytes, ""); | 175 emit_string(bytes, ""); |
| 176 emit_string(bytes, imp.name); | 176 emit_string(bytes, imp.name); |
| 177 } | 177 } |
| 178 } | 178 } |
| 179 | 179 |
| 180 // Add functions section | 180 // Add functions section |
| 181 var names = false; | 181 var names = false; |
| 182 var exports = 0; | 182 var exports = 0; |
| 183 if (this.functions.length > 0) { | 183 if (this.functions.length > 0) { |
| 184 if (debug) print("emitting functions @ " + bytes.length); | 184 if (debug) print("emitting functions @ " + bytes.length); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 211 if (l.i64_count > 0) { | 211 if (l.i64_count > 0) { |
| 212 local_decls.push({count: l.i64_count, type: kAstI64}); | 212 local_decls.push({count: l.i64_count, type: kAstI64}); |
| 213 } | 213 } |
| 214 if (l.f32_count > 0) { | 214 if (l.f32_count > 0) { |
| 215 local_decls.push({count: l.f32_count, type: kAstF32}); | 215 local_decls.push({count: l.f32_count, type: kAstF32}); |
| 216 } | 216 } |
| 217 if (l.f64_count > 0) { | 217 if (l.f64_count > 0) { |
| 218 local_decls.push({count: l.f64_count, type: kAstF64}); | 218 local_decls.push({count: l.f64_count, type: kAstF64}); |
| 219 } | 219 } |
| 220 } | 220 } |
| 221 emit_u8(bytes, local_decls.length); | 221 emit_varint(bytes, local_decls.length); |
| 222 for (decl of local_decls) { | 222 for (decl of local_decls) { |
| 223 emit_varint(bytes, decl.count); | 223 emit_varint(bytes, decl.count); |
| 224 emit_u8(bytes, decl.type); | 224 emit_u8(bytes, decl.type); |
| 225 } | 225 } |
| 226 | 226 |
| 227 for (var i = 0; i < func.body.length; i++) { | 227 for (var i = 0; i < func.body.length; i++) { |
| 228 emit_u8(bytes, func.body[i]); | 228 emit_u8(bytes, func.body[i]); |
| 229 } | 229 } |
| 230 var length = bytes.length - length_pos - 2; | 230 var length = bytes.length - length_pos - 2; |
| 231 bytes[length_pos] = length & 0xff; | 231 bytes[length_pos] = length & 0xff; |
| 232 bytes[length_pos + 1] = (length >> 8) & 0xff; | 232 bytes[length_pos + 1] = (length >> 8) & 0xff; |
| 233 | 233 |
| 234 index++; | 234 index++; |
| 235 } | 235 } |
| 236 } | 236 } |
| 237 | 237 |
| 238 // Add start function section. | 238 // Add start function section. |
| 239 if (this.start_index != undefined) { | 239 if (this.start_index != undefined) { |
| 240 if (debug) print("emitting start function @ " + bytes.length); | 240 if (debug) print("emitting start function @ " + bytes.length); |
| 241 emit_u8(bytes, kDeclStartFunction); | 241 emit_u8(bytes, kDeclStartFunction); |
| 242 emit_varint(bytes, this.start_index); | 242 emit_varint(bytes, this.start_index); |
| 243 } | 243 } |
| 244 | 244 |
| 245 if (this.function_table.length > 0) { | 245 if (this.function_table.length > 0) { |
| 246 if (debug) print("emitting function table @ " + bytes.length); | 246 if (debug) print("emitting function table @ " + bytes.length); |
| 247 emit_u8(bytes, kDeclFunctionTable); | 247 emit_u8(bytes, kDeclFunctionTable); |
| 248 emit_varint(bytes, this.function_table.length); | 248 emit_varint(bytes, this.function_table.length); |
| 249 for (index of this.function_table) { | 249 for (index of this.function_table) { |
| 250 emit_u16(bytes, index); | 250 emit_varint(bytes, index); |
| 251 } | 251 } |
| 252 } | 252 } |
| 253 | 253 |
| 254 if (exports > 0) { | 254 if (exports > 0) { |
| 255 if (debug) print("emitting exports @ " + bytes.length); | 255 if (debug) print("emitting exports @ " + bytes.length); |
| 256 emit_u8(bytes, kDeclExportTable); | 256 emit_u8(bytes, kDeclExportTable); |
| 257 emit_varint(bytes, exports); | 257 emit_varint(bytes, exports); |
| 258 for (func of this.functions) { | 258 for (func of this.functions) { |
| 259 for (exp of func.exports) { | 259 for (exp of func.exports) { |
| 260 emit_u16(bytes, func.index); | 260 emit_varint(bytes, func.index); |
| 261 emit_string(bytes, exp); | 261 emit_string(bytes, exp); |
| 262 } | 262 } |
| 263 } | 263 } |
| 264 } | 264 } |
| 265 | 265 |
| 266 if (this.data_segments.length > 0) { | 266 if (this.data_segments.length > 0) { |
| 267 if (debug) print("emitting data segments @ " + bytes.length); | 267 if (debug) print("emitting data segments @ " + bytes.length); |
| 268 emit_u8(bytes, kDeclDataSegments); | 268 emit_u8(bytes, kDeclDataSegments); |
| 269 emit_varint(bytes, this.data_segments.length); | 269 emit_varint(bytes, this.data_segments.length); |
| 270 for (seg of this.data_segments) { | 270 for (seg of this.data_segments) { |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 } | 357 } |
| 358 | 358 |
| 359 WasmModuleBuilder.prototype.instantiate = function(ffi, memory) { | 359 WasmModuleBuilder.prototype.instantiate = function(ffi, memory) { |
| 360 var buffer = this.toBuffer(); | 360 var buffer = this.toBuffer(); |
| 361 if (memory != undefined) { | 361 if (memory != undefined) { |
| 362 return _WASMEXP_.instantiateModule(buffer, ffi, memory); | 362 return _WASMEXP_.instantiateModule(buffer, ffi, memory); |
| 363 } else { | 363 } else { |
| 364 return _WASMEXP_.instantiateModule(buffer, ffi); | 364 return _WASMEXP_.instantiateModule(buffer, ffi); |
| 365 } | 365 } |
| 366 } | 366 } |
| OLD | NEW |