diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-04-18 20:54:46 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-04-18 20:54:46 +0000 |
commit | 50ebe53353f6870e913f7715d6d4fc5a1f5bedd6 (patch) | |
tree | 70df5b1fbef32a1fdc51869c38e2e78f28a06d53 | |
parent | 3f3bf9387b75f4c932e4c59bd7af719d26ae4b99 (diff) | |
download | external_llvm-50ebe53353f6870e913f7715d6d4fc5a1f5bedd6.zip external_llvm-50ebe53353f6870e913f7715d6d4fc5a1f5bedd6.tar.gz external_llvm-50ebe53353f6870e913f7715d6d4fc5a1f5bedd6.tar.bz2 |
malloc elimination: it's a bad idea to use raw_svector_ostream on a
small heap-allocated SmallString because it unconditionally forces a malloc.
(Revised version of r129688, with the necessary flush() call.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129716 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/MC/MCObjectStreamer.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/MC/MCObjectStreamer.cpp b/lib/MC/MCObjectStreamer.cpp index ef22eaa..bd7de57 100644 --- a/lib/MC/MCObjectStreamer.cpp +++ b/lib/MC/MCObjectStreamer.cpp @@ -191,8 +191,11 @@ void MCObjectStreamer::EmitInstruction(const MCInst &Inst) { void MCObjectStreamer::EmitInstToFragment(const MCInst &Inst) { MCInstFragment *IF = new MCInstFragment(Inst, getCurrentSectionData()); - raw_svector_ostream VecOS(IF->getCode()); + SmallString<128> Code; + raw_svector_ostream VecOS(Code); getAssembler().getEmitter().EncodeInstruction(Inst, VecOS, IF->getFixups()); + VecOS.flush(); + IF->getCode().append(Code.begin(), Code.end()); } static const MCExpr *BuildSymbolDiff(MCContext &Context, |