Revision: 22676
Author:   [email protected]
Date:     Tue Jul 29 14:38:39 2014 UTC
Log:      Support for dynamic write-barrier counters everywhere.

[email protected]

Review URL: https://codereview.chromium.org/421923003
http://code.google.com/p/v8/source/detail?r=22676

Modified:
 /branches/bleeding_edge/src/arm/macro-assembler-arm.cc
 /branches/bleeding_edge/src/arm64/macro-assembler-arm64.cc
 /branches/bleeding_edge/src/ia32/macro-assembler-ia32.cc
 /branches/bleeding_edge/src/mips/macro-assembler-mips.cc
 /branches/bleeding_edge/src/mips64/macro-assembler-mips64.cc
 /branches/bleeding_edge/src/x64/macro-assembler-x64.cc
 /branches/bleeding_edge/src/x87/macro-assembler-x87.cc

=======================================
--- /branches/bleeding_edge/src/arm/macro-assembler-arm.cc Wed Jul 23 11:12:11 2014 UTC +++ /branches/bleeding_edge/src/arm/macro-assembler-arm.cc Tue Jul 29 14:38:39 2014 UTC
@@ -520,10 +520,6 @@
   if (!FLAG_incremental_marking) {
     return;
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  // TODO(mstarzinger): Dynamic counter missing.

   if (emit_debug_code()) {
     ldr(ip, FieldMemOperand(object, HeapObject::kMapOffset));
@@ -565,6 +561,10 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+ IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1, ip, dst);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
@@ -597,10 +597,6 @@
       !FLAG_incremental_marking) {
     return;
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  // TODO(mstarzinger): Dynamic counter missing.

   // First, check if a write barrier is even needed. The tests below
   // catch stores of smis and stores into the young generation.
@@ -636,6 +632,11 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1, ip,
+                   value);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
=======================================
--- /branches/bleeding_edge/src/arm64/macro-assembler-arm64.cc Wed Jul 23 11:12:11 2014 UTC +++ /branches/bleeding_edge/src/arm64/macro-assembler-arm64.cc Tue Jul 29 14:38:39 2014 UTC
@@ -4427,10 +4427,6 @@
     Cmp(temp, map);
     Check(eq, kWrongAddressOrValuePassedToRecordWrite);
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  // TODO(mstarzinger): Dynamic counter missing.

   // First, check if a write barrier is even needed. The tests below
   // catch stores of smis and stores into the young generation.
@@ -4459,6 +4455,11 @@

   Bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1, map,
+                   dst);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
@@ -4493,10 +4494,6 @@
     Cmp(temp, value);
     Check(eq, kWrongAddressOrValuePassedToRecordWrite);
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  // TODO(mstarzinger): Dynamic counter missing.

   // First, check if a write barrier is even needed. The tests below
   // catch stores of smis and stores into the young generation.
@@ -4531,6 +4528,11 @@

   Bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+ IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1, address,
+                   value);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
=======================================
--- /branches/bleeding_edge/src/ia32/macro-assembler-ia32.cc Wed Jul 23 11:12:11 2014 UTC +++ /branches/bleeding_edge/src/ia32/macro-assembler-ia32.cc Tue Jul 29 14:38:39 2014 UTC
@@ -508,10 +508,6 @@
   // Compute the address.
   lea(address, FieldOperand(object, HeapObject::kMapOffset));

-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
-
// A single check of the map's pages interesting flag suffices, since it is // only set during incremental collection, and then it's also guaranteed that // the from object's page's interesting flag is also set. This optimization
@@ -529,6 +525,10 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
+
// Clobber clobbered input registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
@@ -564,10 +564,6 @@
     int3();
     bind(&ok);
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);

   // First, check if a write barrier is even needed. The tests below
   // catch stores of Smis and stores into young gen.
@@ -599,6 +595,10 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
=======================================
--- /branches/bleeding_edge/src/mips/macro-assembler-mips.cc Wed Jul 23 15:12:40 2014 UTC +++ /branches/bleeding_edge/src/mips/macro-assembler-mips.cc Tue Jul 29 14:38:39 2014 UTC
@@ -232,10 +232,6 @@
   if (!FLAG_incremental_marking) {
     return;
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  // TODO(mstarzinger): Dynamic counter missing.

   if (emit_debug_code()) {
     lw(at, FieldMemOperand(object, HeapObject::kMapOffset));
@@ -279,6 +275,10 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+ IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1, at, dst);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
@@ -313,10 +313,6 @@
       !FLAG_incremental_marking) {
     return;
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  // TODO(mstarzinger): Dynamic counter missing.

   // First, check if a write barrier is even needed. The tests below
   // catch stores of smis and stores into the young generation.
@@ -353,6 +349,11 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1, at,
+                   value);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
=======================================
--- /branches/bleeding_edge/src/mips64/macro-assembler-mips64.cc Wed Jul 23 15:12:40 2014 UTC +++ /branches/bleeding_edge/src/mips64/macro-assembler-mips64.cc Tue Jul 29 14:38:39 2014 UTC
@@ -236,10 +236,6 @@
   if (!FLAG_incremental_marking) {
     return;
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  // TODO(mstarzinger): Dynamic counter missing.

   if (emit_debug_code()) {
     ld(at, FieldMemOperand(object, HeapObject::kMapOffset));
@@ -283,6 +279,10 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+ IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1, at, dst);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
@@ -317,10 +317,6 @@
       !FLAG_incremental_marking) {
     return;
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  // TODO(mstarzinger): Dynamic counter missing.

   // First, check if a write barrier is even needed. The tests below
   // catch stores of smis and stores into the young generation.
@@ -357,6 +353,11 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1, at,
+                   value);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
=======================================
--- /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Wed Jul 23 11:12:11 2014 UTC +++ /branches/bleeding_edge/src/x64/macro-assembler-x64.cc Tue Jul 29 14:38:39 2014 UTC
@@ -405,10 +405,6 @@
   // Compute the address.
   leap(dst, FieldOperand(object, HeapObject::kMapOffset));

-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
-
   // First, check if a write barrier is even needed. The tests below
   // catch stores of smis and stores into the young generation.
   Label done;
@@ -430,6 +426,10 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
@@ -464,10 +464,6 @@
     int3();
     bind(&ok);
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);

   // First, check if a write barrier is even needed. The tests below
   // catch stores of smis and stores into the young generation.
@@ -500,6 +496,10 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
=======================================
--- /branches/bleeding_edge/src/x87/macro-assembler-x87.cc Thu Jul 24 09:12:34 2014 UTC +++ /branches/bleeding_edge/src/x87/macro-assembler-x87.cc Tue Jul 29 14:38:39 2014 UTC
@@ -428,10 +428,6 @@
   // Compute the address.
   lea(address, FieldOperand(object, HeapObject::kMapOffset));

-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
-
// A single check of the map's pages interesting flag suffices, since it is // only set during incremental collection, and then it's also guaranteed that // the from object's page's interesting flag is also set. This optimization
@@ -448,6 +444,10 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
+
// Clobber clobbered input registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {
@@ -482,10 +482,6 @@
     int3();
     bind(&ok);
   }
-
-  // Count number of write barriers in generated code.
-  isolate()->counters()->write_barriers_static()->Increment();
-  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);

   // First, check if a write barrier is even needed. The tests below
   // catch stores of Smis and stores into young gen.
@@ -517,6 +513,10 @@

   bind(&done);

+  // Count number of write barriers in generated code.
+  isolate()->counters()->write_barriers_static()->Increment();
+  IncrementCounter(isolate()->counters()->write_barriers_dynamic(), 1);
+
   // Clobber clobbered registers when running with the debug-code flag
   // turned on to provoke errors.
   if (emit_debug_code()) {

--
--
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.

Reply via email to