Index: src/bootstrapper.cc |
diff --git a/src/bootstrapper.cc b/src/bootstrapper.cc |
index 083d58898d558c0c3332ad4e03ff7a4851821f87..dde480094920e8d7725c0e762329a9db9abe2d8d 100644 |
--- a/src/bootstrapper.cc |
+++ b/src/bootstrapper.cc |
@@ -2556,12 +2556,31 @@ void Genesis::MakeFunctionInstancePrototypeWritable() { |
} |
+class NoTrackDoubleFieldsForSerializerScope { |
+ public: |
+ NoTrackDoubleFieldsForSerializerScope() : flag_(FLAG_track_double_fields) { |
+ if (Serializer::enabled()) { |
+ // Disable tracking double fields because heap numbers treated as |
+ // immutable by the serializer. |
+ FLAG_track_double_fields = false; |
+ } |
+ } |
+ ~NoTrackDoubleFieldsForSerializerScope() { |
+ FLAG_track_double_fields = flag_; |
+ } |
+ |
+ private: |
+ bool flag_; |
+}; |
+ |
+ |
Genesis::Genesis(Isolate* isolate, |
Handle<Object> global_object, |
v8::Handle<v8::ObjectTemplate> global_template, |
v8::ExtensionConfiguration* extensions) |
: isolate_(isolate), |
active_(isolate->bootstrapper()) { |
+ NoTrackDoubleFieldsForSerializerScope disable_double_tracking_for_serializer; |
result_ = Handle<Context>::null(); |
// If V8 cannot be initialized, just return. |
if (!V8::Initialize(NULL)) return; |