2012-03-21 11 views
0

私はllvmインライン化の仕組み(Inlinerクラス)を理解しようとしています。私が理解できない操作は以下の通りです。インライン化はどのようにLLVMで動作しますか?

SmallVector<std::pair<CallSite, int>, 16> CallSites; 

の場合、SmallVectorはllvmクラスです。特に、私はこのコードで "16"の機能が何であるか分かりません。

+0

Googleの最初のヒットかもしれませんか? http://llvm.org/docs/doxygen/html/classllvm_1_1SmallVector.html?ごめんなさい。 –

答えて

2

は、各要素がstd::pair<CallSite, int>の16要素であると宣言しています。

編集:Eliが正しく指摘したように、SmallVectorのサイズを動的に変更することができます。 16は組み込みサイズに過ぎません(これは、ヒープ割り当てで最大16個の要素を格納する必要がないことを意味します)。

+1

注意 - これは間違っているかもしれません - "16要素"の意味はどうですか? 16は予想される要素の典型的な最大数は何ですか?というヒントですが、ベクトルは任意のサイズに拡大することがあります。このヒントにより、SmallVectorは高価なヒープ割り当てを避け、スタック上のいくつかの要素を事前に割り当てることができます –

+0

"16"はジェネリックス内にありますが、SmallVector内のSmallVectorにできませんか? – Mari

+0

@マリ、そうは思わない。 – CAFxX

関連する問題