Add SkSTArray, hide stack storage cons in SkTArray, unify SkTArray init logic

Review URL: http://codereview.appspot.com/5127044/



git-svn-id: http://skia.googlecode.com/svn/trunk@2342 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/gpu/include/GrAllocator.h b/gpu/include/GrAllocator.h
index eca2ab0..7f1fe5b 100755
--- a/gpu/include/GrAllocator.h
+++ b/gpu/include/GrAllocator.h
@@ -30,7 +30,6 @@
      *                          Caller is responsible for freeing this memory.
      */
     GrAllocator(size_t itemSize, int itemsPerBlock, void* initialBlock) :
-            fBlocks(fBlockInitialStorage, NUM_INIT_BLOCK_PTRS),
             fItemSize(itemSize),
             fItemsPerBlock(itemsPerBlock),
             fOwnFirstBlock(NULL == initialBlock),
@@ -128,13 +127,12 @@
 private:
     static const int NUM_INIT_BLOCK_PTRS = 8;
     
-    SkTArray<void*> fBlocks;
-    size_t          fBlockSize;
-    char            fBlockInitialStorage[NUM_INIT_BLOCK_PTRS*sizeof(void*)];
-    size_t          fItemSize;
-    int             fItemsPerBlock;
-    bool            fOwnFirstBlock;
-    int             fCount;
+    SkSTArray<NUM_INIT_BLOCK_PTRS, void*>   fBlocks;
+    size_t                                  fBlockSize;
+    size_t                                  fItemSize;
+    int                                     fItemsPerBlock;
+    bool                                    fOwnFirstBlock;
+    int                                     fCount;
 };
 
 template <typename T>