| 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 23 matching lines...) Expand all Loading... |
| 34 | 34 |
| 35 namespace v8 { | 35 namespace v8 { |
| 36 namespace internal { | 36 namespace internal { |
| 37 | 37 |
| 38 #if V8_OS_POSIX | 38 #if V8_OS_POSIX |
| 39 | 39 |
| 40 ConditionVariable::ConditionVariable() { | 40 ConditionVariable::ConditionVariable() { |
| 41 // TODO(bmeurer): The test for V8_LIBRT_NOT_AVAILABLE is a temporary | 41 // TODO(bmeurer): The test for V8_LIBRT_NOT_AVAILABLE is a temporary |
| 42 // hack to support cross-compiling Chrome for Android in AOSP. Remove | 42 // hack to support cross-compiling Chrome for Android in AOSP. Remove |
| 43 // this once AOSP is fixed. | 43 // this once AOSP is fixed. |
| 44 #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || V8_LIBC_GLIBC) && \ | 44 #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \ |
| 45 !V8_LIBRT_NOT_AVAILABLE | 45 (V8_OS_LINUX && V8_LIBC_GLIBC)) && !V8_LIBRT_NOT_AVAILABLE |
| 46 // On Free/Net/OpenBSD and Linux with glibc we can change the time | 46 // On Free/Net/OpenBSD and Linux with glibc we can change the time |
| 47 // source for pthread_cond_timedwait() to use the monotonic clock. | 47 // source for pthread_cond_timedwait() to use the monotonic clock. |
| 48 pthread_condattr_t attr; | 48 pthread_condattr_t attr; |
| 49 int result = pthread_condattr_init(&attr); | 49 int result = pthread_condattr_init(&attr); |
| 50 ASSERT_EQ(0, result); | 50 ASSERT_EQ(0, result); |
| 51 result = pthread_condattr_setclock(&attr, CLOCK_MONOTONIC); | 51 result = pthread_condattr_setclock(&attr, CLOCK_MONOTONIC); |
| 52 ASSERT_EQ(0, result); | 52 ASSERT_EQ(0, result); |
| 53 result = pthread_cond_init(&native_handle_, &attr); | 53 result = pthread_cond_init(&native_handle_, &attr); |
| 54 ASSERT_EQ(0, result); | 54 ASSERT_EQ(0, result); |
| 55 result = pthread_condattr_destroy(&attr); | 55 result = pthread_condattr_destroy(&attr); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 100 // not depend on the real time clock, which is what you really WANT here! | 100 // not depend on the real time clock, which is what you really WANT here! |
| 101 ts = rel_time.ToTimespec(); | 101 ts = rel_time.ToTimespec(); |
| 102 ASSERT_GE(ts.tv_sec, 0); | 102 ASSERT_GE(ts.tv_sec, 0); |
| 103 ASSERT_GE(ts.tv_nsec, 0); | 103 ASSERT_GE(ts.tv_nsec, 0); |
| 104 result = pthread_cond_timedwait_relative_np( | 104 result = pthread_cond_timedwait_relative_np( |
| 105 &native_handle_, &mutex->native_handle(), &ts); | 105 &native_handle_, &mutex->native_handle(), &ts); |
| 106 #else | 106 #else |
| 107 // TODO(bmeurer): The test for V8_LIBRT_NOT_AVAILABLE is a temporary | 107 // TODO(bmeurer): The test for V8_LIBRT_NOT_AVAILABLE is a temporary |
| 108 // hack to support cross-compiling Chrome for Android in AOSP. Remove | 108 // hack to support cross-compiling Chrome for Android in AOSP. Remove |
| 109 // this once AOSP is fixed. | 109 // this once AOSP is fixed. |
| 110 #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || V8_LIBC_GLIBC) && \ | 110 #if (V8_OS_FREEBSD || V8_OS_NETBSD || V8_OS_OPENBSD || \ |
| 111 !V8_LIBRT_NOT_AVAILABLE | 111 (V8_OS_LINUX && V8_LIBC_GLIBC)) && !V8_LIBRT_NOT_AVAILABLE |
| 112 // On Free/Net/OpenBSD and Linux with glibc we can change the time | 112 // On Free/Net/OpenBSD and Linux with glibc we can change the time |
| 113 // source for pthread_cond_timedwait() to use the monotonic clock. | 113 // source for pthread_cond_timedwait() to use the monotonic clock. |
| 114 result = clock_gettime(CLOCK_MONOTONIC, &ts); | 114 result = clock_gettime(CLOCK_MONOTONIC, &ts); |
| 115 ASSERT_EQ(0, result); | 115 ASSERT_EQ(0, result); |
| 116 Time now = Time::FromTimespec(ts); | 116 Time now = Time::FromTimespec(ts); |
| 117 #else | 117 #else |
| 118 // The timeout argument to pthread_cond_timedwait() is in absolute time. | 118 // The timeout argument to pthread_cond_timedwait() is in absolute time. |
| 119 Time now = Time::NowFromSystemTime(); | 119 Time now = Time::NowFromSystemTime(); |
| 120 #endif | 120 #endif |
| 121 Time end_time = now + rel_time; | 121 Time end_time = now + rel_time; |
| (...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 // Release the wait event. | 336 // Release the wait event. |
| 337 ASSERT(!result || event->notified_); | 337 ASSERT(!result || event->notified_); |
| 338 native_handle_.Post(event, result); | 338 native_handle_.Post(event, result); |
| 339 | 339 |
| 340 return result; | 340 return result; |
| 341 } | 341 } |
| 342 | 342 |
| 343 #endif // V8_OS_POSIX | 343 #endif // V8_OS_POSIX |
| 344 | 344 |
| 345 } } // namespace v8::internal | 345 } } // namespace v8::internal |
| OLD | NEW |