JSMetrics.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "JSVM.h"
  2. #include "JSMetrics.h"
  3. namespace Atomic
  4. {
  5. JSMetrics::JSMetrics(Context* context, JSVM *vm) : Object(context),
  6. vm_(vm)
  7. {
  8. }
  9. JSMetrics::~JSMetrics()
  10. {
  11. }
  12. void JSMetrics::Dump()
  13. {
  14. List<String>::ConstIterator itr = classNames_.Begin();
  15. while (itr != classNames_.End())
  16. {
  17. const String& classname = *itr;
  18. LOGINFOF("%s %i", classname.CString(), classInstances_[classname] );
  19. itr++;
  20. }
  21. }
  22. void JSMetrics::Capture()
  23. {
  24. classNames_.Clear();
  25. classInstances_.Clear();
  26. HashMap<void*, RefCounted*>::ConstIterator itr = vm_->heapToObject_.Begin();
  27. while (itr != vm_->heapToObject_.End())
  28. {
  29. String classname = "RefCounted";
  30. if (itr->second_->IsObject())
  31. {
  32. classname = ((Object*) itr->second_)->GetTypeName();
  33. }
  34. if (!classNames_.Contains(classname))
  35. {
  36. classNames_.Push(classname);
  37. classInstances_[classname] = 1;
  38. }
  39. else
  40. {
  41. classInstances_[classname]++;
  42. }
  43. itr++;
  44. }
  45. }
  46. }