Commit 64bcae30 authored by yangguo@chromium.org's avatar yangguo@chromium.org

Allocate optimizing compiler thread only when necessary.

R=ulan@chromium.org
BUG=

Review URL: https://codereview.chromium.org/24568003

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16946 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 612dedc7
...@@ -1803,7 +1803,7 @@ Isolate::Isolate() ...@@ -1803,7 +1803,7 @@ Isolate::Isolate()
heap_profiler_(NULL), heap_profiler_(NULL),
function_entry_hook_(NULL), function_entry_hook_(NULL),
deferred_handles_head_(NULL), deferred_handles_head_(NULL),
optimizing_compiler_thread_(this), optimizing_compiler_thread_(NULL),
marking_thread_(NULL), marking_thread_(NULL),
sweeper_thread_(NULL), sweeper_thread_(NULL),
stress_deopt_count_(0) { stress_deopt_count_(0) {
...@@ -1898,7 +1898,10 @@ void Isolate::Deinit() { ...@@ -1898,7 +1898,10 @@ void Isolate::Deinit() {
debugger()->UnloadDebugger(); debugger()->UnloadDebugger();
#endif #endif
if (FLAG_concurrent_recompilation) optimizing_compiler_thread_.Stop(); if (FLAG_concurrent_recompilation) {
optimizing_compiler_thread_->Stop();
delete optimizing_compiler_thread_;
}
if (FLAG_sweeper_threads > 0) { if (FLAG_sweeper_threads > 0) {
for (int i = 0; i < FLAG_sweeper_threads; i++) { for (int i = 0; i < FLAG_sweeper_threads; i++) {
...@@ -2240,6 +2243,11 @@ bool Isolate::Init(Deserializer* des) { ...@@ -2240,6 +2243,11 @@ bool Isolate::Init(Deserializer* des) {
deoptimizer_data_ = new DeoptimizerData(memory_allocator_); deoptimizer_data_ = new DeoptimizerData(memory_allocator_);
if (FLAG_concurrent_recompilation) {
optimizing_compiler_thread_ = new OptimizingCompilerThread(this);
optimizing_compiler_thread_->Start();
}
const bool create_heap_objects = (des == NULL); const bool create_heap_objects = (des == NULL);
if (create_heap_objects && !heap_.CreateHeapObjects()) { if (create_heap_objects && !heap_.CreateHeapObjects()) {
V8::FatalProcessOutOfMemory("heap object creation"); V8::FatalProcessOutOfMemory("heap object creation");
...@@ -2346,8 +2354,6 @@ bool Isolate::Init(Deserializer* des) { ...@@ -2346,8 +2354,6 @@ bool Isolate::Init(Deserializer* des) {
FastNewClosureStub::InstallDescriptors(this); FastNewClosureStub::InstallDescriptors(this);
} }
if (FLAG_concurrent_recompilation) optimizing_compiler_thread_.Start();
if (FLAG_marking_threads > 0) { if (FLAG_marking_threads > 0) {
marking_thread_ = new MarkingThread*[FLAG_marking_threads]; marking_thread_ = new MarkingThread*[FLAG_marking_threads];
for (int i = 0; i < FLAG_marking_threads; i++) { for (int i = 0; i < FLAG_marking_threads; i++) {
......
...@@ -1099,7 +1099,7 @@ class Isolate { ...@@ -1099,7 +1099,7 @@ class Isolate {
#endif // DEBUG #endif // DEBUG
OptimizingCompilerThread* optimizing_compiler_thread() { OptimizingCompilerThread* optimizing_compiler_thread() {
return &optimizing_compiler_thread_; return optimizing_compiler_thread_;
} }
// PreInits and returns a default isolate. Needed when a new thread tries // PreInits and returns a default isolate. Needed when a new thread tries
...@@ -1369,7 +1369,7 @@ class Isolate { ...@@ -1369,7 +1369,7 @@ class Isolate {
#endif #endif
DeferredHandles* deferred_handles_head_; DeferredHandles* deferred_handles_head_;
OptimizingCompilerThread optimizing_compiler_thread_; OptimizingCompilerThread* optimizing_compiler_thread_;
MarkingThread** marking_thread_; MarkingThread** marking_thread_;
SweeperThread** sweeper_thread_; SweeperThread** sweeper_thread_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment