Revision: 18314
Author:   [email protected]
Date:     Mon Dec 16 13:08:24 2013 UTC
Log:      Flush instruction cache for deserialized code objects.

This fixes the flaky crashes on ARM when running preparser test suite in
optdebug mode.

[email protected]

Review URL: https://chromiumcodereview.appspot.com/107543003
http://code.google.com/p/v8/source/detail?r=18314

Modified:
 /branches/bleeding_edge/src/serialize.cc
 /branches/bleeding_edge/src/serialize.h

=======================================
--- /branches/bleeding_edge/src/serialize.cc    Fri Nov 22 11:35:39 2013 UTC
+++ /branches/bleeding_edge/src/serialize.cc    Mon Dec 16 13:08:24 2013 UTC
@@ -792,6 +792,15 @@
     reservations_[i] = kUninitializedReservation;
   }
 }
+
+
+void Deserializer::FlushICacheForNewCodeObjects() {
+  PageIterator it(isolate_->heap()->code_space());
+  while (it.has_next()) {
+    Page* p = it.next();
+    CPU::FlushICache(p->area_start(), p->area_end() - p->area_start());
+  }
+}


 void Deserializer::Deserialize(Isolate* isolate) {
@@ -829,6 +838,8 @@
       ExternalAsciiString::cast(source)->update_data_cache();
     }
   }
+
+  FlushICacheForNewCodeObjects();

   // Issue code events for newly deserialized code objects.
   LOG_CODE_EVENT(isolate_, LogCodeObjects());
=======================================
--- /branches/bleeding_edge/src/serialize.h     Fri Nov 29 09:54:38 2013 UTC
+++ /branches/bleeding_edge/src/serialize.h     Mon Dec 16 13:08:24 2013 UTC
@@ -377,6 +377,7 @@
     return HeapObject::FromAddress(high_water_[space] - offset);
   }

+  void FlushICacheForNewCodeObjects();

   // Cached current isolate.
   Isolate* isolate_;

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

Reply via email to