Pass a vector around to reduce dynamic allocation
authorChris Lattner <sabre@nondot.org>
Thu, 9 Oct 2003 20:45:42 +0000 (20:45 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 9 Oct 2003 20:45:42 +0000 (20:45 +0000)
Throw the RawInst class in an anon namespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@8990 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Bytecode/Reader/InstructionReader.cpp
lib/Bytecode/Reader/Reader.cpp
lib/Bytecode/Reader/ReaderInternals.h

index b085581c60eae6b0df1d99aaab0fb63eef8b91a4..1b2ada0d493e29823a4fcb32aece45ce376c3a29 100644 (file)
 #include "llvm/iPHINode.h"
 #include "llvm/iOther.h"
 
-struct RawInst {       // The raw fields out of the bytecode stream...
-  unsigned NumOperands;
-  unsigned Opcode;
-  unsigned Type;
-
-  RawInst(const unsigned char *&Buf, const unsigned char *EndBuf,
-          std::vector<unsigned> &Args);
-          
-};
+namespace {
+  struct RawInst {       // The raw fields out of the bytecode stream...
+    unsigned NumOperands;
+    unsigned Opcode;
+    unsigned Type;
+    
+    RawInst(const unsigned char *&Buf, const unsigned char *EndBuf,
+            std::vector<unsigned> &Args);
+  };
+}
 
 
 
@@ -102,8 +103,9 @@ RawInst::RawInst(const unsigned char *&Buf, const unsigned char *EndBuf,
 
 
 Instruction *BytecodeParser::ParseInstruction(const unsigned char *&Buf,
-                                              const unsigned char *EndBuf) {
-  std::vector<unsigned> Args;
+                                              const unsigned char *EndBuf,
+                                              std::vector<unsigned> &Args) {
+  Args.clear();
   RawInst RI(Buf, EndBuf, Args);
   const Type *InstTy = getType(RI.Type);
 
index bf2b0118a3556426b7bc35f6f7069b12433b5fc4..ac380372372a12eea14fecb10b9b93d72b52562e 100644 (file)
@@ -200,7 +200,8 @@ BasicBlock *BytecodeParser::ParseBasicBlock(const unsigned char *&Buf,
     BB = ParsedBasicBlocks[BlockNo];
 
   while (Buf < EndBuf) {
-    Instruction *Inst = ParseInstruction(Buf, EndBuf);
+    std::vector<unsigned> Args;
+    Instruction *Inst = ParseInstruction(Buf, EndBuf, Args);
     insertValue(Inst, Values);
     BB->getInstList().push_back(Inst);
     BCR_TRACE(4, Inst);
index 1fefe23fafbfcd531f37e3925b4a91e85375e24a..2d75a3213130b383d33568cdcf9f50771378eb6d 100644 (file)
@@ -149,7 +149,8 @@ private:
                               unsigned BlockNo);
 
   Instruction *ParseInstruction(const unsigned char *&Buf,
-                                const unsigned char *End);
+                                const unsigned char *End,
+                                std::vector<unsigned> &Args);
 
   void ParseConstantPool(const unsigned char *&Buf, const unsigned char *EndBuf,
                          ValueTable &Tab, TypeValuesListTy &TypeTab);