sync up with master file

llvm-svn: 254245
This commit is contained in:
Xinliang David Li 2015-11-29 04:53:15 +00:00
parent 61f0d074a0
commit abf49140d4
1 changed files with 22 additions and 10 deletions

View File

@ -296,14 +296,14 @@ typedef struct ValueProfData {
/* /*
* The closure is designed to abstact away two types of value profile data: * The closure is designed to abstact away two types of value profile data:
* - InstrProfRecord which is the primary data structure used to * - InstrProfRecord which is the primary data structure used to
* represent profile data in host tools (reader, writer, and profile-use) * represent profile data in host tools (reader, writer, and profile-use)
* - value profile runtime data structure suitable to be used by C * - value profile runtime data structure suitable to be used by C
* runtime library. * runtime library.
* *
* Both sources of data need to serialize to disk/memory-buffer in common * Both sources of data need to serialize to disk/memory-buffer in common
* format: ValueProfData. The abstraction allows compiler-rt's raw profiler * format: ValueProfData. The abstraction allows compiler-rt's raw profiler
* writer to share * the same code with indexed profile writer. * writer to share the same format and code with indexed profile writer.
* *
* For documentation of the member methods below, refer to corresponding methods * For documentation of the member methods below, refer to corresponding methods
* in class InstrProfRecord. * in class InstrProfRecord.
@ -337,7 +337,7 @@ typedef struct ValueProfRecordClosure {
*/ */
typedef struct ValueProfRuntimeRecord { typedef struct ValueProfRuntimeRecord {
/* Number of sites for each value profile kind. */ /* Number of sites for each value profile kind. */
uint16_t *NumValueSites; const uint16_t *NumValueSites;
/* An array of linked-list headers. The size of of the array is the /* An array of linked-list headers. The size of of the array is the
* total number of value profile sites : sum(NumValueSites[*])). Each * total number of value profile sites : sum(NumValueSites[*])). Each
* linked-list stores the values profiled for a value profile site. */ * linked-list stores the values profiled for a value profile site. */
@ -352,6 +352,16 @@ typedef struct ValueProfRuntimeRecord {
ValueProfNode **NodesKind[IPVK_Last + 1]; ValueProfNode **NodesKind[IPVK_Last + 1];
} ValueProfRuntimeRecord; } ValueProfRuntimeRecord;
/* Forward declarations of C interfaces. */
int initializeValueProfRuntimeRecord(ValueProfRuntimeRecord *RuntimeRecord,
const uint16_t *NumValueSites,
ValueProfNode **Nodes);
void finalizeValueProfRuntimeRecord(ValueProfRuntimeRecord *RuntimeRecord);
uint32_t getValueProfDataSizeRT(const ValueProfRuntimeRecord *Record);
ValueProfData *
serializeValueProfDataFromRT(const ValueProfRuntimeRecord *Record,
ValueProfData *Dst);
#undef INSTR_PROF_VALUE_PROF_DATA #undef INSTR_PROF_VALUE_PROF_DATA
#endif /* INSTR_PROF_VALUE_PROF_DATA */ #endif /* INSTR_PROF_VALUE_PROF_DATA */
@ -506,13 +516,15 @@ ValueProfData *serializeValueProfDataFrom(ValueProfRecordClosure *Closure,
/* /*
* The value profiler runtime library stores the value profile data * The value profiler runtime library stores the value profile data
* for a given function in NumValueSites and Nodes. This is the * for a given function in \c NumValueSites and \c Nodes structures.
* method to initialize the RuntimeRecord with the runtime data to * \c ValueProfRuntimeRecord class is used to encapsulate the runtime
* pre-compute the information needed to efficiently implement * profile data and provides fast interfaces to retrieve the profile
* ValueProfRecordClosure's callback interfaces. * information. This interface is used to initialize the runtime record
* and pre-compute the information needed for efficient implementation
* of callbacks required by ValueProfRecordClosure class.
*/ */
int initializeValueProfRuntimeRecord(ValueProfRuntimeRecord *RuntimeRecord, int initializeValueProfRuntimeRecord(ValueProfRuntimeRecord *RuntimeRecord,
uint16_t *NumValueSites, const uint16_t *NumValueSites,
ValueProfNode **Nodes) { ValueProfNode **Nodes) {
unsigned I, J, S = 0, NumValueKinds = 0; unsigned I, J, S = 0, NumValueKinds = 0;
RuntimeRecord->NumValueSites = NumValueSites; RuntimeRecord->NumValueSites = NumValueSites;