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