profiler.rs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #[repr(C)]
  2. #[allow(non_camel_case_types, dead_code)]
  3. pub enum stat {
  4. S_COMPILE,
  5. S_COMPILE_SUCCESS,
  6. S_COMPILE_CUT_OFF_AT_END_OF_PAGE,
  7. S_COMPILE_WITH_LOOP_SAFETY,
  8. S_COMPILE_BASIC_BLOCK,
  9. S_COMPILE_ENTRY_POINT,
  10. S_CACHE_MISMATCH,
  11. S_RUN_INTERPRETED,
  12. S_RUN_INTERPRETED_PENDING,
  13. S_RUN_INTERPRETED_NEAR_END_OF_PAGE,
  14. S_RUN_INTERPRETED_DIFFERENT_STATE,
  15. S_RUN_INTERPRETED_STEPS,
  16. S_RUN_FROM_CACHE,
  17. S_RUN_FROM_CACHE_STEPS,
  18. S_TRIGGER_CPU_EXCEPTION,
  19. S_SAFE_READ32_FAST,
  20. S_SAFE_READ32_SLOW_PAGE_CROSSED,
  21. S_SAFE_READ32_SLOW_NOT_VALID,
  22. S_SAFE_READ32_SLOW_NOT_USER,
  23. S_SAFE_READ32_SLOW_IN_MAPPED_RANGE,
  24. S_SAFE_WRITE32_FAST,
  25. S_SAFE_WRITE32_SLOW_PAGE_CROSSED,
  26. S_SAFE_WRITE32_SLOW_NOT_VALID,
  27. S_SAFE_WRITE32_SLOW_NOT_USER,
  28. S_SAFE_WRITE32_SLOW_IN_MAPPED_RANGE,
  29. S_SAFE_WRITE32_SLOW_READ_ONLY,
  30. S_SAFE_WRITE32_SLOW_HAS_CODE,
  31. S_DO_RUN,
  32. S_DO_MANY_CYCLES,
  33. S_CYCLE_INTERNAL,
  34. S_INVALIDATE_PAGE,
  35. S_INVALIDATE_CACHE_ENTRY,
  36. S_NONFAULTING_OPTIMIZATION,
  37. S_CLEAR_TLB,
  38. S_FULL_CLEAR_TLB,
  39. S_TLB_FULL,
  40. S_TLB_GLOBAL_FULL,
  41. }
  42. #[cfg(debug_assertions)]
  43. mod unsafe_extern {
  44. extern "C" {
  45. pub fn profiler_stat_increment(stat: ::profiler::stat);
  46. }
  47. }
  48. #[cfg(debug_assertions)]
  49. pub fn stat_increment(stat: stat) { unsafe { unsafe_extern::profiler_stat_increment(stat) } }
  50. #[cfg(not(debug_assertions))]
  51. pub fn stat_increment(_stat: stat) {}