[PATCH] D95478: [llvm-objcopy][NFC][Wasm] Do not use internal buffer while writing into the output.
Alexey Lapshin via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 18 06:07:15 PDT 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rGeb4c85e4501e: [llvm-objcopy][NFC][Wasm] Do not use internal buffer while writing into theā¦ (authored by avl).
Changed prior to commit:
https://reviews.llvm.org/D95478?vs=329844&id=331536#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D95478/new/
https://reviews.llvm.org/D95478
Files:
llvm/tools/llvm-objcopy/wasm/Writer.cpp
Index: llvm/tools/llvm-objcopy/wasm/Writer.cpp
===================================================================
--- llvm/tools/llvm-objcopy/wasm/Writer.cpp
+++ llvm/tools/llvm-objcopy/wasm/Writer.cpp
@@ -56,29 +56,21 @@
Error Writer::write() {
size_t TotalSize = finalize();
- std::unique_ptr<WritableMemoryBuffer> Buf =
- WritableMemoryBuffer::getNewMemBuffer(TotalSize);
- if (!Buf)
- return createStringError(errc::not_enough_memory,
- "failed to allocate memory buffer of " +
- Twine::utohexstr(TotalSize) + " bytes");
+ Out.reserveExtraSpace(TotalSize);
// Write the header.
- uint8_t *Ptr = reinterpret_cast<uint8_t *>(Buf->getBufferStart());
- Ptr = std::copy(Obj.Header.Magic.begin(), Obj.Header.Magic.end(), Ptr);
- support::endian::write32le(Ptr, Obj.Header.Version);
- Ptr += sizeof(Obj.Header.Version);
+ Out.write(Obj.Header.Magic.data(), Obj.Header.Magic.size());
+ uint32_t Version;
+ support::endian::write32le(&Version, Obj.Header.Version);
+ Out.write(reinterpret_cast<const char *>(&Version), sizeof(Version));
// Write each section.
for (size_t I = 0, S = SectionHeaders.size(); I < S; ++I) {
- Ptr = std::copy(SectionHeaders[I].begin(), SectionHeaders[I].end(), Ptr);
- ArrayRef<uint8_t> Contents = Obj.Sections[I].Contents;
- Ptr = std::copy(Contents.begin(), Contents.end(), Ptr);
+ Out.write(SectionHeaders[I].data(), SectionHeaders[I].size());
+ Out.write(reinterpret_cast<const char *>(Obj.Sections[I].Contents.data()),
+ Obj.Sections[I].Contents.size());
}
- // TODO: Implement direct writing to the output stream (without intermediate
- // memory buffer Buf).
- Out.write(Buf->getBufferStart(), Buf->getBufferSize());
return Error::success();
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D95478.331536.patch
Type: text/x-patch
Size: 1816 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210318/21877429/attachment.bin>
More information about the llvm-commits
mailing list