Rename some GC classes so that their roll will hopefully be clearer.
[oota-llvm.git] / include / llvm / OperandTraits.h
index 3811927e57b9787aca23e539801fd57cca672c4b..4c1c0382c8671488a1b2788604d4ba20a53af884 100644 (file)
@@ -1,4 +1,4 @@
-//===-- llvm/OperandTraits.h - OperandTraits class definition ---------------------*- C++ -*-===//
+//===-- llvm/OperandTraits.h - OperandTraits class definition ---*- C++ -*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -23,6 +23,10 @@ namespace llvm {
 //                          FixedNumOperands Trait Class
 //===----------------------------------------------------------------------===//
 
+/// FixedNumOperandTraits - determine the allocation regime of the Use array
+/// when it is a prefix to the User object, and the number of Use objects is
+/// known at compile time.
+
 template <unsigned ARITY>
 struct FixedNumOperandTraits {
   static Use *op_begin(User* U) {
@@ -62,6 +66,10 @@ struct OptionalOperandTraits : FixedNumOperandTraits<ARITY> {
 //                          VariadicOperand Trait Class
 //===----------------------------------------------------------------------===//
 
+/// VariadicOperandTraits - determine the allocation regime of the Use array
+/// when it is a prefix to the User object, and the number of Use objects is
+/// only known at allocation time.
+
 template <unsigned MINARITY = 0>
 struct VariadicOperandTraits {
   static Use *op_begin(User* U) {
@@ -80,6 +88,16 @@ struct VariadicOperandTraits {
 //                          HungoffOperand Trait Class
 //===----------------------------------------------------------------------===//
 
+/// HungoffOperandTraits - determine the allocation regime of the Use array
+/// when it is not a prefix to the User object, but allocated at an unrelated
+/// heap address.
+/// Assumes that the User subclass that is determined by this traits class
+/// has an OperandList member of type User::op_iterator. [Note: this is now
+/// trivially satisfied, because User has that member for historic reasons.]
+///
+/// This is the traits class that is needed when the Use array must be
+/// resizable.
+
 template <unsigned MINARITY = 1>
 struct HungoffOperandTraits {
   static Use *op_begin(User* U) {