| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 119 | 119 |
| 120 | 120 |
| 121 int64_t TimeDelta::InNanoseconds() const { | 121 int64_t TimeDelta::InNanoseconds() const { |
| 122 return delta_ * Time::kNanosecondsPerMicrosecond; | 122 return delta_ * Time::kNanosecondsPerMicrosecond; |
| 123 } | 123 } |
| 124 | 124 |
| 125 | 125 |
| 126 #if V8_OS_MACOSX | 126 #if V8_OS_MACOSX |
| 127 | 127 |
| 128 TimeDelta TimeDelta::FromMachTimespec(struct mach_timespec ts) { | 128 TimeDelta TimeDelta::FromMachTimespec(struct mach_timespec ts) { |
| 129 ASSERT(ts.tv_nsec >= 0); | 129 ASSERT_GE(ts.tv_nsec, 0); |
| 130 ASSERT_LT(ts.tv_nsec, |
| 131 static_cast<long>(Time::kNanosecondsPerSecond)); // NOLINT |
| 130 return TimeDelta(ts.tv_sec * Time::kMicrosecondsPerSecond + | 132 return TimeDelta(ts.tv_sec * Time::kMicrosecondsPerSecond + |
| 131 ts.tv_nsec / Time::kNanosecondsPerMicrosecond); | 133 ts.tv_nsec / Time::kNanosecondsPerMicrosecond); |
| 132 } | 134 } |
| 133 | 135 |
| 134 | 136 |
| 135 struct mach_timespec TimeDelta::ToMachTimespec() const { | 137 struct mach_timespec TimeDelta::ToMachTimespec() const { |
| 136 struct mach_timespec ts; | 138 struct mach_timespec ts; |
| 137 ASSERT(delta_ >= 0); | 139 ASSERT(delta_ >= 0); |
| 138 ts.tv_sec = delta_ / Time::kMicrosecondsPerSecond; | 140 ts.tv_sec = delta_ / Time::kMicrosecondsPerSecond; |
| 139 ts.tv_nsec = (delta_ % Time::kMicrosecondsPerSecond) * | 141 ts.tv_nsec = (delta_ % Time::kMicrosecondsPerSecond) * |
| 140 Time::kNanosecondsPerMicrosecond; | 142 Time::kNanosecondsPerMicrosecond; |
| 141 return ts; | 143 return ts; |
| 142 } | 144 } |
| 143 | 145 |
| 144 #endif // V8_OS_MACOSX | 146 #endif // V8_OS_MACOSX |
| 145 | 147 |
| 146 | 148 |
| 149 #if V8_OS_POSIX |
| 150 |
| 151 TimeDelta TimeDelta::FromTimespec(struct timespec ts) { |
| 152 ASSERT_GE(ts.tv_nsec, 0); |
| 153 ASSERT_LT(ts.tv_nsec, |
| 154 static_cast<long>(Time::kNanosecondsPerSecond)); // NOLINT |
| 155 return TimeDelta(ts.tv_sec * Time::kMicrosecondsPerSecond + |
| 156 ts.tv_nsec / Time::kNanosecondsPerMicrosecond); |
| 157 } |
| 158 |
| 159 |
| 160 struct timespec TimeDelta::ToTimespec() const { |
| 161 struct timespec ts; |
| 162 ts.tv_sec = delta_ / Time::kMicrosecondsPerSecond; |
| 163 ts.tv_nsec = (delta_ % Time::kMicrosecondsPerSecond) * |
| 164 Time::kNanosecondsPerMicrosecond; |
| 165 return ts; |
| 166 } |
| 167 |
| 168 #endif // V8_OS_POSIX |
| 169 |
| 170 |
| 147 #if V8_OS_WIN | 171 #if V8_OS_WIN |
| 148 | 172 |
| 149 // We implement time using the high-resolution timers so that we can get | 173 // We implement time using the high-resolution timers so that we can get |
| 150 // timeouts which are smaller than 10-15ms. To avoid any drift, we | 174 // timeouts which are smaller than 10-15ms. To avoid any drift, we |
| 151 // periodically resync the internal clock to the system clock. | 175 // periodically resync the internal clock to the system clock. |
| 152 class Clock V8_FINAL { | 176 class Clock V8_FINAL { |
| 153 public: | 177 public: |
| 154 Clock() : initial_time_(CurrentWallclockTime()), | 178 Clock() : initial_time_(CurrentWallclockTime()), |
| 155 initial_ticks_(TimeTicks::Now()) {} | 179 initial_ticks_(TimeTicks::Now()) {} |
| 156 | 180 |
| (...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 580 ticks = (ts.tv_sec * Time::kMicrosecondsPerSecond + | 604 ticks = (ts.tv_sec * Time::kMicrosecondsPerSecond + |
| 581 ts.tv_nsec / Time::kNanosecondsPerMicrosecond); | 605 ts.tv_nsec / Time::kNanosecondsPerMicrosecond); |
| 582 #endif // V8_OS_MACOSX | 606 #endif // V8_OS_MACOSX |
| 583 // Make sure we never return 0 here. | 607 // Make sure we never return 0 here. |
| 584 return TimeTicks(ticks + 1); | 608 return TimeTicks(ticks + 1); |
| 585 } | 609 } |
| 586 | 610 |
| 587 #endif // V8_OS_WIN | 611 #endif // V8_OS_WIN |
| 588 | 612 |
| 589 } } // namespace v8::internal | 613 } } // namespace v8::internal |
| OLD | NEW |