| OLD | NEW | 
|---|
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 28 matching lines...) Expand all  Loading... | 
| 39 class HOptimizedGraphBuilder; | 39 class HOptimizedGraphBuilder; | 
| 40 class OptimizingCompiler; | 40 class OptimizingCompiler; | 
| 41 class SharedFunctionInfo; | 41 class SharedFunctionInfo; | 
| 42 | 42 | 
| 43 class OptimizingCompilerThread : public Thread { | 43 class OptimizingCompilerThread : public Thread { | 
| 44  public: | 44  public: | 
| 45   explicit OptimizingCompilerThread(Isolate *isolate) : | 45   explicit OptimizingCompilerThread(Isolate *isolate) : | 
| 46       Thread("OptimizingCompilerThread"), | 46       Thread("OptimizingCompilerThread"), | 
| 47 #ifdef DEBUG | 47 #ifdef DEBUG | 
| 48       thread_id_(0), | 48       thread_id_(0), | 
| 49       thread_id_mutex_(OS::CreateMutex()), |  | 
| 50 #endif | 49 #endif | 
| 51       isolate_(isolate), | 50       isolate_(isolate), | 
| 52       stop_semaphore_(OS::CreateSemaphore(0)), | 51       stop_semaphore_(OS::CreateSemaphore(0)), | 
| 53       input_queue_semaphore_(OS::CreateSemaphore(0)), | 52       input_queue_semaphore_(OS::CreateSemaphore(0)), | 
| 54       install_mutex_(OS::CreateMutex()), |  | 
| 55       time_spent_compiling_(0), | 53       time_spent_compiling_(0), | 
| 56       time_spent_total_(0) { | 54       time_spent_total_(0) { | 
| 57     NoBarrier_Store(&stop_thread_, static_cast<AtomicWord>(false)); | 55     NoBarrier_Store(&stop_thread_, static_cast<AtomicWord>(false)); | 
| 58     NoBarrier_Store(&queue_length_, static_cast<AtomicWord>(0)); | 56     NoBarrier_Store(&queue_length_, static_cast<AtomicWord>(0)); | 
| 59   } | 57   } | 
| 60 | 58 | 
| 61   void Run(); | 59   void Run(); | 
| 62   void Stop(); | 60   void Stop(); | 
| 63   void CompileNext(); | 61   void CompileNext(); | 
| 64   void QueueForOptimization(OptimizingCompiler* optimizing_compiler); | 62   void QueueForOptimization(OptimizingCompiler* optimizing_compiler); | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
| 76     // doesn't introduce a race -- queue_length_ may decreased in | 74     // doesn't introduce a race -- queue_length_ may decreased in | 
| 77     // meantime, but not increased. | 75     // meantime, but not increased. | 
| 78     return (current_length < FLAG_parallel_recompilation_queue_length); | 76     return (current_length < FLAG_parallel_recompilation_queue_length); | 
| 79   } | 77   } | 
| 80 | 78 | 
| 81 #ifdef DEBUG | 79 #ifdef DEBUG | 
| 82   bool IsOptimizerThread(); | 80   bool IsOptimizerThread(); | 
| 83 #endif | 81 #endif | 
| 84 | 82 | 
| 85   ~OptimizingCompilerThread() { | 83   ~OptimizingCompilerThread() { | 
| 86     delete install_mutex_; |  | 
| 87     delete input_queue_semaphore_; | 84     delete input_queue_semaphore_; | 
| 88     delete stop_semaphore_; | 85     delete stop_semaphore_; | 
| 89 #ifdef DEBUG |  | 
| 90     delete thread_id_mutex_; |  | 
| 91 #endif |  | 
| 92   } | 86   } | 
| 93 | 87 | 
| 94  private: | 88  private: | 
| 95 #ifdef DEBUG | 89 #ifdef DEBUG | 
| 96   int thread_id_; | 90   int thread_id_; | 
| 97   Mutex* thread_id_mutex_; | 91   Mutex thread_id_mutex_; | 
| 98 #endif | 92 #endif | 
| 99 | 93 | 
| 100   Isolate* isolate_; | 94   Isolate* isolate_; | 
| 101   Semaphore* stop_semaphore_; | 95   Semaphore* stop_semaphore_; | 
| 102   Semaphore* input_queue_semaphore_; | 96   Semaphore* input_queue_semaphore_; | 
| 103   UnboundQueue<OptimizingCompiler*> input_queue_; | 97   UnboundQueue<OptimizingCompiler*> input_queue_; | 
| 104   UnboundQueue<OptimizingCompiler*> output_queue_; | 98   UnboundQueue<OptimizingCompiler*> output_queue_; | 
| 105   Mutex* install_mutex_; | 99   Mutex install_mutex_; | 
| 106   volatile AtomicWord stop_thread_; | 100   volatile AtomicWord stop_thread_; | 
| 107   volatile Atomic32 queue_length_; | 101   volatile Atomic32 queue_length_; | 
| 108   int64_t time_spent_compiling_; | 102   int64_t time_spent_compiling_; | 
| 109   int64_t time_spent_total_; | 103   int64_t time_spent_total_; | 
| 110 }; | 104 }; | 
| 111 | 105 | 
| 112 } }  // namespace v8::internal | 106 } }  // namespace v8::internal | 
| 113 | 107 | 
| 114 #endif  // V8_OPTIMIZING_COMPILER_THREAD_H_ | 108 #endif  // V8_OPTIMIZING_COMPILER_THREAD_H_ | 
| OLD | NEW | 
|---|