Avoid unnecessary data race on FLAG_track_double_fields
authorjochen@chromium.org <jochen@chromium.org>
Wed, 8 Oct 2014 09:01:43 +0000 (09:01 +0000)
committerjochen@chromium.org <jochen@chromium.org>
Wed, 8 Oct 2014 09:01:43 +0000 (09:01 +0000)
BUG=none
R=svenpanne@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24456 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/bootstrapper.cc

index 405f665..795cd52 100644 (file)
@@ -2590,20 +2590,24 @@ void Genesis::MakeFunctionInstancePrototypeWritable() {
 class NoTrackDoubleFieldsForSerializerScope {
  public:
   explicit NoTrackDoubleFieldsForSerializerScope(Isolate* isolate)
-      : flag_(FLAG_track_double_fields) {
+      : flag_(FLAG_track_double_fields), enabled_(false) {
     if (isolate->serializer_enabled()) {
       // Disable tracking double fields because heap numbers treated as
       // immutable by the serializer.
       FLAG_track_double_fields = false;
+      enabled_ = true;
     }
   }
 
   ~NoTrackDoubleFieldsForSerializerScope() {
-    FLAG_track_double_fields = flag_;
+    if (enabled_) {
+      FLAG_track_double_fields = flag_;
+    }
   }
 
  private:
   bool flag_;
+  bool enabled_;
 };