OLD | NEW |
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 #include "src/signature.h" | 5 #include "src/signature.h" |
6 | 6 |
7 #include "src/handles.h" | 7 #include "src/handles.h" |
8 #include "src/v8.h" | 8 #include "src/v8.h" |
9 #include "src/zone/zone-containers.h" | 9 #include "src/zone/zone-containers.h" |
10 | 10 |
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 // == Emit names ============================================================= | 502 // == Emit names ============================================================= |
503 if (has_names) { | 503 if (has_names) { |
504 // Emit the section code. | 504 // Emit the section code. |
505 buffer.write_u8(kUnknownSectionCode); | 505 buffer.write_u8(kUnknownSectionCode); |
506 // Emit a placeholder for the length. | 506 // Emit a placeholder for the length. |
507 size_t start = buffer.reserve_u32v(); | 507 size_t start = buffer.reserve_u32v(); |
508 // Emit the section string. | 508 // Emit the section string. |
509 buffer.write_size(4); | 509 buffer.write_size(4); |
510 buffer.write(reinterpret_cast<const byte*>("name"), 4); | 510 buffer.write(reinterpret_cast<const byte*>("name"), 4); |
511 // Emit the names. | 511 // Emit the names. |
512 buffer.write_size(functions_.size()); | 512 size_t count = functions_.size() + imports_.size(); |
| 513 buffer.write_size(count); |
| 514 for (size_t i = 0; i < imports_.size(); i++) { |
| 515 buffer.write_u8(0); // empty name for import |
| 516 buffer.write_u8(0); // no local variables |
| 517 } |
513 for (auto function : functions_) { | 518 for (auto function : functions_) { |
514 buffer.write_size(function->name_.size()); | 519 buffer.write_size(function->name_.size()); |
515 if (function->name_.size() > 0) { | 520 if (function->name_.size() > 0) { |
516 buffer.write(reinterpret_cast<const byte*>(&function->name_[0]), | 521 buffer.write(reinterpret_cast<const byte*>(&function->name_[0]), |
517 function->name_.size()); | 522 function->name_.size()); |
518 } | 523 } |
519 buffer.write_u8(0); | 524 buffer.write_u8(0); |
520 } | 525 } |
521 FixupSection(buffer, start); | 526 FixupSection(buffer, start); |
522 } | 527 } |
523 } | 528 } |
524 | 529 |
525 void WasmModuleBuilder::WriteAsmJsOffsetTable(ZoneBuffer& buffer) const { | 530 void WasmModuleBuilder::WriteAsmJsOffsetTable(ZoneBuffer& buffer) const { |
526 // == Emit asm.js offset table =============================================== | 531 // == Emit asm.js offset table =============================================== |
527 buffer.write_size(functions_.size()); | 532 buffer.write_size(functions_.size()); |
528 // Emit the offset table per function. | 533 // Emit the offset table per function. |
529 for (auto function : functions_) { | 534 for (auto function : functions_) { |
530 function->WriteAsmWasmOffsetTable(buffer); | 535 function->WriteAsmWasmOffsetTable(buffer); |
531 } | 536 } |
532 } | 537 } |
533 } // namespace wasm | 538 } // namespace wasm |
534 } // namespace internal | 539 } // namespace internal |
535 } // namespace v8 | 540 } // namespace v8 |
OLD | NEW |