Changeset 280605 in webkit


Ignore:
Timestamp:
Aug 3, 2021 12:15:21 PM (3 years ago)
Author:
fpizlo@apple.com
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:
Location:
trunk/Source/bmalloc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/bmalloc/ChangeLog

    r279922 r280605  
     12021-08-03  Filip Pizlo  <fpizlo@apple.com>
     2
     3        pas_segmented_vector's iterate functions should handle memory ordering correctly
     4        https://bugs.webkit.org/show_bug.cgi?id=228746
     5
     6        Reviewed by Mark Lam.
     7
     8        Also fixed a missing store-store fence in bitfit_directory's use of a segmented vector.
     9
     10        * libpas/src/libpas/pas_bitfit_directory.c:
     11        (pas_bitfit_directory_get_first_free_view):
     12        * libpas/src/libpas/pas_segmented_vector.h:
     13
    1142021-07-14  Michael Saboff  <msaboff@apple.com>
    215
  • trunk/Source/bmalloc/libpas/src/libpas/pas_bitfit_directory.c

    r279867 r280605  
    221221                    view = pas_bitfit_view_create(global_directory,
    222222                                                  (unsigned)found_index.index);
     223                    pas_store_store_fence();
    223224                    pas_compact_atomic_bitfit_view_ptr_store(
    224225                        pas_bitfit_directory_get_view_ptr(directory, found_index.index), view);
  • trunk/Source/bmalloc/libpas/src/libpas/pas_segmented_vector.h

    r279867 r280605  
    164164        \
    165165        size = vector->size; \
    166         spine = name##_spine_ptr_load(&vector->spine); \
     166        spine = name##_spine_ptr_load(&vector[pas_depend(size)].spine); \
    167167        \
    168168        for (; spine_index * segment_size < size; spine_index++) { \
     
    256256        segment_index = start_index % (segment_size); \
    257257        \
    258         spine = name##_spine_ptr_load(&vector->spine); \
     258        spine = name##_spine_ptr_load(&vector[pas_depend(size)].spine); \
    259259        \
    260260        spine_index++; \
Note: See TracChangeset for help on using the changeset viewer.