aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryangguo@chromium.org <yangguo@chromium.org>2014-10-17 15:50:51 +0000
committeryangguo@chromium.org <yangguo@chromium.org>2014-10-17 15:50:51 +0000
commitd3524f33e43612426645e5cf0c04c491d34afa71 (patch)
tree7b353b718b09901715d24ae73827a1896039902b
parentb4375c198aa4a3f0c4b35a66010546320b0f568e (diff)
downloadv8-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.cc18
-rw-r--r--src/compiler.h11
-rw-r--r--src/version.cc2
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