diff options
author | yangguo@chromium.org <yangguo@chromium.org> | 2014-10-17 15:50:51 +0000 |
---|---|---|
committer | yangguo@chromium.org <yangguo@chromium.org> | 2014-10-17 15:50:51 +0000 |
commit | d3524f33e43612426645e5cf0c04c491d34afa71 (patch) | |
tree | 7b353b718b09901715d24ae73827a1896039902b | |
parent | b4375c198aa4a3f0c4b35a66010546320b0f568e (diff) | |
download | v8-d3524f33e43612426645e5cf0c04c491d34afa71.tar.gz |
Version 3.29.88.9 (merged r24361)
Fix data race when concurrent compilation is aborted due to dependency change.
BUG=chromium:419189
LOG=N
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/639693006
git-svn-id: https://v8.googlecode.com/svn/branches/3.29@24702 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
-rw-r--r-- | src/compiler.cc | 18 | ||||
-rw-r--r-- | src/compiler.h | 11 | ||||
-rw-r--r-- | src/version.cc | 2 |
3 files changed, 20 insertions, 11 deletions
diff --git a/src/compiler.cc b/src/compiler.cc index 433177064..7cd76ff2f 100644 --- a/src/compiler.cc +++ b/src/compiler.cc @@ -52,7 +52,8 @@ CompilationInfo::CompilationInfo(Handle<Script> script, Zone* zone) parameter_count_(0), optimization_id_(-1), ast_value_factory_(NULL), - ast_value_factory_owned_(false) { + ast_value_factory_owned_(false), + aborted_due_to_dependency_change_(false) { Initialize(script->GetIsolate(), BASE, zone); } @@ -65,7 +66,8 @@ CompilationInfo::CompilationInfo(Isolate* isolate, Zone* zone) parameter_count_(0), optimization_id_(-1), ast_value_factory_(NULL), - ast_value_factory_owned_(false) { + ast_value_factory_owned_(false), + aborted_due_to_dependency_change_(false) { Initialize(isolate, STUB, zone); } @@ -80,7 +82,8 @@ CompilationInfo::CompilationInfo(Handle<SharedFunctionInfo> shared_info, parameter_count_(0), optimization_id_(-1), ast_value_factory_(NULL), - ast_value_factory_owned_(false) { + ast_value_factory_owned_(false), + aborted_due_to_dependency_change_(false) { Initialize(script_->GetIsolate(), BASE, zone); } @@ -96,7 +99,8 @@ CompilationInfo::CompilationInfo(Handle<JSFunction> closure, Zone* zone) parameter_count_(0), optimization_id_(-1), ast_value_factory_(NULL), - ast_value_factory_owned_(false) { + ast_value_factory_owned_(false), + aborted_due_to_dependency_change_(false) { Initialize(script_->GetIsolate(), BASE, zone); } @@ -109,7 +113,8 @@ CompilationInfo::CompilationInfo(HydrogenCodeStub* stub, Isolate* isolate, parameter_count_(0), optimization_id_(-1), ast_value_factory_(NULL), - ast_value_factory_owned_(false) { + ast_value_factory_owned_(false), + aborted_due_to_dependency_change_(false) { Initialize(isolate, STUB, zone); code_stub_ = stub; } @@ -126,7 +131,8 @@ CompilationInfo::CompilationInfo( parameter_count_(0), optimization_id_(-1), ast_value_factory_(NULL), - ast_value_factory_owned_(false) { + ast_value_factory_owned_(false), + aborted_due_to_dependency_change_(false) { Initialize(isolate, BASE, zone); } diff --git a/src/compiler.h b/src/compiler.h index 9617afc9f..8c4177197 100644 --- a/src/compiler.h +++ b/src/compiler.h @@ -84,8 +84,7 @@ class CompilationInfo { kContextSpecializing = 1 << 16, kInliningEnabled = 1 << 17, kTypingEnabled = 1 << 18, - kDisableFutureOptimization = 1 << 19, - kAbortedDueToDependency = 1 << 20 + kDisableFutureOptimization = 1 << 19 }; CompilationInfo(Handle<JSFunction> closure, Zone* zone); @@ -366,12 +365,12 @@ class CompilationInfo { void AbortDueToDependencyChange() { DCHECK(!OptimizingCompilerThread::IsOptimizerThread(isolate())); - SetFlag(kAbortedDueToDependency); + aborted_due_to_dependency_change_ = true; } bool HasAbortedDueToDependencyChange() const { DCHECK(!OptimizingCompilerThread::IsOptimizerThread(isolate())); - return GetFlag(kAbortedDueToDependency); + return aborted_due_to_dependency_change_; } bool HasSameOsrEntry(Handle<JSFunction> function, BailoutId osr_ast_id) { @@ -510,6 +509,10 @@ class CompilationInfo { bool ast_value_factory_owned_; AstNode::IdGen ast_node_id_gen_; + // This flag is used by the main thread to track whether this compilation + // should be abandoned due to dependency change. + bool aborted_due_to_dependency_change_; + DISALLOW_COPY_AND_ASSIGN(CompilationInfo); }; diff --git a/src/version.cc b/src/version.cc index 18f3345bd..376a08bd1 100644 --- a/src/version.cc +++ b/src/version.cc @@ -35,7 +35,7 @@ #define MAJOR_VERSION 3 #define MINOR_VERSION 29 #define BUILD_NUMBER 88 -#define PATCH_LEVEL 8 +#define PATCH_LEVEL 9 // Use 1 for candidates and 0 otherwise. // (Boolean macro values are not supported by all preprocessors.) #define IS_CANDIDATE_VERSION 0 |