From 03375a68d7f6bafb10e29d06c8758c895ed2a2bd Mon Sep 17 00:00:00 2001 From: "yangguo@chromium.org" Date: Tue, 5 Mar 2013 16:22:08 +0000 Subject: [PATCH] Details wrt parallel recompilation. This includes: - actually release handles kept by compilation info when compilation completes. - do not use parallel recompilation on single core CPUs. - artificially delay parallel recompilation for debugging. - fix outdated assertions wrt optimization status. - add "parallel" option to %OptimizeFunctionOnNextCall. R=jkummerow@chromium.org BUG= Review URL: https://chromiumcodereview.appspot.com/12442002 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13827 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- src/compiler.cc | 11 ++++++ src/compiler.h | 4 +- src/flag-definitions.h | 2 + src/isolate.cc | 9 ++++- src/isolate.h | 3 +- src/optimizing-compiler-thread.cc | 59 +++++++++++++++++++++++------- src/optimizing-compiler-thread.h | 1 + src/runtime.cc | 46 +++++++++++++++-------- src/smart-pointers.h | 5 ++- test/mjsunit/parallel-optimize-disabled.js | 46 +++++++++++++++++++++++ 10 files changed, 148 insertions(+), 38 deletions(-) create mode 100644 test/mjsunit/parallel-optimize-disabled.js diff --git a/src/compiler.cc b/src/compiler.cc index a381c3a..7a94b54 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -963,6 +963,17 @@ void Compiler::RecompileParallel(Handle closure) { void Compiler::InstallOptimizedCode(OptimizingCompiler* optimizing_compiler) { SmartPointer info(optimizing_compiler->info()); + // Function may have been optimized meanwhile by OSR. + if (FLAG_use_osr) { + // Function may have already been optimized meanwhile by OSR. + if (!info->code().is_null() && + info->code()->kind() == Code::OPTIMIZED_FUNCTION) { + return; + } + // OSR may also have caused optimization to be disabled. + if (info->shared_info()->optimization_disabled()) return; + } + Isolate* isolate = info->isolate(); VMState state(isolate, PARALLEL_COMPILER); Logger::TimerEventScope timer( diff --git a/src/compiler.h b/src/compiler.h index 4d7644c..0191bb2 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -49,7 +49,7 @@ class CompilationInfo { CompilationInfo(Handle closure, Zone* zone); CompilationInfo(HydrogenCodeStub* stub, Isolate* isolate, Zone* zone); - virtual ~CompilationInfo(); + ~CompilationInfo(); Isolate* isolate() { ASSERT(Isolate::Current() == isolate_); @@ -349,8 +349,6 @@ class CompilationInfo { // Zone on construction and deallocates it on exit. class CompilationInfoWithZone: public CompilationInfo { public: - INLINE(void* operator new(size_t size)) { return Malloced::New(size); } - explicit CompilationInfoWithZone(Handle