Revision: 24361
Author: [email protected]
Date: Wed Oct 1 11:41:19 2014 UTC
Log: Fix data race when concurrent compilation is aborted due to
dependency change.
[email protected]
BUG=chromium:419189
LOG=N
Review URL: https://codereview.chromium.org/616263003
https://code.google.com/p/v8/source/detail?r=24361
Modified:
/branches/bleeding_edge/src/compiler.cc
/branches/bleeding_edge/src/compiler.h
=======================================
--- /branches/bleeding_edge/src/compiler.cc Mon Sep 29 07:53:22 2014 UTC
+++ /branches/bleeding_edge/src/compiler.cc Wed Oct 1 11:41:19 2014 UTC
@@ -52,7 +52,8 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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);
}
=======================================
--- /branches/bleeding_edge/src/compiler.h Mon Sep 29 07:53:22 2014 UTC
+++ /branches/bleeding_edge/src/compiler.h Wed Oct 1 11:41:19 2014 UTC
@@ -85,8 +85,7 @@
kInliningEnabled = 1 << 17,
kTypingEnabled = 1 << 18,
kDisableFutureOptimization = 1 << 19,
- kAbortedDueToDependency = 1 << 20,
- kToplevel = 1 << 21
+ kToplevel = 1 << 20
};
CompilationInfo(Handle<JSFunction> closure, Zone* zone);
@@ -371,12 +370,12 @@
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) {
@@ -515,6 +514,10 @@
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);
};
--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
---
You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.