Title: [280605] trunk/Source/bmalloc
Revision
280605
Author
fpi...@apple.com
Date
2021-08-03 12:15:21 -0700 (Tue, 03 Aug 2021)

Log Message

pas_segmented_vector's iterate functions should handle memory ordering correctly
https://bugs.webkit.org/show_bug.cgi?id=228746

Reviewed by Mark Lam.

Also fixed a missing store-store fence in bitfit_directory's use of a segmented vector.

* libpas/src/libpas/pas_bitfit_directory.c:
(pas_bitfit_directory_get_first_free_view):
* libpas/src/libpas/pas_segmented_vector.h:

Modified Paths

Diff

Modified: trunk/Source/bmalloc/ChangeLog (280604 => 280605)


--- trunk/Source/bmalloc/ChangeLog	2021-08-03 19:00:33 UTC (rev 280604)
+++ trunk/Source/bmalloc/ChangeLog	2021-08-03 19:15:21 UTC (rev 280605)
@@ -1,3 +1,16 @@
+2021-08-03  Filip Pizlo  <fpi...@apple.com>
+
+        pas_segmented_vector's iterate functions should handle memory ordering correctly
+        https://bugs.webkit.org/show_bug.cgi?id=228746
+
+        Reviewed by Mark Lam.
+
+        Also fixed a missing store-store fence in bitfit_directory's use of a segmented vector.
+
+        * libpas/src/libpas/pas_bitfit_directory.c:
+        (pas_bitfit_directory_get_first_free_view):
+        * libpas/src/libpas/pas_segmented_vector.h:
+
 2021-07-14  Michael Saboff  <msab...@apple.com>
 
         [BMalloc] Lazily allocate physical pages

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_directory.c (280604 => 280605)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_directory.c	2021-08-03 19:00:33 UTC (rev 280604)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_directory.c	2021-08-03 19:15:21 UTC (rev 280605)
@@ -220,6 +220,7 @@
                     PAS_ASSERT((unsigned)found_index.index == found_index.index);
                     view = pas_bitfit_view_create(global_directory,
                                                   (unsigned)found_index.index);
+                    pas_store_store_fence();
                     pas_compact_atomic_bitfit_view_ptr_store(
                         pas_bitfit_directory_get_view_ptr(directory, found_index.index), view);
                 }

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segmented_vector.h (280604 => 280605)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_segmented_vector.h	2021-08-03 19:00:33 UTC (rev 280604)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segmented_vector.h	2021-08-03 19:15:21 UTC (rev 280605)
@@ -163,7 +163,7 @@
         segment_index = start_index % (segment_size); \
         \
         size = vector->size; \
-        spine = name##_spine_ptr_load(&vector->spine); \
+        spine = name##_spine_ptr_load(&vector[pas_depend(size)].spine); \
         \
         for (; spine_index * segment_size < size; spine_index++) { \
             type* segment; \
@@ -255,7 +255,7 @@
         spine_index = start_index / (segment_size); \
         segment_index = start_index % (segment_size); \
         \
-        spine = name##_spine_ptr_load(&vector->spine); \
+        spine = name##_spine_ptr_load(&vector[pas_depend(size)].spine); \
         \
         spine_index++; \
         \
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to