2
0

TimeValue.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //===-- TimeValue.cpp - Implement OS TimeValue Concept ----------*- C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // This file implements the operating system TimeValue concept.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. #include "llvm/Support/TimeValue.h"
  14. #include "llvm/Config/config.h"
  15. namespace llvm {
  16. using namespace sys;
  17. const TimeValue::SecondsType
  18. TimeValue::PosixZeroTimeSeconds = -946684800;
  19. const TimeValue::SecondsType
  20. TimeValue::Win32ZeroTimeSeconds = -12591158400ULL;
  21. void
  22. TimeValue::normalize( void ) {
  23. if ( nanos_ >= NANOSECONDS_PER_SECOND ) {
  24. do {
  25. seconds_++;
  26. nanos_ -= NANOSECONDS_PER_SECOND;
  27. } while ( nanos_ >= NANOSECONDS_PER_SECOND );
  28. } else if (nanos_ <= -NANOSECONDS_PER_SECOND ) {
  29. do {
  30. seconds_--;
  31. nanos_ += NANOSECONDS_PER_SECOND;
  32. } while (nanos_ <= -NANOSECONDS_PER_SECOND);
  33. }
  34. if (seconds_ >= 1 && nanos_ < 0) {
  35. seconds_--;
  36. nanos_ += NANOSECONDS_PER_SECOND;
  37. } else if (seconds_ < 0 && nanos_ > 0) {
  38. seconds_++;
  39. nanos_ -= NANOSECONDS_PER_SECOND;
  40. }
  41. }
  42. }
  43. /// Include the platform-specific portion of TimeValue class
  44. #ifdef LLVM_ON_UNIX
  45. #include "Unix/TimeValue.inc"
  46. #endif
  47. #ifdef LLVM_ON_WIN32
  48. #include "Windows/TimeValue.inc"
  49. #endif