Skip to content

Commit 831a143

Browse files
committed
[WebAssembly] Change prefix on data segment flags to WASM_DATA_SEGMENT
Element sections will also need flags, so we shouldn't squat the WASM_SEGMENT namespace. Depends on D90948. Differential Revision: https://reviews.llvm.org/D92315
1 parent 418df4a commit 831a143

File tree

7 files changed

+26
-20
lines changed

7 files changed

+26
-20
lines changed

lld/wasm/OutputSections.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ void DataSection::finalizeContents() {
138138
#ifndef NDEBUG
139139
unsigned activeCount = std::count_if(
140140
segments.begin(), segments.end(), [](OutputSegment *segment) {
141-
return (segment->initFlags & WASM_SEGMENT_IS_PASSIVE) == 0;
141+
return (segment->initFlags & WASM_DATA_SEGMENT_IS_PASSIVE) == 0;
142142
});
143143
#endif
144144

@@ -154,9 +154,9 @@ void DataSection::finalizeContents() {
154154
continue;
155155
raw_string_ostream os(segment->header);
156156
writeUleb128(os, segment->initFlags, "init flags");
157-
if (segment->initFlags & WASM_SEGMENT_HAS_MEMINDEX)
157+
if (segment->initFlags & WASM_DATA_SEGMENT_HAS_MEMINDEX)
158158
writeUleb128(os, 0, "memory index");
159-
if ((segment->initFlags & WASM_SEGMENT_IS_PASSIVE) == 0) {
159+
if ((segment->initFlags & WASM_DATA_SEGMENT_IS_PASSIVE) == 0) {
160160
WasmInitExpr initExpr;
161161
if (config->isPic) {
162162
initExpr.Opcode = WASM_OPCODE_GLOBAL_GET;

lld/wasm/Writer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -841,7 +841,7 @@ void Writer::createOutputSegments() {
841841
LLVM_DEBUG(dbgs() << "new segment: " << name << "\n");
842842
s = make<OutputSegment>(name);
843843
if (config->sharedMemory)
844-
s->initFlags = WASM_SEGMENT_IS_PASSIVE;
844+
s->initFlags = WASM_DATA_SEGMENT_IS_PASSIVE;
845845
// Exported memories are guaranteed to be zero-initialized, so no need
846846
// to emit data segments for bss sections.
847847
// TODO: consider initializing bss sections with memory.fill
@@ -886,7 +886,7 @@ static void createFunction(DefinedFunction *func, StringRef bodyContent) {
886886
}
887887

888888
bool Writer::needsPassiveInitialization(const OutputSegment *segment) {
889-
return segment->initFlags & WASM_SEGMENT_IS_PASSIVE &&
889+
return segment->initFlags & WASM_DATA_SEGMENT_IS_PASSIVE &&
890890
segment->name != ".tdata" && !segment->isBss;
891891
}
892892

llvm/include/llvm/BinaryFormat/Wasm.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,11 @@ struct WasmFunction {
146146

147147
struct WasmDataSegment {
148148
uint32_t InitFlags;
149-
uint32_t MemoryIndex; // present if InitFlags & WASM_SEGMENT_HAS_MEMINDEX
150-
WasmInitExpr Offset; // present if InitFlags & WASM_SEGMENT_IS_PASSIVE == 0
149+
// Present if InitFlags & WASM_DATA_SEGMENT_HAS_MEMINDEX.
150+
uint32_t MemoryIndex;
151+
// Present if InitFlags & WASM_DATA_SEGMENT_IS_PASSIVE == 0.
152+
WasmInitExpr Offset;
153+
151154
ArrayRef<uint8_t> Content;
152155
StringRef Name; // from the "segment info" section
153156
uint32_t Alignment;
@@ -300,8 +303,8 @@ enum : unsigned {
300303
};
301304

302305
enum : unsigned {
303-
WASM_SEGMENT_IS_PASSIVE = 0x01,
304-
WASM_SEGMENT_HAS_MEMINDEX = 0x02,
306+
WASM_DATA_SEGMENT_IS_PASSIVE = 0x01,
307+
WASM_DATA_SEGMENT_HAS_MEMINDEX = 0x02,
305308
};
306309

307310
// Feature policy prefixes used in the custom "target_features" section

llvm/lib/MC/WasmObjectWriter.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -972,9 +972,9 @@ uint32_t WasmObjectWriter::writeDataSection(const MCAsmLayout &Layout) {
972972

973973
for (const WasmDataSegment &Segment : DataSegments) {
974974
encodeULEB128(Segment.InitFlags, W->OS); // flags
975-
if (Segment.InitFlags & wasm::WASM_SEGMENT_HAS_MEMINDEX)
975+
if (Segment.InitFlags & wasm::WASM_DATA_SEGMENT_HAS_MEMINDEX)
976976
encodeULEB128(0, W->OS); // memory index
977-
if ((Segment.InitFlags & wasm::WASM_SEGMENT_IS_PASSIVE) == 0) {
977+
if ((Segment.InitFlags & wasm::WASM_DATA_SEGMENT_IS_PASSIVE) == 0) {
978978
W->OS << char(Segment.Offset > INT32_MAX ? wasm::WASM_OPCODE_I64_CONST
979979
: wasm::WASM_OPCODE_I32_CONST);
980980
encodeSLEB128(Segment.Offset, W->OS); // offset
@@ -1393,8 +1393,9 @@ uint64_t WasmObjectWriter::writeOneObject(MCAssembler &Asm,
13931393
DataSegments.emplace_back();
13941394
WasmDataSegment &Segment = DataSegments.back();
13951395
Segment.Name = SectionName;
1396-
Segment.InitFlags =
1397-
Section.getPassive() ? (uint32_t)wasm::WASM_SEGMENT_IS_PASSIVE : 0;
1396+
Segment.InitFlags = Section.getPassive()
1397+
? (uint32_t)wasm::WASM_DATA_SEGMENT_IS_PASSIVE
1398+
: 0;
13981399
Segment.Offset = DataSize;
13991400
Segment.Section = &Section;
14001401
addData(Segment.Data, Section);

llvm/lib/Object/WasmObjectFile.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1366,9 +1366,11 @@ Error WasmObjectFile::parseDataSection(ReadContext &Ctx) {
13661366
while (Count--) {
13671367
WasmSegment Segment;
13681368
Segment.Data.InitFlags = readVaruint32(Ctx);
1369-
Segment.Data.MemoryIndex = (Segment.Data.InitFlags & wasm::WASM_SEGMENT_HAS_MEMINDEX)
1370-
? readVaruint32(Ctx) : 0;
1371-
if ((Segment.Data.InitFlags & wasm::WASM_SEGMENT_IS_PASSIVE) == 0) {
1369+
Segment.Data.MemoryIndex =
1370+
(Segment.Data.InitFlags & wasm::WASM_DATA_SEGMENT_HAS_MEMINDEX)
1371+
? readVaruint32(Ctx)
1372+
: 0;
1373+
if ((Segment.Data.InitFlags & wasm::WASM_DATA_SEGMENT_IS_PASSIVE) == 0) {
13721374
if (Error Err = readInitExpr(Segment.Data.Offset, Ctx))
13731375
return Err;
13741376
} else {

llvm/lib/ObjectYAML/WasmEmitter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -526,9 +526,9 @@ void WasmWriter::writeSectionContent(raw_ostream &OS,
526526
encodeULEB128(Section.Segments.size(), OS);
527527
for (auto &Segment : Section.Segments) {
528528
encodeULEB128(Segment.InitFlags, OS);
529-
if (Segment.InitFlags & wasm::WASM_SEGMENT_HAS_MEMINDEX)
529+
if (Segment.InitFlags & wasm::WASM_DATA_SEGMENT_HAS_MEMINDEX)
530530
encodeULEB128(Segment.MemoryIndex, OS);
531-
if ((Segment.InitFlags & wasm::WASM_SEGMENT_IS_PASSIVE) == 0)
531+
if ((Segment.InitFlags & wasm::WASM_DATA_SEGMENT_IS_PASSIVE) == 0)
532532
writeInitExpr(OS, Segment.Offset);
533533
encodeULEB128(Segment.Content.binary_size(), OS);
534534
Segment.Content.writeAsBinary(OS);

llvm/lib/ObjectYAML/WasmYAML.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,12 +448,12 @@ void MappingTraits<WasmYAML::DataSegment>::mapping(
448448
IO &IO, WasmYAML::DataSegment &Segment) {
449449
IO.mapOptional("SectionOffset", Segment.SectionOffset);
450450
IO.mapRequired("InitFlags", Segment.InitFlags);
451-
if (Segment.InitFlags & wasm::WASM_SEGMENT_HAS_MEMINDEX) {
451+
if (Segment.InitFlags & wasm::WASM_DATA_SEGMENT_HAS_MEMINDEX) {
452452
IO.mapRequired("MemoryIndex", Segment.MemoryIndex);
453453
} else {
454454
Segment.MemoryIndex = 0;
455455
}
456-
if ((Segment.InitFlags & wasm::WASM_SEGMENT_IS_PASSIVE) == 0) {
456+
if ((Segment.InitFlags & wasm::WASM_DATA_SEGMENT_IS_PASSIVE) == 0) {
457457
IO.mapRequired("Offset", Segment.Offset);
458458
} else {
459459
Segment.Offset.Opcode = wasm::WASM_OPCODE_I32_CONST;

0 commit comments

Comments
 (0)