Revision: 18909
Author: [email protected]
Date: Wed Jan 29 14:18:55 2014 UTC
Log: Disable tracking of double fields during snapshot creation.
Follow-up to r18298.
[email protected]
Review URL: https://codereview.chromium.org/101123004
http://code.google.com/p/v8/source/detail?r=18909
Modified:
/branches/bleeding_edge/src/arm/lithium-codegen-arm.cc
/branches/bleeding_edge/src/bootstrapper.cc
/branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc
/branches/bleeding_edge/src/mips/lithium-codegen-mips.cc
/branches/bleeding_edge/src/x64/lithium-codegen-x64.cc
=======================================
--- /branches/bleeding_edge/src/arm/lithium-codegen-arm.cc Wed Jan 29
14:03:32 2014 UTC
+++ /branches/bleeding_edge/src/arm/lithium-codegen-arm.cc Wed Jan 29
14:18:55 2014 UTC
@@ -4061,7 +4061,7 @@
__ SmiTst(value);
DeoptimizeIf(eq, instr->environment());
}
- } else if (FLAG_track_double_fields && representation.IsDouble()) {
+ } else if (representation.IsDouble()) {
ASSERT(transition.is_null());
ASSERT(access.IsInobject());
ASSERT(!instr->hydrogen()->NeedsWriteBarrier());
=======================================
--- /branches/bleeding_edge/src/bootstrapper.cc Fri Jan 24 16:01:15 2014 UTC
+++ /branches/bleeding_edge/src/bootstrapper.cc Wed Jan 29 14:18:55 2014 UTC
@@ -2556,12 +2556,31 @@
}
+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;
=======================================
--- /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Wed Jan 29
14:03:32 2014 UTC
+++ /branches/bleeding_edge/src/ia32/lithium-codegen-ia32.cc Wed Jan 29
14:18:55 2014 UTC
@@ -3213,8 +3213,7 @@
}
Register object = ToRegister(instr->object());
- if (FLAG_track_double_fields &&
- instr->hydrogen()->representation().IsDouble()) {
+ if (instr->hydrogen()->representation().IsDouble()) {
if (CpuFeatures::IsSupported(SSE2)) {
CpuFeatureScope scope(masm(), SSE2);
XMMRegister result = ToDoubleRegister(instr->result());
@@ -4314,7 +4313,7 @@
DeoptimizeIf(zero, instr->environment());
}
}
- } else if (FLAG_track_double_fields && representation.IsDouble()) {
+ } else if (representation.IsDouble()) {
ASSERT(transition.is_null());
ASSERT(access.IsInobject());
ASSERT(!instr->hydrogen()->NeedsWriteBarrier());
=======================================
--- /branches/bleeding_edge/src/mips/lithium-codegen-mips.cc Wed Jan 29
14:03:32 2014 UTC
+++ /branches/bleeding_edge/src/mips/lithium-codegen-mips.cc Wed Jan 29
14:18:55 2014 UTC
@@ -3999,7 +3999,7 @@
__ SmiTst(value, scratch);
DeoptimizeIf(eq, instr->environment(), scratch, Operand(zero_reg));
}
- } else if (FLAG_track_double_fields && representation.IsDouble()) {
+ } else if (representation.IsDouble()) {
ASSERT(transition.is_null());
ASSERT(access.IsInobject());
ASSERT(!instr->hydrogen()->NeedsWriteBarrier());
=======================================
--- /branches/bleeding_edge/src/x64/lithium-codegen-x64.cc Wed Jan 29
14:03:32 2014 UTC
+++ /branches/bleeding_edge/src/x64/lithium-codegen-x64.cc Wed Jan 29
14:18:55 2014 UTC
@@ -2764,8 +2764,7 @@
}
Register object = ToRegister(instr->object());
- if (FLAG_track_double_fields &&
- instr->hydrogen()->representation().IsDouble()) {
+ if (instr->hydrogen()->representation().IsDouble()) {
XMMRegister result = ToDoubleRegister(instr->result());
__ movsd(result, FieldOperand(object, offset));
return;
@@ -3891,7 +3890,7 @@
DeoptimizeIf(cc, instr->environment());
}
}
- } else if (FLAG_track_double_fields && representation.IsDouble()) {
+ } else if (representation.IsDouble()) {
ASSERT(transition.is_null());
ASSERT(access.IsInobject());
ASSERT(!hinstr->NeedsWriteBarrier());
--
--
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/groups/opt_out.