Revision: 21536
Author:   [email protected]
Date:     Tue May 27 15:16:42 2014 UTC
Log:      Reland 21529 - "Add a flag to d8 to invoke weak callbacks"

This will send an idle notification and a low memory notification after
each test.

For some reason it's not enough to send a low memory notification alone.

BUG=none
[email protected]
LOG=n

BUG=none
[email protected]
LOG=n

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

Modified:
 /branches/bleeding_edge/src/d8.cc
 /branches/bleeding_edge/src/d8.h
 /branches/bleeding_edge/tools/run-tests.py

=======================================
--- /branches/bleeding_edge/src/d8.cc   Tue May 27 14:21:46 2014 UTC
+++ /branches/bleeding_edge/src/d8.cc   Tue May 27 15:16:42 2014 UTC
@@ -1211,9 +1211,16 @@
         V8::ContextDisposedNotification();
         V8::IdleNotification(kLongIdlePauseInMs);
       }
+      if (Shell::options.invoke_weak_callbacks) {
+ // By sending a low memory notifications, we will try hard to collect
+        // all garbage and will therefore also invoke all weak callbacks of
+        // actually unreachable persistent handles.
+        V8::LowMemoryNotification();
+      }
     }
     done_semaphore_.Signal();
   } while (!Shell::options.last_run);
+
   isolate->Dispose();
 }

@@ -1274,6 +1281,11 @@
     } else if (strcmp(argv[i], "--send-idle-notification") == 0) {
       options.send_idle_notification = true;
       argv[i] = NULL;
+    } else if (strcmp(argv[i], "--invoke-weak-callbacks") == 0) {
+      options.invoke_weak_callbacks = true;
+      // TODO(jochen) See issue 3351
+      options.send_idle_notification = true;
+      argv[i] = NULL;
     } else if (strcmp(argv[i], "-f") == 0) {
       // Ignore any -f flags for compatibility with other stand-alone
       // JavaScript engines.
@@ -1367,6 +1379,12 @@
     V8::ContextDisposedNotification();
     V8::IdleNotification(kLongIdlePauseInMs);
   }
+  if (options.invoke_weak_callbacks) {
+ // By sending a low memory notifications, we will try hard to collect all + // garbage and will therefore also invoke all weak callbacks of actually
+    // unreachable persistent handles.
+    V8::LowMemoryNotification();
+  }

 #ifndef V8_SHARED
   for (int i = 1; i < options.num_isolates; ++i) {
=======================================
--- /branches/bleeding_edge/src/d8.h    Tue May 27 14:21:46 2014 UTC
+++ /branches/bleeding_edge/src/d8.h    Tue May 27 15:16:42 2014 UTC
@@ -198,6 +198,7 @@
      script_executed(false),
      last_run(true),
      send_idle_notification(false),
+     invoke_weak_callbacks(false),
      stress_opt(false),
      stress_deopt(false),
      interactive_shell(false),
@@ -220,6 +221,7 @@
   bool script_executed;
   bool last_run;
   bool send_idle_notification;
+  bool invoke_weak_callbacks;
   bool stress_opt;
   bool stress_deopt;
   bool interactive_shell;
=======================================
--- /branches/bleeding_edge/tools/run-tests.py  Tue May 27 14:21:46 2014 UTC
+++ /branches/bleeding_edge/tools/run-tests.py  Tue May 27 15:16:42 2014 UTC
@@ -257,7 +257,7 @@
     options.extra_flags += GC_STRESS_FLAGS

   if options.asan:
-    options.extra_flags.append("--send-idle-notification")
+    options.extra_flags.append("--invoke-weak-callbacks")

   if options.j == 0:
     options.j = multiprocessing.cpu_count()

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