| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 // | 112 // |
| 113 // This class has static methods for the different platform specific | 113 // This class has static methods for the different platform specific |
| 114 // functions. Add methods here to cope with differences between the | 114 // functions. Add methods here to cope with differences between the |
| 115 // supported platforms. | 115 // supported platforms. |
| 116 | 116 |
| 117 class OS { | 117 class OS { |
| 118 public: | 118 public: |
| 119 // Initializes the platform OS support. Called once at VM startup. | 119 // Initializes the platform OS support. Called once at VM startup. |
| 120 static void SetUp(); | 120 static void SetUp(); |
| 121 | 121 |
| 122 // Initializes the platform OS support that depend on CPU features. This is |
| 123 // called after CPU initialization. |
| 124 static void PostSetUp(); |
| 125 |
| 122 // Returns the accumulated user time for thread. This routine | 126 // Returns the accumulated user time for thread. This routine |
| 123 // can be used for profiling. The implementation should | 127 // can be used for profiling. The implementation should |
| 124 // strive for high-precision timer resolution, preferable | 128 // strive for high-precision timer resolution, preferable |
| 125 // micro-second resolution. | 129 // micro-second resolution. |
| 126 static int GetUserTime(uint32_t* secs, uint32_t* usecs); | 130 static int GetUserTime(uint32_t* secs, uint32_t* usecs); |
| 127 | 131 |
| 128 // Get a tick counter normalized to one tick per microsecond. | 132 // Get a tick counter normalized to one tick per microsecond. |
| 129 // Used for calculating time intervals. | 133 // Used for calculating time intervals. |
| 130 static int64_t Ticks(); | 134 static int64_t Ticks(); |
| 131 | 135 |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 538 | 542 |
| 539 // POD Mutex initialized lazily (i.e. the first time Pointer() is called). | 543 // POD Mutex initialized lazily (i.e. the first time Pointer() is called). |
| 540 // Usage: | 544 // Usage: |
| 541 // static LazyMutex my_mutex = LAZY_MUTEX_INITIALIZER; | 545 // static LazyMutex my_mutex = LAZY_MUTEX_INITIALIZER; |
| 542 // | 546 // |
| 543 // void my_function() { | 547 // void my_function() { |
| 544 // ScopedLock my_lock(my_mutex.Pointer()); | 548 // ScopedLock my_lock(my_mutex.Pointer()); |
| 545 // // Do something. | 549 // // Do something. |
| 546 // } | 550 // } |
| 547 // | 551 // |
| 548 typedef LazyDynamicInstance<Mutex, CreateMutexTrait>::type LazyMutex; | 552 typedef LazyDynamicInstance< |
| 553 Mutex, CreateMutexTrait, ThreadSafeInitOnceTrait>::type LazyMutex; |
| 549 | 554 |
| 550 #define LAZY_MUTEX_INITIALIZER LAZY_DYNAMIC_INSTANCE_INITIALIZER | 555 #define LAZY_MUTEX_INITIALIZER LAZY_DYNAMIC_INSTANCE_INITIALIZER |
| 551 | 556 |
| 552 // ---------------------------------------------------------------------------- | 557 // ---------------------------------------------------------------------------- |
| 553 // ScopedLock | 558 // ScopedLock |
| 554 // | 559 // |
| 555 // Stack-allocated ScopedLocks provide block-scoped locking and | 560 // Stack-allocated ScopedLocks provide block-scoped locking and |
| 556 // unlocking of a mutex. | 561 // unlocking of a mutex. |
| 557 class ScopedLock { | 562 class ScopedLock { |
| 558 public: | 563 public: |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 // // The following semaphore starts at 0. | 614 // // The following semaphore starts at 0. |
| 610 // static LazySemaphore<0>::type my_semaphore = LAZY_SEMAPHORE_INITIALIZER; | 615 // static LazySemaphore<0>::type my_semaphore = LAZY_SEMAPHORE_INITIALIZER; |
| 611 // | 616 // |
| 612 // void my_function() { | 617 // void my_function() { |
| 613 // // Do something with my_semaphore.Pointer(). | 618 // // Do something with my_semaphore.Pointer(). |
| 614 // } | 619 // } |
| 615 // | 620 // |
| 616 template <int InitialValue> | 621 template <int InitialValue> |
| 617 struct LazySemaphore { | 622 struct LazySemaphore { |
| 618 typedef typename LazyDynamicInstance< | 623 typedef typename LazyDynamicInstance< |
| 619 Semaphore, CreateSemaphoreTrait<InitialValue> >::type type; | 624 Semaphore, CreateSemaphoreTrait<InitialValue>, |
| 625 ThreadSafeInitOnceTrait>::type type; |
| 620 }; | 626 }; |
| 621 | 627 |
| 622 #define LAZY_SEMAPHORE_INITIALIZER LAZY_DYNAMIC_INSTANCE_INITIALIZER | 628 #define LAZY_SEMAPHORE_INITIALIZER LAZY_DYNAMIC_INSTANCE_INITIALIZER |
| 623 | 629 |
| 624 | 630 |
| 625 // ---------------------------------------------------------------------------- | 631 // ---------------------------------------------------------------------------- |
| 626 // Socket | 632 // Socket |
| 627 // | 633 // |
| 628 | 634 |
| 629 class Socket { | 635 class Socket { |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 Atomic32 active_; | 753 Atomic32 active_; |
| 748 PlatformData* data_; // Platform specific data. | 754 PlatformData* data_; // Platform specific data. |
| 749 int samples_taken_; // Counts stack samples taken. | 755 int samples_taken_; // Counts stack samples taken. |
| 750 DISALLOW_IMPLICIT_CONSTRUCTORS(Sampler); | 756 DISALLOW_IMPLICIT_CONSTRUCTORS(Sampler); |
| 751 }; | 757 }; |
| 752 | 758 |
| 753 | 759 |
| 754 } } // namespace v8::internal | 760 } } // namespace v8::internal |
| 755 | 761 |
| 756 #endif // V8_PLATFORM_H_ | 762 #endif // V8_PLATFORM_H_ |
| OLD | NEW |