• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

kcachegrind

  • sources
  • kde-4.12
  • kdesdk
  • kcachegrind
  • libcore
tracedata.h
Go to the documentation of this file.
1 /* This file is part of KCachegrind.
2  Copyright (C) 2002 - 2009 Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
3 
4  KCachegrind is free software; you can redistribute it and/or
5  modify it under the terms of the GNU General Public
6  License as published by the Free Software Foundation, version 2.
7 
8  This program is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License
14  along with this program; see the file COPYING. If not, write to
15  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16  Boston, MA 02110-1301, USA.
17 */
18 
19 /*
20  * Classes holding profiling data for
21  * multiple tracefiles for one command.
22  * See class TraceData first.
23  */
24 
25 #ifndef TRACEDATA_H
26 #define TRACEDATA_H
27 
28 #include <qstring.h>
29 #include <qstringlist.h>
30 #include <qmap.h>
31 
32 #include "costitem.h"
33 #include "subcost.h"
34 #include "utils.h"
35 #include "addr.h"
36 #include "context.h"
37 #include "eventtype.h"
38 
39 class QFile;
40 
121 class FixCost;
122 class FixCallCost;
123 class FixJump;
124 class FixPool;
125 class DynPool;
126 class Logger;
127 
128 class ProfileCostArray;
129 class EventType;
130 class EventTypeSet;
131 class EventTypeMapping;
132 class TraceJumpCost;
133 class TraceCallCost;
134 class TraceInclusiveCost;
135 
136 class TracePartInstr;
137 class TracePartInstrCall;
138 class TracePartLine;
139 class TracePartLineCall;
140 class TracePartCall;
141 class TracePartLineRegion;
142 class TracePartFunction;
143 class TracePartClass;
144 class TracePartObject;
145 class TracePartFile;
146 
147 class TraceInstr;
148 class TraceInstrJump;
149 class TraceInstrCall;
150 class TraceLine;
151 class TraceLineJump;
152 class TraceLineCall;
153 class TraceCall;
154 class TraceLineRegion;
155 class TraceFunctionSource;
156 class TraceFunction;
157 class TraceFunctionCycle;
158 class TraceClass;
159 class TraceObject;
160 class TraceFile;
161 class TracePart;
162 class TraceData;
163 
164 typedef QList<ProfileCostArray*> TraceCostList;
165 typedef QList<TraceJumpCost*> TraceJumpCostList;
166 typedef QList<TraceCallCost*> TraceCallCostList;
167 typedef QList<TraceInclusiveCost*> TraceInclusiveCostList;
168 
169 typedef QList<TracePartCall*> TracePartCallList;
170 typedef QList<TracePartInstr*> TracePartInstrList;
171 typedef QList<TracePartLine*> TracePartLineList;
172 typedef QList<TracePartLineRegion*> TracePartLineRegionList;
173 typedef QList<TracePartFunction*> TracePartFunctionList;
174 typedef QList<TracePartInstrCall*> TracePartInstrCallList;
175 typedef QList<TracePartLineCall*> TracePartLineCallList;
176 typedef QList<TracePart*> TracePartList;
177 
178 typedef QList<TraceInstr*> TraceInstrList;
179 typedef QList<TraceLine*> TraceLineList;
180 typedef QList<TraceInstrJump*> TraceInstrJumpList;
181 typedef QList<TraceLineJump*> TraceLineJumpList;
182 typedef QList<TraceInstrCall*> TraceInstrCallList;
183 typedef QList<TraceLineCall*> TraceLineCallList;
184 typedef QList<TraceCall*> TraceCallList;
185 typedef QList<TraceFile*> TraceFileList;
186 typedef QList<TraceLineRegion*> TraceLineRegionList;
187 typedef QList<TraceFunctionSource*> TraceFunctionSourceList;
188 typedef QList<TraceFunction*> TraceFunctionList;
189 typedef QList<TraceFunctionCycle*> TraceFunctionCycleList;
190 typedef QMap<QString, TraceObject> TraceObjectMap;
191 typedef QMap<QString, TraceClass> TraceClassMap;
192 typedef QMap<QString, TraceFile> TraceFileMap;
193 typedef QMap<QString, TraceFunction> TraceFunctionMap;
194 typedef QMap<uint, TraceLine> TraceLineMap;
195 typedef QMap<Addr, TraceInstr> TraceInstrMap;
196 
197 
201 class TraceJumpCost: public CostItem
202 {
203  public:
204  TraceJumpCost(ProfileContext*);
205  virtual ~TraceJumpCost();
206 
207  // reimplementations for cost addition
208  virtual QString costString(EventTypeSet* m);
209  virtual void clear();
210 
211  void addCost(TraceJumpCost*);
212 
213  // additional cost metrics
214  SubCost followedCount();
215  SubCost executedCount();
216  void addFollowedCount(SubCost c) { _followedCount += c; }
217  void addExecutedCount(SubCost c) { _executedCount += c; }
218 
219  protected:
220  SubCost _executedCount, _followedCount;
221 };
222 
223 
224 
228 class TraceCallCost: public ProfileCostArray
229 {
230  public:
231  TraceCallCost(ProfileContext*);
232  virtual ~TraceCallCost();
233 
234  // reimplementations for cost addition
235  virtual QString costString(EventTypeSet* m);
236  virtual void clear();
237 
238  // additional cost metric
239  SubCost callCount();
240  QString prettyCallCount();
241  void addCallCount(SubCost c);
242 
243  protected:
244  SubCost _callCount;
245 };
246 
247 
251 class TraceInclusiveCost: public ProfileCostArray
252 {
253  public:
254  TraceInclusiveCost(ProfileContext*);
255  virtual ~TraceInclusiveCost();
256 
257  // reimplementations for cost addition
258  virtual QString costString(EventTypeSet* m);
259  virtual void clear();
260 
261  // additional cost metric
262  ProfileCostArray* inclusive();
263  void addInclusive(ProfileCostArray*);
264 
265  protected:
266  ProfileCostArray _inclusive;
267 };
268 
269 
274 class TraceListCost: public ProfileCostArray
275 {
276  public:
277  TraceListCost(ProfileContext*);
278  virtual ~TraceListCost();
279 
280  // reimplementation for dependency list
281  virtual void update();
282 
283  TraceCostList& deps() { return _deps; }
284  void addDep(ProfileCostArray*);
285  ProfileCostArray* findDepFromPart(TracePart*);
286 
287  protected:
288  // overwrite in subclass to change update behaviour
289  virtual bool onlyActiveParts() { return false; }
290 
291  TraceCostList _deps;
292 
293  private:
294  // very temporary: cached
295  ProfileCostArray* _lastDep;
296 };
297 
298 
303 class TraceJumpListCost: public TraceJumpCost
304 {
305  public:
306  TraceJumpListCost(ProfileContext*);
307  virtual ~TraceJumpListCost();
308 
309  // reimplementation for dependency list
310  virtual void update();
311 
312  TraceJumpCostList deps() { return _deps; }
313  void addDep(TraceJumpCost*);
314  TraceJumpCost* findDepFromPart(TracePart*);
315 
316  protected:
317  // overwrite in subclass to change update behaviour
318  virtual bool onlyActiveParts() { return false; }
319 
320  TraceJumpCostList _deps;
321 
322  private:
323  // very temporary: cached
324  TraceJumpCost* _lastDep;
325 };
326 
327 
328 
329 
334 class TraceCallListCost: public TraceCallCost
335 {
336  public:
337  TraceCallListCost(ProfileContext*);
338  virtual ~TraceCallListCost();
339 
340  // reimplementation for dependency list
341  virtual void update();
342 
343  TraceCallCostList deps() { return _deps; }
344  void addDep(TraceCallCost*);
345  TraceCallCost* findDepFromPart(TracePart*);
346 
347  protected:
348  // overwrite in subclass to change update behaviour
349  virtual bool onlyActiveParts() { return false; }
350 
351  TraceCallCostList _deps;
352 
353  private:
354  // very temporary: cached
355  TraceCallCost* _lastDep;
356 };
357 
358 
362 class TraceInclusiveListCost: public TraceInclusiveCost
363 {
364  public:
365  TraceInclusiveListCost(ProfileContext*);
366  virtual ~TraceInclusiveListCost();
367 
368  // reimplementation for dependency
369  virtual void update();
370 
371  TraceInclusiveCostList deps() { return _deps; }
372  void addDep(TraceInclusiveCost*);
373  TraceInclusiveCost* findDepFromPart(TracePart*);
374 
375  protected:
376  // overwrite in subclass to change update behaviour
377  virtual bool onlyActiveParts() { return false; }
378 
379  TraceInclusiveCostList _deps;
380 
381  private:
382  // very temporary: cached
383  TraceInclusiveCost* _lastDep;
384 };
385 
386 
387 
388 
389 
390 /*-----------------------------------------------------------------
391  * Classes for cost items of one trace file, i.e. a "trace part"
392  *-----------------------------------------------------------------
393  */
394 
398 class TracePartInstrJump: public TraceJumpCost
399 {
400  public:
401  TracePartInstrJump(TraceInstrJump*, TracePartInstrJump*);
402  virtual ~TracePartInstrJump();
403 
404  // fix cost item
405  virtual void update() {}
406  TraceInstrJump* instrJump() const { return (TraceInstrJump*) _dep; }
407  TracePartInstrJump* next() const { return _next; }
408 
409  private:
410  // chaining all parts for InstrJump
411  TracePartInstrJump* _next;
412 };
413 
414 
419 class TracePartInstrCall: public TraceCallCost
420 {
421 public:
422  TracePartInstrCall(TraceInstrCall*);
423  virtual ~TracePartInstrCall();
424 
425  // fix cost item
426  virtual void update() {}
427  TraceInstrCall* instrCall() const { return (TraceInstrCall*) _dep; }
428 };
429 
430 
435 class TracePartInstr: public ProfileCostArray
436 {
437 public:
438  TracePartInstr(TraceInstr*);
439  virtual ~TracePartInstr();
440 
441  // fix cost item
442  virtual void update() {}
443 
444  TraceInstr* instr() const { return (TraceInstr*)_dep; }
445 };
446 
447 
451 class TracePartLineJump: public TraceJumpCost
452 {
453  public:
454  TracePartLineJump(TraceLineJump*);
455  virtual ~TracePartLineJump();
456 
457  // fix cost item
458  virtual void update() {}
459  TraceLineJump* lineJump() const { return (TraceLineJump*) _dep; }
460 };
461 
462 
467 class TracePartLineCall: public TraceCallCost
468 {
469 public:
470  TracePartLineCall(TraceLineCall*);
471  virtual ~TracePartLineCall();
472 
473  // fix cost item
474  virtual void update() {}
475  TraceLineCall* lineCall() const { return (TraceLineCall*) _dep; }
476 };
477 
478 
479 
484 class TracePartLine: public ProfileCostArray
485 {
486 public:
487  TracePartLine(TraceLine*);
488  virtual ~TracePartLine();
489 
490  // fix cost item
491  virtual void update() {}
492 
493  TraceLine* line() const { return (TraceLine*)_dep; }
494 };
495 
496 
500 class TracePartLineRegion: public TraceInclusiveCost
501 {
502 public:
503  TracePartLineRegion(TraceLineRegion*);
504  virtual ~TracePartLineRegion();
505 
506  virtual void update();
507 
508  TraceLineRegion* region() const { return (TraceLineRegion*)_dep; }
509 };
510 
511 
516 class TracePartCall: public TraceCallListCost
517 {
518 public:
519  TracePartCall(TraceCall* call);
520  virtual ~TracePartCall();
521 
522  // calls a function itself?
523  bool isRecursion();
524 
525  // reimplementation for dependency list
526  virtual void update();
527 
528  TraceCall* call() const { return (TraceCall*)_dep; }
529 
530  FixCallCost* setFirstFixCallCost(FixCallCost* fc)
531  { FixCallCost* t = _firstFixCallCost; _firstFixCallCost = fc; return t; }
532  FixCallCost* firstFixCallCost() const { return _firstFixCallCost; }
533 
534 private:
535  FixCallCost* _firstFixCallCost;
536 };
537 
538 
543 class TracePartFunction: public TraceInclusiveCost
544 {
545 public:
546  TracePartFunction(TraceFunction*,
547  TracePartObject*, TracePartFile*);
548  virtual ~TracePartFunction();
549 
550  virtual void update();
551  virtual QString costString(EventTypeSet* m);
552 
553  void addPartInstr(TracePartInstr*);
554  void addPartLine(TracePartLine*);
555  void addPartCaller(TracePartCall*);
556  void addPartCalling(TracePartCall*);
557 
558  TraceFunction* function() { return (TraceFunction*) _dep; }
559  TracePartObject* partObject() { return _partObject; }
560  TracePartClass* partClass() { return _partClass; }
561  TracePartFile* partFile() { return _partFile; }
562  const TracePartCallList& partCallers() { return _partCallers; }
563  const TracePartCallList& partCallings() { return _partCallings; }
564  void setPartObject(TracePartObject* o) { _partObject = o; }
565  void setPartClass(TracePartClass* c) { _partClass = c; }
566  void setPartFile(TracePartFile* f) { _partFile = f; }
567 
568  /* for linked list of FixXXX objects */
569  FixCost* setFirstFixCost(FixCost* fc)
570  { FixCost* t = _firstFixCost; _firstFixCost = fc; return t; }
571  FixCost* firstFixCost() const { return _firstFixCost; }
572  FixJump* setFirstFixJump(FixJump* fj)
573  { FixJump* t = _firstFixJump; _firstFixJump = fj; return t; }
574  FixJump* firstFixJump() const { return _firstFixJump; }
575 
576  // additional cost metrics
577  SubCost calledCount();
578  SubCost callingCount();
579  QString prettyCalledCount();
580  QString prettyCallingCount();
581  int calledContexts();
582  int callingContexts();
583 
584 private:
585  TracePartObject* _partObject;
586  TracePartClass* _partClass;
587  TracePartFile* _partFile;
588 
589  TracePartCallList _partCallings;
590  TracePartCallList _partCallers;
591  TracePartInstrList _partInstr;
592  TracePartLineList _partLines;
593 
594  // cached
595  SubCost _calledCount, _callingCount;
596  int _calledContexts, _callingContexts;
597 
598  FixCost* _firstFixCost;
599  FixJump* _firstFixJump;
600 };
601 
602 
607 class TracePartClass: public TraceInclusiveListCost
608 {
609 public:
610  TracePartClass(TraceClass*);
611  virtual ~TracePartClass();
612 
613  QString prettyName() const;
614 
615  TraceClass* cls() { return (TraceClass*)_dep; }
616  void addPartFunction(TracePartFunction* f) { addDep(f); }
617 };
618 
619 
624 class TracePartFile: public TraceInclusiveListCost
625 {
626 public:
627  TracePartFile(TraceFile*);
628  virtual ~TracePartFile();
629 
630  TraceFile* file() { return (TraceFile*)_dep; }
631  void addPartFunction(TracePartFunction* f) { addDep(f); }
632 };
633 
634 
639 class TracePartObject: public TraceInclusiveListCost
640 {
641 public:
642  TracePartObject(TraceObject*);
643  virtual ~TracePartObject();
644 
645  TraceObject* object() const { return (TraceObject*)_dep; }
646  void addPartFunction(TracePartFunction* f) { addDep(f); }
647 };
648 
649 
650 
655 class TracePart: public TraceListCost
656 {
657 public:
658  TracePart(TraceData*);
659  virtual ~TracePart();
660 
661  virtual TracePart* part() { return this; }
662  virtual const TracePart* part() const { return this; }
663 
664  QString shortName() const;
665  QString prettyName() const;
667  QString name() const { return _name; }
668  QString description() const { return _descr; }
669  QString trigger() const { return _trigger; }
670  QString timeframe() const { return _timeframe; }
671  QString version() const { return _version; }
672  int partNumber() const { return _number; }
673  int threadID() const { return _tid; }
674  int processID() const { return _pid; }
675  void setDescription(const QString& d) { _descr = d; }
676  void setTrigger(const QString& t) { _trigger = t; }
677  void setTimeframe(const QString& t) { _timeframe = t; }
678  void setVersion(const QString& v) { _version = v; }
679  void setName(const QString& n) { _name = n; }
680  void setPartNumber(int n);
681  void setThreadID(int t);
682  void setProcessID(int p);
683  ProfileCostArray* totals() { return &_totals; }
684  /* passes ownership of mapping */
685  void setEventMapping(EventTypeMapping* sm) { _eventTypeMapping = sm; }
686  EventTypeMapping* eventTypeMapping() { return _eventTypeMapping; }
687 
688  // returns true if something changed
689  bool activate(bool);
690  bool isActive() const { return _active; }
691 
692  // for sorting
693  bool operator<(const TracePart&) const;
694 
695 private:
696  QIODevice* _file;
697  QString _name;
698  QString _descr;
699  QString _trigger;
700  QString _timeframe;
701  QString _version;
702 
703  int _number, _tid, _pid;
704 
705  bool _active;
706 
707  // the totals line
708  ProfileCostArray _totals;
709 
710  // event type mapping for all fix costs of this part
711  EventTypeMapping* _eventTypeMapping;
712 };
713 
714 
715 
716 /*-----------------------------------------------------------------
717  * Classes for cost items summed up from multiple trace parts
718  *-----------------------------------------------------------------
719  */
720 
721 
725 class TraceInstrJump: public TraceJumpCost
726 {
727 public:
728  TraceInstrJump(TraceInstr* instrFrom, TraceInstr* instrTo,
729  bool isCondJump);
730  virtual ~TraceInstrJump();
731 
732  virtual QString name() const;
733 
734  virtual void update();
735 
736  TraceInstr* instrFrom() const { return _instrFrom; }
737  TraceInstr* instrTo() const { return _instrTo; }
738  bool isCondJump() const { return _isCondJump; }
739 
740  // part factory
741  TracePartInstrJump* partInstrJump(TracePart*);
742 
743  private:
744  TraceInstr *_instrFrom, *_instrTo;
745  bool _isCondJump;
746  // list of parts for this InstrJump
747  TracePartInstrJump* _first;
748 };
749 
750 
754 class TraceLineJump: public TraceJumpListCost
755 {
756  public:
757  TraceLineJump(TraceLine* lineFrom, TraceLine* lineTo,
758  bool isCondJump);
759  virtual ~TraceLineJump();
760 
761  virtual QString name() const;
762 
763  TraceLine* lineFrom() const { return _lineFrom; }
764  TraceLine* lineTo() const { return _lineTo; }
765  bool isCondJump() { return _isCondJump; }
766 
767  // part factory
768  TracePartLineJump* partLineJump(TracePart*);
769 
770  protected:
771  bool onlyActiveParts() { return true; }
772 
773  private:
774  TraceLine *_lineFrom, *_lineTo;
775  bool _isCondJump;
776 };
777 
778 
782 class TraceInstrCall: public TraceCallListCost
783 {
784  public:
785  TraceInstrCall(TraceCall* call, TraceInstr* instr);
786  virtual ~TraceInstrCall();
787 
788  virtual QString name() const;
789 
790  TraceInstr* instr() const { return _instr; }
791  TraceCall* call() const { return _call; }
792 
793  // part factory
794  TracePartInstrCall* partInstrCall(TracePart*, TracePartCall*);
795 
796  protected:
797  bool onlyActiveParts() { return true; }
798 
799  private:
800  TraceInstr* _instr;
801  TraceCall* _call;
802 };
803 
804 
808 class TraceLineCall: public TraceCallListCost
809 {
810  public:
811  TraceLineCall(TraceCall* call, TraceLine* line);
812  virtual ~TraceLineCall();
813 
814  virtual QString name() const;
815 
816  TraceLine* line() const { return _line; }
817  TraceCall* call() const { return _call; }
818 
819  // part factory
820  TracePartLineCall* partLineCall(TracePart*, TracePartCall*);
821 
822  protected:
823  bool onlyActiveParts() { return true; }
824 
825  private:
826  TraceLine* _line;
827  TraceCall* _call;
828 };
829 
830 
835 class TraceCall: public TraceCallListCost
836 {
837  public:
838  TraceCall(TraceFunction* caller, TraceFunction* called);
839  virtual ~TraceCall();
840 
841  virtual QString name() const;
842 
843  // calls a function itself?
844  bool isRecursion() { return _caller == _called; }
845 
846  // return cycle number >0 if call is inside of a cycle
847  int inCycle();
848  // we need some special handling for cycle calls
849  void update();
850 
851  void invalidateDynamicCost();
852 
853  // factories
854  TracePartCall* partCall(TracePart*,
855  TracePartFunction*, TracePartFunction*);
856  TraceLineCall* lineCall(TraceLine*);
857  TraceInstrCall* instrCall(TraceInstr*);
858 
859  TraceFunction* caller(bool skipCycle=false) const;
860  TraceFunction* called(bool skipCycle=false) const;
861  QString callerName(bool skipCycle=false) const;
862  QString calledName(bool skipCycle=false) const;
863  const TraceLineCallList& lineCalls() const { return _lineCalls; }
864  const TraceInstrCallList& instrCalls() const { return _instrCalls; }
865 
866  FixCallCost* setFirstFixCost(FixCallCost* fc)
867  { FixCallCost* t = _firstFixCost; _firstFixCost = fc; return t; }
868 
869  protected:
870  bool onlyActiveParts() { return true; }
871 
872  private:
873  TraceInstrCallList _instrCalls;
874  TraceLineCallList _lineCalls;
875  TraceFunction* _caller;
876  TraceFunction* _called;
877 
878  FixCallCost* _firstFixCost;
879 };
880 
881 
887 class TraceInstr: public TraceListCost
888 {
889  public:
890  TraceInstr();
891  virtual ~TraceInstr();
892 
893  virtual QString name() const;
894  QString prettyName() const;
895 
896  bool isValid() { return _addr != Addr(0); }
897 
898  // factories
899  TracePartInstr* partInstr(TracePart* part,
900  TracePartFunction* partFunction);
901  TraceInstrJump* instrJump(TraceInstr* to, bool isCondJump);
902 
903  void addInstrCall(TraceInstrCall*);
904 
905  Addr addr() const { return _addr; }
906  TraceFunction* function() const { return _function; }
907  TraceLine* line() const { return _line; }
908  const TraceInstrJumpList& instrJumps() const { return _instrJumps; }
909  const TraceInstrCallList& instrCalls() const { return _instrCalls; }
910  bool hasCost(EventType*);
911 
912  // only to be called after default constructor
913  void setAddr(const Addr addr) { _addr = addr; }
914  void setFunction(TraceFunction* f) { _function = f; }
915  void setLine(TraceLine* l) { _line = l; }
916 
917  protected:
918  bool onlyActiveParts() { return true; }
919 
920  private:
921  Addr _addr;
922  TraceFunction* _function;
923  TraceLine* _line;
924 
925  TraceInstrJumpList _instrJumps;
926  TraceInstrCallList _instrCalls;
927 };
928 
929 
935 class TraceLine: public TraceListCost
936 {
937 public:
938  TraceLine();
939  virtual ~TraceLine();
940 
941  virtual QString name() const;
942  QString prettyName() const;
943 
944  // factories
945  TracePartLine* partLine(TracePart* part,
946  TracePartFunction* partFunction);
947  TraceLineJump* lineJump(TraceLine* to, bool isCondJump);
948 
949  void addLineCall(TraceLineCall*);
950 
951 
952  bool isValid() { return _sourceFile != 0; }
953  bool hasCost(EventType*);
954  TraceFunctionSource* functionSource() const { return _sourceFile; }
955  uint lineno() const { return _lineno; }
956  const TraceLineCallList& lineCalls() const { return _lineCalls; }
957  const TraceLineJumpList& lineJumps() const { return _lineJumps; }
958 
959  // only to be called after default constructor
960  void setSourceFile(TraceFunctionSource* sf) { _sourceFile = sf; }
961  void setLineno(uint lineno) { _lineno = lineno; }
962 
963  protected:
964  bool onlyActiveParts() { return true; }
965 
966  private:
967  TraceFunctionSource* _sourceFile;
968  uint _lineno;
969 
970  TraceLineJumpList _lineJumps;
971  TraceLineCallList _lineCalls;
972 };
973 
974 
975 /*
976  * Base class for all costs which
977  * represent "interesting" items or group of items
978  * with settable name and inclusive cost
979  */
980 class TraceCostItem: public TraceInclusiveListCost
981 {
982  public:
983  TraceCostItem(ProfileContext*);
984  virtual ~TraceCostItem();
985 
986  virtual QString name() const { return _name; }
987  virtual void setName(const QString& name) { _name = name; }
988 
989  protected:
990  bool onlyActiveParts() { return true; }
991 
992  protected:
993  QString _name;
994 };
995 
996 
1000 class TraceLineRegion: public TraceInclusiveListCost
1001 {
1002 public:
1003  TraceLineRegion(uint from, uint to, QString name);
1004  virtual ~TraceLineRegion();
1005 
1006  virtual void update();
1007 
1008  uint from() const { return _from; }
1009  uint to() const { return _to; }
1010  QString name() const { return _name; }
1011 
1012  // factories
1013  TracePartLine* partLineRegion(TracePart* part,
1014  TracePartFunction* partFunction);
1015  private:
1016  uint _from, _to;
1017  QString _name;
1018 };
1019 
1020 
1029 class TraceFunctionSource: public ProfileCostArray
1030 {
1031 public:
1032  TraceFunctionSource(TraceFunction*, TraceFile*);
1033  virtual ~TraceFunctionSource();
1034 
1035  virtual QString name() const;
1036 
1037  // reimplementation for dependency map
1038  virtual void update();
1039 
1040  TraceFile* file() const { return _file; }
1041  TraceFunction* function() const { return _function; }
1042  uint firstLineno();
1043  uint lastLineno();
1044  TraceLineMap* lineMap();
1045 
1046  void invalidateDynamicCost();
1047 
1048  /* factories */
1049  TraceLine* line(uint lineno, bool createNew = true);
1050  TraceLineRegion* region(uint from, uint to, QString name,
1051  bool createNew = true);
1052 
1053  private:
1054  TraceFile* _file;
1055  TraceFunction* _function;
1056  TraceLineMap* _lineMap;
1057  TraceLine* _line0;
1058  TraceLineRegionList* _regions;
1059 
1060  bool _lineMapFilled;
1061 };
1062 
1063 
1068 class TraceAssoziation
1069 {
1070  public:
1074  TraceAssoziation();
1075  virtual ~TraceAssoziation();
1076 
1077  // for runtime detection
1078  virtual int rtti() { return 0; }
1079 
1084  bool isAssoziated();
1085 
1090  bool setFunction(TraceFunction*);
1091  TraceFunction* function() { return _function; }
1092 
1093  void invalidate() { _valid = false; }
1094  bool isValid() { return _valid; }
1095 
1100  static void clear(TraceData* data, int rtti);
1101 
1106  static void invalidate(TraceData* data, int rtti);
1107 
1108  protected:
1109  TraceFunction* _function;
1110  bool _valid;
1111 };
1112 
1113 typedef QList<TraceAssoziation*> TraceAssoziationList;
1114 
1122 class TraceFunction: public TraceCostItem
1123 {
1124  public:
1125  TraceFunction();
1126  TraceFunction(TraceData* data, const QString& name,
1127  TraceClass* cls, TraceFile* file, TraceObject* object);
1128  virtual ~TraceFunction();
1129 
1130  virtual void update();
1131 
1132  // this invalidate all subcosts of function depending on
1133  // active status of parts
1134  void invalidateDynamicCost();
1135 
1136  void addCaller(TraceCall*);
1137 
1138  // factories
1139  TraceCall* calling(TraceFunction* called);
1140  TraceLine* line(TraceFile*, uint lineno, bool createNew = true);
1141  TraceInstr* instr(Addr addr, bool createNew = true);
1142  TracePartFunction* partFunction(TracePart*,
1143  TracePartFile*, TracePartObject*);
1144 
1151  QString location(int maxFiles = 0) const;
1152 
1153  QString prettyName() const;
1154  QString formattedName() const;
1155  static QString prettyEmptyName();
1156  QString prettyLocation(int maxFiles = 0) const;
1157  QString prettyNameWithLocation(int maxFiles = 1) const;
1158  void addPrettyLocation(QString&, int maxFiles = 1) const;
1159  // type + name + location
1160  QString info() const;
1161 
1162  TraceClass* cls() const { return _cls; }
1163  TraceFile* file() const { return _file; }
1164  TraceObject* object() const { return _object; }
1165  // get the source file with lines from function declaration (not inlined)
1166  TraceFunctionSource* sourceFile(TraceFile* file = 0,
1167  bool createNew = false);
1168  const TraceFunctionSourceList& sourceFiles() const
1169  { return _sourceFiles; }
1170  TraceCallList callers(bool skipCycle=false) const;
1171  const TraceCallList& callings(bool skipCycle=false) const;
1172 
1173  Addr firstAddress() const;
1174  Addr lastAddress() const;
1175  TraceInstrMap* instrMap();
1176 
1177  // cost metrics
1178  SubCost calledCount();
1179  SubCost callingCount();
1180  QString prettyCalledCount();
1181  QString prettyCallingCount();
1182  int calledContexts();
1183  int callingContexts();
1184 
1185  // only to be called after default constructor
1186  void setFile(TraceFile* file) { _file = file; }
1187  void setObject(TraceObject* object) { _object = object; }
1188  void setClass(TraceClass* cls) { _cls = cls; }
1189  //void setMapIterator(TraceFunctionMap::Iterator it) { _myMapIterator = it; }
1190 
1191  // see TraceFunctionAssoziation
1192  void addAssoziation(TraceAssoziation* a);
1193  void removeAssoziation(TraceAssoziation* a);
1194  void removeAssoziation(int rtti, bool reallyDelete = true);
1195  void invalidateAssoziation(int rtti);
1196  TraceAssoziation* assoziation(int rtti);
1197 
1198  // cycles
1199  void setCycle(TraceFunctionCycle* c) { _cycle = c; }
1200  TraceFunctionCycle* cycle() { return _cycle; }
1201  bool isCycle();
1202  bool isCycleMember();
1203  void cycleReset();
1204  void cycleDFS(int d, int& pNo, TraceFunction** pTop);
1205 
1206  protected:
1207  TraceCallList _callers; // list of calls we are called from
1208  TraceCallList _callings; // list of calls we are calling (we are owner)
1209  TraceFunctionCycle* _cycle;
1210 
1211  private:
1212  bool isUniquePrefix(const QString&) const;
1213  //TraceFunctionMap::Iterator _myMapIterator;
1214 
1215  TraceClass* _cls;
1216  TraceObject* _object;
1217  TraceFile* _file;
1218 
1219  TraceFunctionSourceList _sourceFiles; // we are owner
1220  TraceInstrMap* _instrMap; // we are owner
1221  bool _instrMapFilled;
1222 
1223  // see TraceAssoziation
1224  TraceAssoziationList _assoziations;
1225 
1226  // for cycle detection
1227  int _cycleLow;
1228  TraceFunction* _cycleStackDown;
1229 
1230  // cached
1231  SubCost _calledCount, _callingCount;
1232  int _calledContexts, _callingContexts;
1233 };
1234 
1235 
1241 class TraceFunctionCycle: public TraceFunction
1242 {
1243  public:
1244  TraceFunctionCycle(TraceFunction*, int n);
1245 
1246  // this removes all members from this cycle
1247  void init();
1248  void add(TraceFunction*);
1249  // this sets up the cycle once members are added
1250  void setup();
1251 
1252  TraceFunction* base() const { return _base; }
1253  int cycleNo() const { return _cycleNo; }
1254  const TraceFunctionList& members() const { return _members; }
1255 
1256  private:
1257  TraceFunction* _base;
1258  int _cycleNo;
1259 
1260  TraceFunctionList _members;
1261 };
1262 
1263 
1271 class TraceClass: public TraceCostItem
1272 {
1273  public:
1274  TraceClass();
1275  virtual ~TraceClass();
1276 
1277  virtual QString prettyName() const;
1278  static QString prettyEmptyName();
1279 
1280  void addFunction(TraceFunction*);
1281  const TraceFunctionList& functions() const { return _functions; }
1282 
1283  // part factory
1284  TracePartClass* partClass(TracePart*);
1285 
1286  private:
1287  TraceFunctionList _functions;
1288 };
1289 
1290 
1291 
1295 class TraceFile: public TraceCostItem
1296 {
1297  public:
1298  TraceFile();
1299  virtual ~TraceFile();
1300 
1301  void setDirectory(const QString& dir);
1302  void resetDirectory() { _dir = QString(); }
1303  QString directory();
1304 
1305  void addFunction(TraceFunction*);
1306  void addSourceFile(TraceFunctionSource*);
1307 
1308  // without path
1309  QString shortName() const;
1310  QString prettyName() const;
1311  QString prettyLongName() const;
1312  static QString prettyEmptyName();
1313  const TraceFunctionList& functions() const { return _functions; }
1314  const TraceFunctionSourceList& sourceFiles() const
1315  { return _sourceFiles; }
1316 
1317  // part factory
1318  TracePartFile* partFile(TracePart*);
1319 
1320  private:
1321  TraceFunctionList _functions;
1322  TraceFunctionSourceList _sourceFiles;
1323  QString _dir;
1324 };
1325 
1326 
1331 class TraceObject: public TraceCostItem
1332 {
1333  public:
1334  TraceObject();
1335  virtual ~TraceObject();
1336 
1337  void setDirectory(const QString& dir);
1338  void resetDirectory() { _dir = QString(); }
1339  QString directory();
1340 
1341  void addFunction(TraceFunction*);
1342 
1343  QString shortName() const;
1344  QString prettyName() const;
1345  static QString prettyEmptyName();
1346  const TraceFunctionList& functions() const { return _functions; }
1347 
1348  // part factory
1349  TracePartObject* partObject(TracePart*);
1350 
1351  private:
1352  TraceFunctionList _functions;
1353  QString _dir;
1354 };
1355 
1356 
1357 
1363 class TraceData: public ProfileCostArray
1364 {
1365  public:
1366  TraceData(Logger* l = 0);
1367  virtual ~TraceData();
1368 
1369  virtual TraceData* data() { return this; }
1370  virtual const TraceData* data() const { return this; }
1371 
1379  int load(QStringList files);
1380  int load(QString file);
1381  int load(QIODevice*, const QString&);
1382 
1389  bool activateParts(const TracePartList&);
1390  bool activateParts(TracePartList, bool active);
1391  bool activatePart(TracePart*, bool active);
1392  bool activateAll(bool active=true);
1393 
1394  // to be used by loader
1395  void addPart(TracePart*);
1396 
1397  TracePartList parts() const { return _parts; }
1398  TracePart* partWithName(const QString& name);
1399 
1400  // with path
1401  QString traceName() const { return _traceName; }
1402 
1403  // without path
1404  QString shortTraceName() const;
1405  QString activePartRange();
1406 
1407  EventTypeSet* eventTypes() { return &_eventTypes; }
1408 
1409  // memory pools
1410  FixPool* fixPool();
1411  DynPool* dynPool();
1412 
1413  // factories for object/file/class/function/line instances
1414  TraceObject* object(const QString& name);
1415  TraceFile* file(const QString& name);
1416  TraceClass* cls(const QString& fnName, QString& shortName);
1417  // function creation involves class creation if needed
1418  TraceFunction* function(const QString& name, TraceFile*, TraceObject*);
1419  // factory for function cycles
1420  TraceFunctionCycle* functionCycle(TraceFunction*);
1421 
1430  ProfileCostArray* search(ProfileContext::Type, QString,
1431  EventType* ct = 0, ProfileCostArray* parent = 0);
1432 
1433  // for pretty function names without signature if unique...
1434  TraceFunctionMap::Iterator functionIterator(TraceFunction*);
1435  TraceFunctionMap::ConstIterator functionBeginIterator() const;
1436  TraceFunctionMap::ConstIterator functionEndIterator() const;
1437 
1438  TraceObjectMap& objectMap() { return _objectMap; }
1439  TraceFileMap& fileMap() { return _fileMap; }
1440  TraceClassMap& classMap() { return _classMap; }
1441  TraceFunctionMap& functionMap() { return _functionMap; }
1442 
1443  const TraceFunctionCycleList& functionCycles() { return _functionCycles; }
1444 
1445  ProfileCostArray* callMax() { return &_callMax; }
1446 
1447  void setCommand(const QString& command) { _command = command; }
1448  QString command() const { return _command; }
1449  ProfileCostArray* totals() { return &_totals; }
1450  void setMaxThreadID(int tid) { _maxThreadID = tid; }
1451  int maxThreadID() const { return _maxThreadID; }
1452  void setMaxPartNumber(int n) { _maxPartNumber = n; }
1453  int maxPartNumber() const { return _maxPartNumber; }
1454 
1455  // reset all manually set directories for source files
1456  void resetSourceDirs();
1457 
1458  virtual void update();
1459 
1460  // invalidates all cost items dependant on active state of parts
1461  void invalidateDynamicCost();
1462 
1463  // cycle detection
1464  void updateFunctionCycles();
1465  void updateObjectCycles();
1466  void updateClassCycles();
1467  void updateFileCycles();
1468  bool inFunctionCycleUpdate() { return _inFunctionCycleUpdate; }
1469 
1470  private:
1471  void init();
1472  // add profile parts from one file
1473  int internalLoad(QIODevice* file, const QString& filename);
1474 
1475  // for notification callbacks
1476  Logger* _logger;
1477 
1478  TracePartList _parts;
1479 
1480  // The set for all costs
1481  EventTypeSet _eventTypes;
1482 
1483  FixPool* _fixPool;
1484  DynPool* _dynPool;
1485 
1486  // always the trace totals (not dependent on active parts)
1487  ProfileCostArray _totals;
1488  int _maxThreadID;
1489  int _maxPartNumber;
1490 
1491  TraceObjectMap _objectMap;
1492  TraceClassMap _classMap;
1493  TraceFileMap _fileMap;
1494  TraceFunctionMap _functionMap;
1495  QString _command;
1496  QString _traceName;
1497 
1498  // Max of all costs of calls: This allows to see if the incl. cost can
1499  // be hidden for a cost type, as it is always the same as self cost
1500  ProfileCostArray _callMax;
1501 
1502  // cycles
1503  TraceFunctionCycleList _functionCycles;
1504  int _functionCycleCount;
1505  bool _inFunctionCycleUpdate;
1506 };
1507 
1508 
1509 
1510 #endif
Logger
Definition: logger.h:32
TracePartCall::TracePartCall
TracePartCall(TraceCall *call)
Definition: tracedata.cpp:566
TraceInstrList
QList< TraceInstr * > TraceInstrList
Definition: tracedata.h:178
TraceCallListCost
Call Cost Item depends on a list of Call cost items.
Definition: tracedata.h:334
TraceLineJumpList
QList< TraceLineJump * > TraceLineJumpList
Definition: tracedata.h:181
TraceCallCost::TraceCallCost
TraceCallCost(ProfileContext *)
Definition: tracedata.cpp:97
TraceCall::lineCalls
const TraceLineCallList & lineCalls() const
Definition: tracedata.h:863
TraceData::callMax
ProfileCostArray * callMax()
Definition: tracedata.h:1445
TraceInstrJumpList
QList< TraceInstrJump * > TraceInstrJumpList
Definition: tracedata.h:180
TraceInclusiveListCost::deps
TraceInclusiveCostList deps()
Definition: tracedata.h:371
TraceJumpCost::addCost
void addCost(TraceJumpCost *)
Definition: tracedata.cpp:84
TraceCall::isRecursion
bool isRecursion()
Definition: tracedata.h:844
TracePartLineRegion::TracePartLineRegion
TracePartLineRegion(TraceLineRegion *)
CostItem::part
virtual TracePart * part()
Definition: costitem.cpp:101
TracePartInstr::update
virtual void update()
Updates cost attributes.
Definition: tracedata.h:442
TraceFunction::setFile
void setFile(TraceFile *file)
Definition: tracedata.h:1186
TraceFunction::addCaller
void addCaller(TraceCall *)
Definition: tracedata.cpp:2128
TraceData::data
virtual TraceData * data()
Definition: tracedata.h:1369
TraceFile
A source file containing function definitions.
Definition: tracedata.h:1295
TracePartClass::TracePartClass
TracePartClass(TraceClass *)
Definition: tracedata.cpp:880
TraceData::TraceData
TraceData(Logger *l=0)
Definition: tracedata.cpp:3067
TraceCallListCost::TraceCallListCost
TraceCallListCost(ProfileContext *)
Definition: tracedata.cpp:329
TraceInstr::isValid
bool isValid()
Definition: tracedata.h:896
TraceInstr::setAddr
void setAddr(const Addr addr)
Definition: tracedata.h:913
TracePartInstrJump::~TracePartInstrJump
virtual ~TracePartInstrJump()
Definition: tracedata.cpp:490
TracePart::name
QString name() const
Definition: tracedata.h:667
TraceFile::TraceFile
TraceFile()
Definition: tracedata.cpp:2760
TraceLine::addLineCall
void addLineCall(TraceLineCall *)
Definition: tracedata.cpp:1438
TraceData::activatePart
bool activatePart(TracePart *, bool active)
Definition: tracedata.cpp:3250
TraceObject::functions
const TraceFunctionList & functions() const
Definition: tracedata.h:1346
TraceFunctionSource::line
TraceLine * line(uint lineno, bool createNew=true)
Definition: tracedata.cpp:1554
TraceFunctionSource::region
TraceLineRegion * region(uint from, uint to, QString name, bool createNew=true)
TracePartInstrCallList
QList< TracePartInstrCall * > TracePartInstrCallList
Definition: tracedata.h:174
TracePart::processID
int processID() const
Definition: tracedata.h:674
TraceData::cls
TraceClass * cls(const QString &fnName, QString &shortName)
Definition: tracedata.cpp:3371
TracePartLineRegion::update
virtual void update()
Updates cost attributes.
CostItem::_dep
CostItem * _dep
Definition: costitem.h:127
TraceInstr::onlyActiveParts
bool onlyActiveParts()
Definition: tracedata.h:918
TracePartLine::update
virtual void update()
Updates cost attributes.
Definition: tracedata.h:491
TraceData::object
TraceObject * object(const QString &name)
Definition: tracedata.cpp:3336
TraceCallListCost::onlyActiveParts
virtual bool onlyActiveParts()
Definition: tracedata.h:349
TraceFunctionCycle::cycleNo
int cycleNo() const
Definition: tracedata.h:1253
DynPool
DynPool.
Definition: pool.h:77
TracePartCall::call
TraceCall * call() const
Definition: tracedata.h:528
context.h
TraceInclusiveCost
Cost item with additional inclusive metric.
Definition: tracedata.h:251
TracePartCall::setFirstFixCallCost
FixCallCost * setFirstFixCallCost(FixCallCost *fc)
Definition: tracedata.h:530
TraceData::activateAll
bool activateAll(bool active=true)
Definition: tracedata.cpp:3255
TraceFunction::~TraceFunction
virtual ~TraceFunction()
Definition: tracedata.cpp:1812
TracePartClass::~TracePartClass
virtual ~TracePartClass()
Definition: tracedata.cpp:886
TraceFunction::callingContexts
int callingContexts()
Definition: tracedata.cpp:2260
TracePartLineCall
Cost of a call at a line from a trace file.
Definition: tracedata.h:467
TraceInclusiveListCost::onlyActiveParts
virtual bool onlyActiveParts()
Definition: tracedata.h:377
TraceLineRegion::to
uint to() const
Definition: tracedata.h:1009
TracePartLineCall::lineCall
TraceLineCall * lineCall() const
Definition: tracedata.h:475
TraceLine::hasCost
bool hasCost(EventType *)
Definition: tracedata.cpp:1394
TracePartInstrCall::~TracePartInstrCall
virtual ~TracePartInstrCall()
Definition: tracedata.cpp:503
TracePartFunction::addPartInstr
void addPartInstr(TracePartInstr *)
Definition: tracedata.cpp:662
TraceClass::functions
const TraceFunctionList & functions() const
Definition: tracedata.h:1281
TraceLineMap
QMap< uint, TraceLine > TraceLineMap
Definition: tracedata.h:194
TraceFunction::callings
const TraceCallList & callings(bool skipCycle=false) const
Definition: tracedata.cpp:2302
TraceObject::prettyName
QString prettyName() const
Similar to name, but prettyfied = more descriptive to humans.
Definition: tracedata.cpp:2959
TraceFunction::setCycle
void setCycle(TraceFunctionCycle *c)
Definition: tracedata.h:1199
TraceFileList
QList< TraceFile * > TraceFileList
Definition: tracedata.h:185
TraceFunctionCycle
A cycle of recursive calling functions.
Definition: tracedata.h:1241
TraceData::search
ProfileCostArray * search(ProfileContext::Type, QString, EventType *ct=0, ProfileCostArray *parent=0)
Search for item with given name and highest subcost of given cost type.
Definition: tracedata.cpp:3522
TracePartObject::~TracePartObject
virtual ~TracePartObject()
Definition: tracedata.cpp:918
TraceLineJump::lineTo
TraceLine * lineTo() const
Definition: tracedata.h:764
TracePart::setName
void setName(const QString &n)
Definition: tracedata.h:679
TraceInstrJump::TraceInstrJump
TraceInstrJump(TraceInstr *instrFrom, TraceInstr *instrTo, bool isCondJump)
Definition: tracedata.cpp:927
TraceInstrJump::instrTo
TraceInstr * instrTo() const
Definition: tracedata.h:737
TraceData::partWithName
TracePart * partWithName(const QString &name)
Definition: tracedata.cpp:3272
TraceInstr::instrJumps
const TraceInstrJumpList & instrJumps() const
Definition: tracedata.h:908
TraceCall::caller
TraceFunction * caller(bool skipCycle=false) const
Definition: tracedata.cpp:1230
TraceCallCostList
QList< TraceCallCost * > TraceCallCostList
Definition: tracedata.h:166
TraceListCost::findDepFromPart
ProfileCostArray * findDepFromPart(TracePart *)
Definition: tracedata.cpp:211
TracePartFunction::partObject
TracePartObject * partObject()
Definition: tracedata.h:559
TraceCostItem::TraceCostItem
TraceCostItem(ProfileContext *)
Definition: tracedata.cpp:1494
TraceInstr::~TraceInstr
virtual ~TraceInstr()
Definition: tracedata.cpp:1294
TraceFunction::line
TraceLine * line(TraceFile *, uint lineno, bool createNew=true)
Definition: tracedata.cpp:2194
TracePart::totals
ProfileCostArray * totals()
Definition: tracedata.h:683
TraceData::command
QString command() const
Definition: tracedata.h:1448
TracePartInstrJump::instrJump
TraceInstrJump * instrJump() const
Definition: tracedata.h:406
TraceInstrCall::onlyActiveParts
bool onlyActiveParts()
Definition: tracedata.h:797
TraceFunction::lastAddress
Addr lastAddress() const
Definition: tracedata.cpp:2090
TraceLineRegion::update
virtual void update()
Updates cost attributes.
TracePartFunctionList
QList< TracePartFunction * > TracePartFunctionList
Definition: tracedata.h:173
TraceFunctionSource::invalidateDynamicCost
void invalidateDynamicCost()
Definition: tracedata.cpp:1605
TraceCallCost::costString
virtual QString costString(EventTypeSet *m)
Returns text of all cost metrics.
Definition: tracedata.cpp:107
TracePart::partNumber
int partNumber() const
Definition: tracedata.h:672
TraceInstrCallList
QList< TraceInstrCall * > TraceInstrCallList
Definition: tracedata.h:182
TraceInstr::setFunction
void setFunction(TraceFunction *f)
Definition: tracedata.h:914
TracePartLineJump::~TracePartLineJump
virtual ~TracePartLineJump()
Definition: tracedata.cpp:531
TraceAssoziationList
QList< TraceAssoziation * > TraceAssoziationList
Definition: tracedata.h:1113
TracePartLineJump::lineJump
TraceLineJump * lineJump() const
Definition: tracedata.h:459
TracePartFunction::setFirstFixCost
FixCost * setFirstFixCost(FixCost *fc)
Definition: tracedata.h:569
TraceFunction
A traced function.
Definition: tracedata.h:1122
TraceCostItem
Definition: tracedata.h:980
TraceJumpCost::executedCount
SubCost executedCount()
Definition: tracedata.cpp:55
TraceJumpCost::clear
virtual void clear()
Set all cost counters to zero.
Definition: tracedata.cpp:78
TraceFile::setDirectory
void setDirectory(const QString &dir)
Definition: tracedata.cpp:2826
TraceCallListCost::deps
TraceCallCostList deps()
Definition: tracedata.h:343
TraceCostItem::_name
QString _name
Definition: tracedata.h:993
TraceInstrMap
QMap< Addr, TraceInstr > TraceInstrMap
Definition: tracedata.h:195
TraceJumpListCost::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:300
TraceCallCost::addCallCount
void addCallCount(SubCost c)
Definition: tracedata.cpp:132
TraceCallCost::callCount
SubCost callCount()
Definition: tracedata.cpp:125
TraceFunction::formattedName
QString formattedName() const
A HTMLified version of name, can return empty string.
Definition: tracedata.cpp:1946
TraceFunction::object
TraceObject * object() const
Definition: tracedata.h:1164
TraceInclusiveCost::~TraceInclusiveCost
virtual ~TraceInclusiveCost()
Definition: tracedata.cpp:147
TracePartLine::~TracePartLine
virtual ~TracePartLine()
Definition: tracedata.cpp:557
TraceFunction::prettyCallingCount
QString prettyCallingCount()
Definition: tracedata.cpp:2272
TraceFunctionCycle::add
void add(TraceFunction *)
Definition: tracedata.cpp:2668
TraceLine::onlyActiveParts
bool onlyActiveParts()
Definition: tracedata.h:964
TraceLine::isValid
bool isValid()
Definition: tracedata.h:952
TracePartFunction::callingCount
SubCost callingCount()
Definition: tracedata.cpp:759
TraceLineJump::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: tracedata.cpp:1029
TraceJumpListCost::onlyActiveParts
virtual bool onlyActiveParts()
Definition: tracedata.h:318
TraceFunction::cycle
TraceFunctionCycle * cycle()
Definition: tracedata.h:1200
TraceObject::resetDirectory
void resetDirectory()
Definition: tracedata.h:1338
eventtype.h
TraceLineRegion::partLineRegion
TracePartLine * partLineRegion(TracePart *part, TracePartFunction *partFunction)
TraceLine::lineJump
TraceLineJump * lineJump(TraceLine *to, bool isCondJump)
Definition: tracedata.cpp:1426
TraceFunctionSource::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:1588
CostItem
Base class for cost items.
Definition: costitem.h:37
TraceCallListCost::_deps
TraceCallCostList _deps
Definition: tracedata.h:351
TracePartFunction::addPartLine
void addPartLine(TracePartLine *)
Definition: tracedata.cpp:683
TraceInstrCall
A call from an instruction of one function to another function.
Definition: tracedata.h:782
TracePart::shortName
QString shortName() const
Definition: tracedata.cpp:3016
TraceData::maxThreadID
int maxThreadID() const
Definition: tracedata.h:1451
TraceLineList
QList< TraceLine * > TraceLineList
Definition: tracedata.h:179
TraceLineCall
A call from a line of one function to another function.
Definition: tracedata.h:808
TracePartCall::isRecursion
bool isRecursion()
Definition: tracedata.cpp:577
TracePartObject::addPartFunction
void addPartFunction(TracePartFunction *f)
Definition: tracedata.h:646
TraceFunctionSource::firstLineno
uint firstLineno()
Definition: tracedata.cpp:1532
TraceData::eventTypes
EventTypeSet * eventTypes()
Definition: tracedata.h:1407
TraceCostItem::~TraceCostItem
virtual ~TraceCostItem()
Definition: tracedata.cpp:1499
TraceData::activePartRange
QString activePartRange()
Definition: tracedata.cpp:3280
TraceInstr::hasCost
bool hasCost(EventType *)
Definition: tracedata.cpp:1301
TracePart::prettyName
QString prettyName() const
Similar to name, but prettyfied = more descriptive to humans.
Definition: tracedata.cpp:3025
TraceData::totals
ProfileCostArray * totals()
Definition: tracedata.h:1449
TraceInstrJump::partInstrJump
TracePartInstrJump * partInstrJump(TracePart *)
Definition: tracedata.cpp:949
TracePart::setVersion
void setVersion(const QString &v)
Definition: tracedata.h:678
TraceFile::resetDirectory
void resetDirectory()
Definition: tracedata.h:1302
TracePartFunction::calledContexts
int calledContexts()
Definition: tracedata.cpp:752
TraceInclusiveCost::TraceInclusiveCost
TraceInclusiveCost(ProfileContext *)
Definition: tracedata.cpp:143
TracePart::operator<
bool operator<(const TracePart &) const
Definition: tracedata.cpp:3048
TracePart::TracePart
TracePart(TraceData *)
Definition: tracedata.cpp:2977
TraceObject::prettyEmptyName
static QString prettyEmptyName()
Definition: tracedata.cpp:2969
TraceLine::lineJumps
const TraceLineJumpList & lineJumps() const
Definition: tracedata.h:957
EventTypeMapping
A index list into a EventTypeSet.
Definition: eventtype.h:170
TraceInclusiveListCost::~TraceInclusiveListCost
virtual ~TraceInclusiveListCost()
Definition: tracedata.cpp:413
TracePart::part
virtual TracePart * part()
Definition: tracedata.h:661
TraceClassMap
QMap< QString, TraceClass > TraceClassMap
Definition: tracedata.h:191
Addr
Addresses are 64bit values like costs to be able to always load profile data produced on 64bit archit...
Definition: addr.h:31
TracePartLineCall::~TracePartLineCall
virtual ~TracePartLineCall()
Definition: tracedata.cpp:544
TraceFunction::callers
TraceCallList callers(bool skipCycle=false) const
Definition: tracedata.cpp:2278
EventType
A cost type, e.g.
Definition: eventtype.h:43
TraceCostItem::setName
virtual void setName(const QString &name)
Definition: tracedata.h:987
TraceData::activateParts
bool activateParts(const TracePartList &)
returns true if something changed.
Definition: tracedata.cpp:3213
TracePartFile::TracePartFile
TracePartFile(TraceFile *)
Definition: tracedata.cpp:899
TracePartFunction::callingContexts
int callingContexts()
Definition: tracedata.cpp:767
TraceAssoziation::TraceAssoziation
TraceAssoziation()
Creates an invalid assoziation.
Definition: tracedata.cpp:1737
TraceFunction::invalidateDynamicCost
void invalidateDynamicCost()
Definition: tracedata.cpp:2307
TracePart::setThreadID
void setThreadID(int t)
Definition: tracedata.cpp:3002
TraceInstrJump::isCondJump
bool isCondJump() const
Definition: tracedata.h:738
TraceFunction::assoziation
TraceAssoziation * assoziation(int rtti)
Definition: tracedata.cpp:1862
TraceInclusiveCost::costString
virtual QString costString(EventTypeSet *m)
Returns text of all cost metrics.
Definition: tracedata.cpp:150
TraceCall::instrCalls
const TraceInstrCallList & instrCalls() const
Definition: tracedata.h:864
TraceInclusiveCostList
QList< TraceInclusiveCost * > TraceInclusiveCostList
Definition: tracedata.h:167
TraceFunctionCycle::TraceFunctionCycle
TraceFunctionCycle(TraceFunction *, int n)
Definition: tracedata.cpp:2641
TraceInclusiveListCost::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:452
TraceFunction::invalidateAssoziation
void invalidateAssoziation(int rtti)
Definition: tracedata.cpp:1854
TraceCostItem::onlyActiveParts
bool onlyActiveParts()
Definition: tracedata.h:990
TraceObject
A object containing a text segment (shared lib/executable) with defined functions.
Definition: tracedata.h:1331
TraceInstrCall::instr
TraceInstr * instr() const
Definition: tracedata.h:790
TraceLine::prettyName
QString prettyName() const
Similar to name, but prettyfied = more descriptive to humans.
Definition: tracedata.cpp:1485
TraceFunctionList
QList< TraceFunction * > TraceFunctionList
Definition: tracedata.h:188
TraceCall::instrCall
TraceInstrCall * instrCall(TraceInstr *)
Definition: tracedata.cpp:1147
TraceCall::update
void update()
Updates cost attributes.
Definition: tracedata.cpp:1212
TracePartClass::prettyName
QString prettyName() const
Similar to name, but prettyfied = more descriptive to humans.
Definition: tracedata.cpp:889
TraceObject::setDirectory
void setDirectory(const QString &dir)
Definition: tracedata.cpp:2927
TraceFunction::cls
TraceClass * cls() const
Definition: tracedata.h:1162
TracePartInstrCall
Cost of a call at a instruction code address from a trace file.
Definition: tracedata.h:419
TraceFunction::_callers
TraceCallList _callers
Definition: tracedata.h:1207
TraceCall::callerName
QString callerName(bool skipCycle=false) const
Definition: tracedata.cpp:1248
TraceInstrCall::~TraceInstrCall
virtual ~TraceInstrCall()
Definition: tracedata.cpp:1047
TraceCostList
QList< ProfileCostArray * > TraceCostList
Definition: tracedata.h:162
utils.h
TraceData::parts
TracePartList parts() const
Definition: tracedata.h:1397
TraceLineRegion
Cost of a source region.
Definition: tracedata.h:1000
TraceData::setMaxThreadID
void setMaxThreadID(int tid)
Definition: tracedata.h:1450
TracePartInstrCall::TracePartInstrCall
TracePartInstrCall(TraceInstrCall *)
Definition: tracedata.cpp:497
TraceData::maxPartNumber
int maxPartNumber() const
Definition: tracedata.h:1453
TraceFile::~TraceFile
virtual ~TraceFile()
Definition: tracedata.cpp:2764
TraceInclusiveListCost::findDepFromPart
TraceInclusiveCost * findDepFromPart(TracePart *)
Definition: tracedata.cpp:438
TracePartFunction::firstFixJump
FixJump * firstFixJump() const
Definition: tracedata.h:574
TraceInclusiveCost::clear
virtual void clear()
Set all cost counters to zero.
Definition: tracedata.cpp:157
TraceAssoziation::isValid
bool isValid()
Definition: tracedata.h:1094
FixCost
A class holding an unchangable cost item of an input file.
Definition: fixcost.h:53
TraceListCost::onlyActiveParts
virtual bool onlyActiveParts()
Definition: tracedata.h:289
TraceObject::addFunction
void addFunction(TraceFunction *)
Definition: tracedata.cpp:2905
FixPool
FixPool.
Definition: pool.h:34
ProfileCostArray
An array of basic cost metrics for a trace item.
Definition: costitem.h:144
TraceFunction::cycleDFS
void cycleDFS(int d, int &pNo, TraceFunction **pTop)
Definition: tracedata.cpp:2420
TraceJumpCost::~TraceJumpCost
virtual ~TraceJumpCost()
Definition: tracedata.cpp:52
TraceInstrCall::partInstrCall
TracePartInstrCall * partInstrCall(TracePart *, TracePartCall *)
Definition: tracedata.cpp:1054
TraceCallCost::~TraceCallCost
virtual ~TraceCallCost()
Definition: tracedata.cpp:103
TraceInstrJump::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: tracedata.cpp:990
TraceLineCallList
QList< TraceLineCall * > TraceLineCallList
Definition: tracedata.h:183
ProfileContext
Base class for source contexts which event costs contained in a ProfileData instance, ie.
Definition: context.h:32
TraceLineCall::onlyActiveParts
bool onlyActiveParts()
Definition: tracedata.h:823
TraceData::classMap
TraceClassMap & classMap()
Definition: tracedata.h:1440
TraceFunctionMap
QMap< QString, TraceFunction > TraceFunctionMap
Definition: tracedata.h:193
TraceJumpCost::_followedCount
SubCost _followedCount
Definition: tracedata.h:220
costitem.h
TraceFunction::partFunction
TracePartFunction * partFunction(TracePart *, TracePartFile *, TracePartObject *)
Definition: tracedata.cpp:2207
TraceInstr
A code instruction address of the program.
Definition: tracedata.h:887
TracePartLineRegion::~TracePartLineRegion
virtual ~TracePartLineRegion()
TraceData::updateObjectCycles
void updateObjectCycles()
Definition: tracedata.cpp:3731
TraceClass::addFunction
void addFunction(TraceFunction *)
Definition: tracedata.cpp:2733
TracePartLineRegion::region
TraceLineRegion * region() const
Definition: tracedata.h:508
TracePartLine::TracePartLine
TracePartLine(TraceLine *)
Definition: tracedata.cpp:551
TraceInstrJump::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:968
TraceInstr::TraceInstr
TraceInstr()
Definition: tracedata.cpp:1286
TraceFunction::prettyNameWithLocation
QString prettyNameWithLocation(int maxFiles=1) const
Definition: tracedata.cpp:2063
subcost.h
CostItem::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: costitem.cpp:53
TraceClass::prettyName
virtual QString prettyName() const
Similar to name, but prettyfied = more descriptive to humans.
Definition: tracedata.cpp:2710
TraceListCost::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:226
TraceData::updateFunctionCycles
void updateFunctionCycles()
Definition: tracedata.cpp:3675
TracePartFunction::costString
virtual QString costString(EventTypeSet *m)
Returns text of all cost metrics.
Definition: tracedata.cpp:648
TracePart::setProcessID
void setProcessID(int p)
Definition: tracedata.cpp:3008
TraceFunction::prettyEmptyName
static QString prettyEmptyName()
Definition: tracedata.cpp:1986
TraceFunction::setClass
void setClass(TraceClass *cls)
Definition: tracedata.h:1188
TracePartClass
Cost of a class, from a single trace file.
Definition: tracedata.h:607
TraceLine::lineCalls
const TraceLineCallList & lineCalls() const
Definition: tracedata.h:956
TraceLineCall::call
TraceCall * call() const
Definition: tracedata.h:817
TracePartFunction::partFile
TracePartFile * partFile()
Definition: tracedata.h:561
TraceData::load
int load(QStringList files)
Loads profile data files.
Definition: tracedata.cpp:3130
TraceData::setCommand
void setCommand(const QString &command)
Definition: tracedata.h:1447
TraceFunction::setObject
void setObject(TraceObject *object)
Definition: tracedata.h:1187
TracePart::trigger
QString trigger() const
Definition: tracedata.h:669
TraceFile::prettyName
QString prettyName() const
Similar to name, but prettyfied = more descriptive to humans.
Definition: tracedata.cpp:2858
TraceInclusiveListCost::TraceInclusiveListCost
TraceInclusiveListCost(ProfileContext *)
Definition: tracedata.cpp:407
TracePartFile::~TracePartFile
virtual ~TracePartFile()
Definition: tracedata.cpp:905
TraceData::functionCycles
const TraceFunctionCycleList & functionCycles()
Definition: tracedata.h:1443
TraceCall::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: tracedata.cpp:1195
TraceAssoziation
For temporary assoziation of objects with TraceFunctions.
Definition: tracedata.h:1068
TraceFile::sourceFiles
const TraceFunctionSourceList & sourceFiles() const
Definition: tracedata.h:1314
TraceFunction::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:2325
TracePart::description
QString description() const
Definition: tracedata.h:668
TraceInstr::addInstrCall
void addInstrCall(TraceInstrCall *)
Definition: tracedata.cpp:1344
TracePartInstrList
QList< TracePartInstr * > TracePartInstrList
Definition: tracedata.h:170
TraceFunctionCycle::init
void init()
Definition: tracedata.cpp:2658
TraceFunctionCycle::members
const TraceFunctionList & members() const
Definition: tracedata.h:1254
TraceFunction::_callings
TraceCallList _callings
Definition: tracedata.h:1208
TraceAssoziation::clear
static void clear(TraceData *data, int rtti)
Delete all assoziations in TraceFunctions of data with rtti runtime info.
Definition: tracedata.cpp:1774
TraceObject::~TraceObject
virtual ~TraceObject()
Definition: tracedata.cpp:2888
TraceJumpCost::costString
virtual QString costString(EventTypeSet *m)
Returns text of all cost metrics.
Definition: tracedata.cpp:69
TraceCall::partCall
TracePartCall * partCall(TracePart *, TracePartFunction *, TracePartFunction *)
Definition: tracedata.cpp:1132
TraceCallCost::prettyCallCount
QString prettyCallCount()
Definition: tracedata.cpp:114
TraceFunctionSource
A container helper class for TraceFunction for source lines where a function is implemented in...
Definition: tracedata.h:1029
TraceLineCall::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: tracedata.cpp:1108
TracePart::threadID
int threadID() const
Definition: tracedata.h:673
TraceLine::TraceLine
TraceLine()
Definition: tracedata.cpp:1380
TraceInclusiveCost::addInclusive
void addInclusive(ProfileCostArray *)
Definition: tracedata.cpp:170
TraceInclusiveListCost::addDep
void addDep(TraceInclusiveCost *)
Definition: tracedata.cpp:417
TraceInstrJump::~TraceInstrJump
virtual ~TraceInstrJump()
Definition: tracedata.cpp:938
TracePartFunction::addPartCaller
void addPartCaller(TracePartCall *)
Definition: tracedata.cpp:704
TracePartLine
Cost of a line from a trace file.
Definition: tracedata.h:484
TraceCostItem::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: tracedata.h:986
TraceFunction::prettyName
QString prettyName() const
Similar to name, but prettyfied = more descriptive to humans.
Definition: tracedata.cpp:1889
TracePartFile::file
TraceFile * file()
Definition: tracedata.h:630
TraceCallCost::_callCount
SubCost _callCount
Definition: tracedata.h:244
CostItem::data
virtual TraceData * data()
Definition: costitem.cpp:111
TraceAssoziation::_valid
bool _valid
Definition: tracedata.h:1110
TraceData::functionEndIterator
TraceFunctionMap::ConstIterator functionEndIterator() const
Definition: tracedata.cpp:3492
TraceListCost
Cost Item depends on a list of cost items.
Definition: tracedata.h:274
TracePartInstrJump::update
virtual void update()
Updates cost attributes.
Definition: tracedata.h:405
TraceLine::lineno
uint lineno() const
Definition: tracedata.h:955
TraceFunctionCycleList
QList< TraceFunctionCycle * > TraceFunctionCycleList
Definition: tracedata.h:189
TraceInstrCall::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: tracedata.cpp:1070
TraceInstr::partInstr
TracePartInstr * partInstr(TracePart *part, TracePartFunction *partFunction)
Definition: tracedata.cpp:1317
TraceJumpListCost::_deps
TraceJumpCostList _deps
Definition: tracedata.h:320
TracePartLineCall::update
virtual void update()
Updates cost attributes.
Definition: tracedata.h:474
TracePartFunction::TracePartFunction
TracePartFunction(TraceFunction *, TracePartObject *, TracePartFile *)
Definition: tracedata.cpp:616
TraceInclusiveCost::_inclusive
ProfileCostArray _inclusive
Definition: tracedata.h:266
TraceInstr::instrCalls
const TraceInstrCallList & instrCalls() const
Definition: tracedata.h:909
TraceListCost::_deps
TraceCostList _deps
Definition: tracedata.h:291
TraceLine
A source line of the program.
Definition: tracedata.h:935
TracePartLineList
QList< TracePartLine * > TracePartLineList
Definition: tracedata.h:171
TraceLineJump::isCondJump
bool isCondJump()
Definition: tracedata.h:765
TraceJumpListCost::deps
TraceJumpCostList deps()
Definition: tracedata.h:312
TraceFunction::addAssoziation
void addAssoziation(TraceAssoziation *a)
Definition: tracedata.cpp:1825
TraceCall::inCycle
int inCycle()
Definition: tracedata.cpp:1202
TracePartFunction
Cost of a function, from a single trace file.
Definition: tracedata.h:543
TraceAssoziation::_function
TraceFunction * _function
Definition: tracedata.h:1109
TracePartLineJump::update
virtual void update()
Updates cost attributes.
Definition: tracedata.h:458
TraceData::data
virtual const TraceData * data() const
Definition: tracedata.h:1370
TraceFunction::file
TraceFile * file() const
Definition: tracedata.h:1163
TraceLineCall::TraceLineCall
TraceLineCall(TraceCall *call, TraceLine *line)
Definition: tracedata.cpp:1079
TracePartClass::addPartFunction
void addPartFunction(TracePartFunction *f)
Definition: tracedata.h:616
TracePart::activate
bool activate(bool)
Definition: tracedata.cpp:3036
TraceLine::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: tracedata.cpp:1475
TraceLine::partLine
TracePartLine * partLine(TracePart *part, TracePartFunction *partFunction)
Definition: tracedata.cpp:1410
TracePart::part
virtual const TracePart * part() const
Definition: tracedata.h:662
TraceFunction::_cycle
TraceFunctionCycle * _cycle
Definition: tracedata.h:1209
TraceClass::prettyEmptyName
static QString prettyEmptyName()
Definition: tracedata.cpp:2717
TracePartInstrCall::update
virtual void update()
Updates cost attributes.
Definition: tracedata.h:426
TraceListCost::TraceListCost
TraceListCost(ProfileContext *)
Definition: tracedata.cpp:181
TraceData::objectMap
TraceObjectMap & objectMap()
Definition: tracedata.h:1438
TraceData::functionIterator
TraceFunctionMap::Iterator functionIterator(TraceFunction *)
Definition: tracedata.cpp:3474
TraceData::updateClassCycles
void updateClassCycles()
Definition: tracedata.cpp:3736
TracePart::setEventMapping
void setEventMapping(EventTypeMapping *sm)
Definition: tracedata.h:685
TracePartLineRegion
Cost of a source region.
Definition: tracedata.h:500
TraceFunctionSource::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: tracedata.cpp:1527
TraceCallListCost::~TraceCallListCost
virtual ~TraceCallListCost()
Definition: tracedata.cpp:335
TracePart::eventTypeMapping
EventTypeMapping * eventTypeMapping()
Definition: tracedata.h:686
TraceFunctionSource::file
TraceFile * file() const
Definition: tracedata.h:1040
TraceData::setMaxPartNumber
void setMaxPartNumber(int n)
Definition: tracedata.h:1452
TraceInstr::prettyName
QString prettyName() const
Similar to name, but prettyfied = more descriptive to humans.
Definition: tracedata.cpp:1371
TraceObjectMap
QMap< QString, TraceObject > TraceObjectMap
Definition: tracedata.h:190
TracePartInstr::instr
TraceInstr * instr() const
Definition: tracedata.h:444
TraceJumpListCost
Jump Cost Item depends on a list of Jump cost items.
Definition: tracedata.h:303
TraceCallListCost::findDepFromPart
TraceCallCost * findDepFromPart(TracePart *)
Definition: tracedata.cpp:359
TraceLine::functionSource
TraceFunctionSource * functionSource() const
Definition: tracedata.h:954
TraceClass::partClass
TracePartClass * partClass(TracePart *)
Definition: tracedata.cpp:2722
TraceAssoziation::~TraceAssoziation
virtual ~TraceAssoziation()
Definition: tracedata.cpp:1743
TraceData::inFunctionCycleUpdate
bool inFunctionCycleUpdate()
Definition: tracedata.h:1468
TraceFunctionSourceList
QList< TraceFunctionSource * > TraceFunctionSourceList
Definition: tracedata.h:187
TracePartFunction::setPartClass
void setPartClass(TracePartClass *c)
Definition: tracedata.h:565
TracePartCall
Cost of a call at a function to another function, from a single trace file.
Definition: tracedata.h:516
TraceCallListCost::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:374
TraceLineRegion::~TraceLineRegion
virtual ~TraceLineRegion()
TraceFile::prettyLongName
QString prettyLongName() const
Definition: tracedata.cpp:2873
TraceFunction::TraceFunction
TraceFunction()
Definition: tracedata.cpp:1794
TraceFunction::sourceFiles
const TraceFunctionSourceList & sourceFiles() const
Definition: tracedata.h:1168
TraceLineCall::line
TraceLine * line() const
Definition: tracedata.h:816
TraceListCost::deps
TraceCostList & deps()
Definition: tracedata.h:283
TracePart::setTimeframe
void setTimeframe(const QString &t)
Definition: tracedata.h:677
TraceInstr::line
TraceLine * line() const
Definition: tracedata.h:907
TraceJumpCost::addFollowedCount
void addFollowedCount(SubCost c)
Definition: tracedata.h:216
TraceCall::lineCall
TraceLineCall * lineCall(TraceLine *)
Definition: tracedata.cpp:1165
TracePartLineCall::TracePartLineCall
TracePartLineCall(TraceLineCall *)
Definition: tracedata.cpp:538
TraceClass::~TraceClass
virtual ~TraceClass()
Definition: tracedata.cpp:2704
TraceCall::invalidateDynamicCost
void invalidateDynamicCost()
Definition: tracedata.cpp:1183
TraceJumpListCost::findDepFromPart
TraceJumpCost * findDepFromPart(TracePart *)
Definition: tracedata.cpp:285
TraceFunction::instrMap
TraceInstrMap * instrMap()
Definition: tracedata.cpp:2521
TracePartFunction::calledCount
SubCost calledCount()
Definition: tracedata.cpp:745
TracePart::isActive
bool isActive() const
Definition: tracedata.h:690
TraceLineRegion::name
QString name() const
Returns dynamic name info (without type)
Definition: tracedata.h:1010
TracePartFunction::setPartObject
void setPartObject(TracePartObject *o)
Definition: tracedata.h:564
TracePartFunction::~TracePartFunction
virtual ~TracePartFunction()
Definition: tracedata.cpp:635
TracePartInstr
Cost of a code instruction address from a trace file.
Definition: tracedata.h:435
TracePart::timeframe
QString timeframe() const
Definition: tracedata.h:670
TraceCallCost::clear
virtual void clear()
Set all cost counters to zero.
Definition: tracedata.cpp:119
TraceInclusiveListCost
Inclusive Cost Item depends on a list of inclusive cost items.
Definition: tracedata.h:362
TraceLineJump::lineFrom
TraceLine * lineFrom() const
Definition: tracedata.h:763
TracePartFunction::setPartFile
void setPartFile(TracePartFile *f)
Definition: tracedata.h:566
TraceJumpCost::_executedCount
SubCost _executedCount
Definition: tracedata.h:220
TracePart::~TracePart
virtual ~TracePart()
Definition: tracedata.cpp:2991
TraceAssoziation::invalidate
void invalidate()
Definition: tracedata.h:1093
TraceFunctionCycle::base
TraceFunction * base() const
Definition: tracedata.h:1252
TracePart
A Trace Part: All data read from a trace file, containing all costs that happened in a specified time...
Definition: tracedata.h:655
TracePartInstr::~TracePartInstr
virtual ~TracePartInstr()
Definition: tracedata.cpp:517
TraceFile::addFunction
void addFunction(TraceFunction *)
Definition: tracedata.cpp:2781
TraceInstrJump
A jump from an instruction to another inside of a function.
Definition: tracedata.h:725
TraceFunction::calledContexts
int calledContexts()
Definition: tracedata.cpp:2246
TraceData::file
TraceFile * file(const QString &name)
Definition: tracedata.cpp:3353
TracePartCallList
QList< TracePartCall * > TracePartCallList
Definition: tracedata.h:169
TraceFile::functions
const TraceFunctionList & functions() const
Definition: tracedata.h:1313
TracePartCall::~TracePartCall
virtual ~TracePartCall()
Definition: tracedata.cpp:574
TracePartFunction::prettyCalledCount
QString prettyCalledCount()
Definition: tracedata.cpp:638
TraceFile::addSourceFile
void addSourceFile(TraceFunctionSource *)
Definition: tracedata.cpp:2804
TracePartFunction::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:775
TraceInstr::instrJump
TraceInstrJump * instrJump(TraceInstr *to, bool isCondJump)
Definition: tracedata.cpp:1331
TraceData::shortTraceName
QString shortTraceName() const
Definition: tracedata.cpp:3093
TraceListCost::~TraceListCost
virtual ~TraceListCost()
Definition: tracedata.cpp:187
TraceLine::setSourceFile
void setSourceFile(TraceFunctionSource *sf)
Definition: tracedata.h:960
TracePartLine::line
TraceLine * line() const
Definition: tracedata.h:493
TracePartInstrJump::next
TracePartInstrJump * next() const
Definition: tracedata.h:407
TraceFunction::isCycleMember
bool isCycleMember()
Definition: tracedata.cpp:2407
TraceFunction::info
QString info() const
Definition: tracedata.cpp:2071
TracePart::setTrigger
void setTrigger(const QString &t)
Definition: tracedata.h:676
TraceFunctionSource::~TraceFunctionSource
virtual ~TraceFunctionSource()
Definition: tracedata.cpp:1521
TraceInstr::name
virtual QString name() const
Returns dynamic name info (without type)
Definition: tracedata.cpp:1366
ProfileContext::Type
Type
Definition: context.h:36
TracePartCall::firstFixCallCost
FixCallCost * firstFixCallCost() const
Definition: tracedata.h:532
TraceFile::partFile
TracePartFile * partFile(TracePart *)
Definition: tracedata.cpp:2770
FixJump
A class holding a jump (mostly) inside of a function.
Definition: fixcost.h:135
TracePartInstrJump
Cost of jump at a instruction code address from a trace file.
Definition: tracedata.h:398
SubCost
Cost event counter, simple wrapper around a 64bit entity.
Definition: subcost.h:32
TracePartObject::object
TraceObject * object() const
Definition: tracedata.h:645
TraceFunction::sourceFile
TraceFunctionSource * sourceFile(TraceFile *file=0, bool createNew=false)
Definition: tracedata.cpp:2169
TracePart::version
QString version() const
Definition: tracedata.h:671
TracePartFile
Cost of a source file, from a single trace file.
Definition: tracedata.h:624
TraceListCost::addDep
void addDep(ProfileCostArray *)
Definition: tracedata.cpp:190
TraceFileMap
QMap< QString, TraceFile > TraceFileMap
Definition: tracedata.h:192
TraceFunction::calledCount
SubCost calledCount()
Definition: tracedata.cpp:2239
TracePartLineJump::TracePartLineJump
TracePartLineJump(TraceLineJump *)
Definition: tracedata.cpp:525
TraceData::functionCycle
TraceFunctionCycle * functionCycle(TraceFunction *)
Definition: tracedata.cpp:3660
TraceJumpListCost::TraceJumpListCost
TraceJumpListCost(ProfileContext *)
Definition: tracedata.cpp:255
TracePartFunction::firstFixCost
FixCost * firstFixCost() const
Definition: tracedata.h:571
TraceData::resetSourceDirs
void resetSourceDirs()
Definition: tracedata.cpp:3498
TraceFunction::firstAddress
Addr firstAddress() const
Definition: tracedata.cpp:2082
TraceCallCost
Cost item with additional call count metric.
Definition: tracedata.h:228
TraceCall::called
TraceFunction * called(bool skipCycle=false) const
Definition: tracedata.cpp:1235
TraceFunction::addPrettyLocation
void addPrettyLocation(QString &, int maxFiles=1) const
Definition: tracedata.cpp:2055
TracePartLineJump
Cost of jump at a source line from a trace file.
Definition: tracedata.h:451
TraceInstrCall::TraceInstrCall
TraceInstrCall(TraceCall *call, TraceInstr *instr)
Definition: tracedata.cpp:1040
TraceLineRegionList
QList< TraceLineRegion * > TraceLineRegionList
Definition: tracedata.h:186
TracePartCall::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:582
TracePartList
QList< TracePart * > TracePartList
Definition: tracedata.h:176
TraceLineRegion::from
uint from() const
Definition: tracedata.h:1008
EventTypeSet
A class for managing a set of event types.
Definition: eventtype.h:117
TraceLineRegion::TraceLineRegion
TraceLineRegion(uint from, uint to, QString name)
TraceLineJump::TraceLineJump
TraceLineJump(TraceLine *lineFrom, TraceLine *lineTo, bool isCondJump)
Definition: tracedata.cpp:1001
TracePartObject::TracePartObject
TracePartObject(TraceObject *)
Definition: tracedata.cpp:912
TraceFunctionSource::lastLineno
uint lastLineno()
Definition: tracedata.cpp:1542
TraceLineJump::~TraceLineJump
virtual ~TraceLineJump()
Definition: tracedata.cpp:1010
TraceCallList
QList< TraceCall * > TraceCallList
Definition: tracedata.h:184
TraceFunction::callingCount
SubCost callingCount()
Definition: tracedata.cpp:2253
TraceFunctionSource::TraceFunctionSource
TraceFunctionSource(TraceFunction *, TraceFile *)
Definition: tracedata.cpp:1506
TraceData::fixPool
FixPool * fixPool()
Definition: tracedata.cpp:3102
TraceFunction::removeAssoziation
void removeAssoziation(TraceAssoziation *a)
Definition: tracedata.cpp:1831
TracePartClass::cls
TraceClass * cls()
Definition: tracedata.h:615
TraceAssoziation::setFunction
bool setFunction(TraceFunction *)
reset function to associate this object to.
Definition: tracedata.cpp:1756
TraceInclusiveListCost::_deps
TraceInclusiveCostList _deps
Definition: tracedata.h:379
TraceJumpCost::addExecutedCount
void addExecutedCount(SubCost c)
Definition: tracedata.h:217
TraceJumpCost::followedCount
SubCost followedCount()
Definition: tracedata.cpp:62
TraceLineCall::partLineCall
TracePartLineCall * partLineCall(TracePart *, TracePartCall *)
Definition: tracedata.cpp:1094
TraceFile::directory
QString directory()
Definition: tracedata.cpp:2834
TraceClass
A C++ Class / Namespace.
Definition: tracedata.h:1271
TraceInstrJump::instrFrom
TraceInstr * instrFrom() const
Definition: tracedata.h:736
TraceCall::onlyActiveParts
bool onlyActiveParts()
Definition: tracedata.h:870
TraceData::functionMap
TraceFunctionMap & functionMap()
Definition: tracedata.h:1441
TraceFunction::prettyLocation
QString prettyLocation(int maxFiles=0) const
Definition: tracedata.cpp:2047
TraceData::updateFileCycles
void updateFileCycles()
Definition: tracedata.cpp:3741
TracePartInstrJump::TracePartInstrJump
TracePartInstrJump(TraceInstrJump *, TracePartInstrJump *)
Definition: tracedata.cpp:482
TraceLineJump::onlyActiveParts
bool onlyActiveParts()
Definition: tracedata.h:771
TraceData
This class holds profiling data of multiple tracefiles generated with cachegrind on one command...
Definition: tracedata.h:1363
TraceFunction::isCycle
bool isCycle()
Definition: tracedata.cpp:2402
TraceLine::setLineno
void setLineno(uint lineno)
Definition: tracedata.h:961
TraceAssoziation::rtti
virtual int rtti()
Definition: tracedata.h:1078
TracePartFunction::partClass
TracePartClass * partClass()
Definition: tracedata.h:560
TraceObject::partObject
TracePartObject * partObject(TracePart *)
Definition: tracedata.cpp:2894
TraceData::~TraceData
virtual ~TraceData()
Definition: tracedata.cpp:3085
TraceJumpCost::TraceJumpCost
TraceJumpCost(ProfileContext *)
Definition: tracedata.cpp:46
TracePartLineRegionList
QList< TracePartLineRegion * > TracePartLineRegionList
Definition: tracedata.h:172
TracePartFunction::partCallings
const TracePartCallList & partCallings()
Definition: tracedata.h:563
TraceJumpCost
Cost of a (conditional) jump.
Definition: tracedata.h:201
TraceFile::prettyEmptyName
static QString prettyEmptyName()
Definition: tracedata.cpp:2868
TraceFunction::location
QString location(int maxFiles=0) const
Returns empty string if location is fully unknown.
Definition: tracedata.cpp:1994
TraceLineJump::partLineJump
TracePartLineJump * partLineJump(TracePart *)
Definition: tracedata.cpp:1017
TracePart::setPartNumber
void setPartNumber(int n)
Definition: tracedata.cpp:2996
TracePartInstr::TracePartInstr
TracePartInstr(TraceInstr *)
Definition: tracedata.cpp:511
TraceCall
A call from one to another function.
Definition: tracedata.h:835
TraceJumpCostList
QList< TraceJumpCost * > TraceJumpCostList
Definition: tracedata.h:165
TracePartFile::addPartFunction
void addPartFunction(TracePartFunction *f)
Definition: tracedata.h:631
TraceCall::setFirstFixCost
FixCallCost * setFirstFixCost(FixCallCost *fc)
Definition: tracedata.h:866
TraceInstrCall::call
TraceCall * call() const
Definition: tracedata.h:791
TraceFunction::cycleReset
void cycleReset()
Definition: tracedata.cpp:2412
TraceFunction::prettyCalledCount
QString prettyCalledCount()
Definition: tracedata.cpp:2267
TraceFunctionCycle::setup
void setup()
Definition: tracedata.cpp:2673
TraceFunction::instr
TraceInstr * instr(Addr addr, bool createNew=true)
Definition: tracedata.cpp:2100
TracePartFunction::partCallers
const TracePartCallList & partCallers()
Definition: tracedata.h:562
TracePartInstrCall::instrCall
TraceInstrCall * instrCall() const
Definition: tracedata.h:427
TraceAssoziation::isAssoziated
bool isAssoziated()
Could we set the function assoziation to ourself? This only can return false if this is a unique asso...
Definition: tracedata.cpp:1749
TraceFile::shortName
QString shortName() const
Definition: tracedata.cpp:2849
TraceData::addPart
void addPart(TracePart *)
Definition: tracedata.cpp:3260
TraceData::dynPool
DynPool * dynPool()
Definition: tracedata.cpp:3110
TraceInstr::setLine
void setLine(TraceLine *l)
Definition: tracedata.h:915
TraceFunction::calling
TraceCall * calling(TraceFunction *called)
Definition: tracedata.cpp:2150
TraceObject::directory
QString directory()
Definition: tracedata.cpp:2935
TraceCall::calledName
QString calledName(bool skipCycle=false) const
Definition: tracedata.cpp:1264
TraceLine::~TraceLine
virtual ~TraceLine()
Definition: tracedata.cpp:1387
TracePartFunction::setFirstFixJump
FixJump * setFirstFixJump(FixJump *fj)
Definition: tracedata.h:572
TraceLineJump
A jump from one line to another inside of a function.
Definition: tracedata.h:754
TraceData::traceName
QString traceName() const
Definition: tracedata.h:1401
TracePartFunction::prettyCallingCount
QString prettyCallingCount()
Definition: tracedata.cpp:643
TracePartFunction::addPartCalling
void addPartCalling(TracePartCall *)
Definition: tracedata.cpp:725
addr.h
TracePartLineCallList
QList< TracePartLineCall * > TracePartLineCallList
Definition: tracedata.h:175
TraceInclusiveCost::inclusive
ProfileCostArray * inclusive()
Definition: tracedata.cpp:163
TraceLineCall::~TraceLineCall
virtual ~TraceLineCall()
Definition: tracedata.cpp:1087
TraceCall::~TraceCall
virtual ~TraceCall()
Definition: tracedata.cpp:1125
TraceCall::TraceCall
TraceCall(TraceFunction *caller, TraceFunction *called)
Definition: tracedata.cpp:1117
TraceJumpListCost::addDep
void addDep(TraceJumpCost *)
Definition: tracedata.cpp:264
TraceClass::TraceClass
TraceClass()
Definition: tracedata.cpp:2700
TraceJumpListCost::~TraceJumpListCost
virtual ~TraceJumpListCost()
Definition: tracedata.cpp:261
TraceInstr::addr
Addr addr() const
Definition: tracedata.h:905
TraceObject::shortName
QString shortName() const
Definition: tracedata.cpp:2950
TracePartObject
Cost of a object, from a single trace file.
Definition: tracedata.h:639
QList
TraceCostList
QList< ProfileCostArray * > TraceCostList
Definition: subcost.h:70
TraceFunctionSource::lineMap
TraceLineMap * lineMap()
Definition: tracedata.cpp:1618
FixCallCost
A FixCallCost will be inserted into a.
Definition: fixcost.h:96
TraceData::fileMap
TraceFileMap & fileMap()
Definition: tracedata.h:1439
TraceData::update
virtual void update()
Updates cost attributes.
Definition: tracedata.cpp:3506
TraceObject::TraceObject
TraceObject()
Definition: tracedata.cpp:2884
TraceCallListCost::addDep
void addDep(TraceCallCost *)
Definition: tracedata.cpp:338
TraceData::invalidateDynamicCost
void invalidateDynamicCost()
Definition: tracedata.cpp:3306
TraceData::functionBeginIterator
TraceFunctionMap::ConstIterator functionBeginIterator() const
Definition: tracedata.cpp:3487
TracePart::setDescription
void setDescription(const QString &d)
Definition: tracedata.h:675
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:03:27 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kcachegrind

Skip menu "kcachegrind"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal