Lines Matching defs:OS

30   bool writeWasm(raw_ostream &OS);
33 void writeRelocSection(raw_ostream &OS, WasmYAML::Section &Sec,
36 void writeInitExpr(raw_ostream &OS, const WasmYAML::InitExpr &InitExpr);
38 void writeSectionContent(raw_ostream &OS, WasmYAML::CustomSection &Section);
39 void writeSectionContent(raw_ostream &OS, WasmYAML::TypeSection &Section);
40 void writeSectionContent(raw_ostream &OS, WasmYAML::ImportSection &Section);
41 void writeSectionContent(raw_ostream &OS, WasmYAML::FunctionSection &Section);
42 void writeSectionContent(raw_ostream &OS, WasmYAML::TableSection &Section);
43 void writeSectionContent(raw_ostream &OS, WasmYAML::MemorySection &Section);
44 void writeSectionContent(raw_ostream &OS, WasmYAML::TagSection &Section);
45 void writeSectionContent(raw_ostream &OS, WasmYAML::GlobalSection &Section);
46 void writeSectionContent(raw_ostream &OS, WasmYAML::ExportSection &Section);
47 void writeSectionContent(raw_ostream &OS, WasmYAML::StartSection &Section);
48 void writeSectionContent(raw_ostream &OS, WasmYAML::ElemSection &Section);
49 void writeSectionContent(raw_ostream &OS, WasmYAML::CodeSection &Section);
50 void writeSectionContent(raw_ostream &OS, WasmYAML::DataSection &Section);
51 void writeSectionContent(raw_ostream &OS, WasmYAML::DataCountSection &Section);
54 void writeSectionContent(raw_ostream &OS, WasmYAML::DylinkSection &Section);
55 void writeSectionContent(raw_ostream &OS, WasmYAML::NameSection &Section);
56 void writeSectionContent(raw_ostream &OS, WasmYAML::LinkingSection &Section);
57 void writeSectionContent(raw_ostream &OS, WasmYAML::ProducersSection &Section);
58 void writeSectionContent(raw_ostream &OS,
72 raw_ostream &OS;
77 SubSectionWriter(raw_ostream &OS) : OS(OS), StringStream(OutString) {}
81 encodeULEB128(OutString.size(), OS);
82 OS << OutString;
91 static int writeUint64(raw_ostream &OS, uint64_t Value) {
94 OS.write(Data, sizeof(Data));
98 static int writeUint32(raw_ostream &OS, uint32_t Value) {
101 OS.write(Data, sizeof(Data));
105 static int writeUint8(raw_ostream &OS, uint8_t Value) {
108 OS.write(Data, sizeof(Data));
112 static int writeStringRef(const StringRef &Str, raw_ostream &OS) {
113 encodeULEB128(Str.size(), OS);
114 OS << Str;
118 static int writeLimits(const WasmYAML::Limits &Lim, raw_ostream &OS) {
119 writeUint8(OS, Lim.Flags);
120 encodeULEB128(Lim.Minimum, OS);
122 encodeULEB128(Lim.Maximum, OS);
131 void WasmWriter::writeInitExpr(raw_ostream &OS,
134 InitExpr.Body.writeAsBinary(OS);
136 writeUint8(OS, InitExpr.Inst.Opcode);
139 encodeSLEB128(InitExpr.Inst.Value.Int32, OS);
142 encodeSLEB128(InitExpr.Inst.Value.Int64, OS);
145 writeUint32(OS, InitExpr.Inst.Value.Float32);
148 writeUint64(OS, InitExpr.Inst.Value.Float64);
151 encodeULEB128(InitExpr.Inst.Value.Global, OS);
158 writeUint8(OS, wasm::WASM_OPCODE_END);
162 void WasmWriter::writeSectionContent(raw_ostream &OS,
164 writeStringRef(Section.Name, OS);
166 writeUint8(OS, wasm::WASM_DYLINK_MEM_INFO);
167 SubSectionWriter SubSection(OS);
176 writeUint8(OS, wasm::WASM_DYLINK_NEEDED);
185 void WasmWriter::writeSectionContent(raw_ostream &OS,
187 writeStringRef(Section.Name, OS);
188 encodeULEB128(Section.Version, OS);
190 SubSectionWriter SubSection(OS);
194 writeUint8(OS, wasm::WASM_SYMBOL_TABLE);
232 writeUint8(OS, wasm::WASM_SEGMENT_INFO);
244 writeUint8(OS, wasm::WASM_INIT_FUNCS);
255 writeUint8(OS, wasm::WASM_COMDAT_INFO);
270 void WasmWriter::writeSectionContent(raw_ostream &OS,
272 writeStringRef(Section.Name, OS);
274 writeUint8(OS, wasm::WASM_NAMES_FUNCTION);
276 SubSectionWriter SubSection(OS);
287 writeUint8(OS, wasm::WASM_NAMES_GLOBAL);
289 SubSectionWriter SubSection(OS);
300 writeUint8(OS, wasm::WASM_NAMES_DATA_SEGMENT);
302 SubSectionWriter SubSection(OS);
314 void WasmWriter::writeSectionContent(raw_ostream &OS,
316 writeStringRef(Section.Name, OS);
321 encodeULEB128(Fields, OS);
327 writeStringRef(Field.first, OS);
328 encodeULEB128(Field.second->size(), OS);
330 writeStringRef(Entry.Name, OS);
331 writeStringRef(Entry.Version, OS);
336 void WasmWriter::writeSectionContent(raw_ostream &OS,
338 writeStringRef(Section.Name, OS);
339 encodeULEB128(Section.Features.size(), OS);
341 writeUint8(OS, E.Prefix);
342 writeStringRef(E.Name, OS);
346 void WasmWriter::writeSectionContent(raw_ostream &OS,
349 writeSectionContent(OS, *S);
351 writeSectionContent(OS, *S);
353 writeSectionContent(OS, *S);
355 writeSectionContent(OS, *S);
357 writeSectionContent(OS, *S);
359 writeStringRef(Section.Name, OS);
360 Section.Payload.writeAsBinary(OS);
364 void WasmWriter::writeSectionContent(raw_ostream &OS,
366 encodeULEB128(Section.Signatures.size(), OS);
374 writeUint8(OS, Sig.Form);
375 encodeULEB128(Sig.ParamTypes.size(), OS);
377 writeUint8(OS, ParamType);
378 encodeULEB128(Sig.ReturnTypes.size(), OS);
380 writeUint8(OS, ReturnType);
384 void WasmWriter::writeSectionContent(raw_ostream &OS,
386 encodeULEB128(Section.Imports.size(), OS);
388 writeStringRef(Import.Module, OS);
389 writeStringRef(Import.Field, OS);
390 writeUint8(OS, Import.Kind);
393 encodeULEB128(Import.SigIndex, OS);
397 writeUint8(OS, Import.GlobalImport.Type);
398 writeUint8(OS, Import.GlobalImport.Mutable);
402 writeUint8(OS, 0); // Reserved 'attribute' field
403 encodeULEB128(Import.SigIndex, OS);
407 writeLimits(Import.Memory, OS);
410 writeUint8(OS, Import.TableImport.ElemType);
411 writeLimits(Import.TableImport.TableLimits, OS);
421 void WasmWriter::writeSectionContent(raw_ostream &OS,
423 encodeULEB128(Section.FunctionTypes.size(), OS);
425 encodeULEB128(FuncType, OS);
428 void WasmWriter::writeSectionContent(raw_ostream &OS,
430 encodeULEB128(Section.Exports.size(), OS);
432 writeStringRef(Export.Name, OS);
433 writeUint8(OS, Export.Kind);
434 encodeULEB128(Export.Index, OS);
438 void WasmWriter::writeSectionContent(raw_ostream &OS,
440 encodeULEB128(Section.StartFunction, OS);
443 void WasmWriter::writeSectionContent(raw_ostream &OS,
445 encodeULEB128(Section.Tables.size(), OS);
453 writeUint8(OS, Table.ElemType);
454 writeLimits(Table.TableLimits, OS);
458 void WasmWriter::writeSectionContent(raw_ostream &OS,
460 encodeULEB128(Section.Memories.size(), OS);
462 writeLimits(Mem, OS);
465 void WasmWriter::writeSectionContent(raw_ostream &OS,
467 encodeULEB128(Section.TagTypes.size(), OS);
469 writeUint8(OS, 0); // Reserved 'attribute' field
470 encodeULEB128(TagType, OS);
474 void WasmWriter::writeSectionContent(raw_ostream &OS,
476 encodeULEB128(Section.Globals.size(), OS);
484 writeUint8(OS, Global.Type);
485 writeUint8(OS, Global.Mutable);
486 writeInitExpr(OS, Global.Init);
490 void WasmWriter::writeSectionContent(raw_ostream &OS,
492 encodeULEB128(Section.Segments.size(), OS);
494 encodeULEB128(Segment.Flags, OS);
496 encodeULEB128(Segment.TableNumber, OS);
498 writeInitExpr(OS, Segment.Offset);
509 writeUint8(OS, ElemKind);
512 encodeULEB128(Segment.Functions.size(), OS);
514 encodeULEB128(Function, OS);
518 void WasmWriter::writeSectionContent(raw_ostream &OS,
520 encodeULEB128(Section.Functions.size(), OS);
541 encodeULEB128(OutString.size(), OS);
542 OS << OutString;
546 void WasmWriter::writeSectionContent(raw_ostream &OS,
548 encodeULEB128(Section.Segments.size(), OS);
550 encodeULEB128(Segment.InitFlags, OS);
552 encodeULEB128(Segment.MemoryIndex, OS);
554 writeInitExpr(OS, Segment.Offset);
555 encodeULEB128(Segment.Content.binary_size(), OS);
556 Segment.Content.writeAsBinary(OS);
560 void WasmWriter::writeSectionContent(raw_ostream &OS,
562 encodeULEB128(Section.Count, OS);
565 void WasmWriter::writeRelocSection(raw_ostream &OS, WasmYAML::Section &Sec,
569 writeStringRef("reloc.CODE", OS);
572 writeStringRef("reloc.DATA", OS);
576 writeStringRef(("reloc." + CustomSection->Name).str(), OS);
583 encodeULEB128(SectionIndex, OS);
584 encodeULEB128(Sec.Relocations.size(), OS);
587 writeUint8(OS, Reloc.Type);
588 encodeULEB128(Reloc.Offset, OS);
589 encodeULEB128(Reloc.Index, OS);
591 encodeSLEB128(Reloc.Addend, OS);
595 bool WasmWriter::writeWasm(raw_ostream &OS) {
597 OS.write(wasm::WasmMagic, sizeof(wasm::WasmMagic));
598 writeUint32(OS, Obj.Header.Version);
611 encodeULEB128(Sec->Type, OS);
661 encodeULEB128(OutString.size(), OS, HeaderSecSizeEncodingLen);
662 OS << OutString;
673 writeUint8(OS, wasm::WASM_SEC_CUSTOM);
679 encodeULEB128(OutString.size(), OS);
680 OS << OutString;