Title: [292407] trunk/Source/bmalloc
Revision
292407
Author
basuke.suz...@sony.com
Date
2022-04-05 11:45:09 -0700 (Tue, 05 Apr 2022)

Log Message

[PlayStation] Enable libpas.
https://bugs.webkit.org/show_bug.cgi?id=238753

Reviewed by Yusuke Suzuki.

PlayStation platform is ready to enable it finally.

* PlatformPlayStation.cmake:
* bmalloc/BPlatform.h:
* libpas/src/libpas/pas_config.h:
* libpas/src/libpas/pas_page_malloc.c:
(pas_page_malloc_try_allocate_without_deallocating_padding):
(commit_impl):
* libpas/src/libpas/pas_platform.h:
* libpas/src/libpas/pas_thread_local_cache.c:

Modified Paths

Diff

Modified: trunk/Source/bmalloc/ChangeLog (292406 => 292407)


--- trunk/Source/bmalloc/ChangeLog	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/ChangeLog	2022-04-05 18:45:09 UTC (rev 292407)
@@ -1,3 +1,21 @@
+2022-04-05  Basuke Suzuki  <basuke.suz...@sony.com>
+
+        [PlayStation] Enable libpas.
+        https://bugs.webkit.org/show_bug.cgi?id=238753
+
+        Reviewed by Yusuke Suzuki.
+
+        PlayStation platform is ready to enable it finally.
+
+        * PlatformPlayStation.cmake:
+        * bmalloc/BPlatform.h:
+        * libpas/src/libpas/pas_config.h:
+        * libpas/src/libpas/pas_page_malloc.c:
+        (pas_page_malloc_try_allocate_without_deallocating_padding):
+        (commit_impl):
+        * libpas/src/libpas/pas_platform.h:
+        * libpas/src/libpas/pas_thread_local_cache.c:
+
 2022-04-04  Yusuke Suzuki  <ysuz...@apple.com>
 
         [libpas] Do not need to call pthread_set_qos_class_self_np repeatedly

Modified: trunk/Source/bmalloc/PlatformPlayStation.cmake (292406 => 292407)


--- trunk/Source/bmalloc/PlatformPlayStation.cmake	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/PlatformPlayStation.cmake	2022-04-05 18:45:09 UTC (rev 292407)
@@ -1,8 +1,15 @@
+WEBKIT_APPEND_GLOBAL_COMPILER_FLAGS(
+    -Wno-typedef-redefinition)
+
 if (${CMAKE_GENERATOR} MATCHES "Visual Studio")
+    set(bmalloc_C_SOURCES ${bmalloc_SOURCES})
+    list(FILTER bmalloc_C_SOURCES INCLUDE REGEX "\\.c$")
+
     # With the VisualStudio generator, the compiler complains about -std=c++* for C sources.
     set_source_files_properties(
-        ${bmalloc_SOURCES}
-        PROPERTIES LANGUAGE CXX
+        ${bmalloc_C_SOURCES}
+        PROPERTIES LANGUAGE C
+        COMPILE_OPTIONS --std=gnu17
     )
 endif ()
 

Modified: trunk/Source/bmalloc/bmalloc/BPlatform.h (292406 => 292407)


--- trunk/Source/bmalloc/bmalloc/BPlatform.h	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/bmalloc/BPlatform.h	2022-04-05 18:45:09 UTC (rev 292407)
@@ -324,7 +324,7 @@
 
 /* BENABLE(LIBPAS) is enabling libpas build. But this does not mean we use libpas for bmalloc replacement. */
 #if !defined(BENABLE_LIBPAS)
-#if BCPU(ADDRESS64) && (BOS(DARWIN) || (BOS(LINUX) && !BPLATFORM(GTK) && !BPLATFORM(WPE)))
+#if BCPU(ADDRESS64) && (BOS(DARWIN) || (BOS(LINUX) && !BPLATFORM(GTK) && !BPLATFORM(WPE))) || BPLATFORM(PLAYSTATION)
 #define BENABLE_LIBPAS 1
 #ifndef PAS_BMALLOC
 #define PAS_BMALLOC 1

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_config.h (292406 => 292407)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_config.h	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_config.h	2022-04-05 18:45:09 UTC (rev 292407)
@@ -38,7 +38,7 @@
 #endif
 #endif
 
-#if PAS_OS(DARWIN) && __PAS_ARM64 && !__PAS_ARM64E && defined(NDEBUG)
+#if ((PAS_OS(DARWIN) && __PAS_ARM64 && !__PAS_ARM64E) || PAS_PLATFORM(PLAYSTATION)) && defined(NDEBUG)
 #define PAS_ENABLE_ASSERT 0
 #else
 #define PAS_ENABLE_ASSERT 1
@@ -54,7 +54,7 @@
 
 #define PAS_ADDRESS_BITS                 48
 
-#if PAS_ARM
+#if PAS_ARM || PAS_PLATFORM(PLAYSTATION)
 #define PAS_MAX_GRANULES                 256
 #else
 #define PAS_MAX_GRANULES                 1024

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c (292406 => 292407)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_page_malloc.c	2022-04-05 18:45:09 UTC (rev 292407)
@@ -120,8 +120,13 @@
             return result;
     }
     
+#if PAS_PLATFORM(PLAYSTATION)
+    mmap_result = mmap_np(NULL, mapped_size, PROT_READ | PROT_WRITE,
+                          MAP_PRIVATE | MAP_ANON | PAS_NORESERVE, PAS_VM_TAG, 0, "SceNKLibpas");
+#else
     mmap_result = mmap(NULL, mapped_size, PROT_READ | PROT_WRITE,
                        MAP_PRIVATE | MAP_ANON | PAS_NORESERVE, PAS_VM_TAG, 0);
+#endif
     if (mmap_result == MAP_FAILED) {
         errno = 0; /* Clear the error so that we don't leak errno in those
                       cases where we handle the allocation failure
@@ -210,6 +215,10 @@
 
 #if PAS_OS(LINUX)
     PAS_SYSCALL(madvise(ptr, size, MADV_DODUMP));
+#elif PAS_PLATFORM(PLAYSTATION)
+    // We don't need to call madvise to map page.
+#elif PAS_OS(FREEBSD)
+    PAS_SYSCALL(madvise(ptr, size, MADV_NORMAL));
 #endif
 }
 

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segmented_vector.h (292406 => 292407)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_segmented_vector.h	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segmented_vector.h	2022-04-05 18:45:09 UTC (rev 292407)
@@ -107,7 +107,7 @@
             PAS_ASSERT(!segment_index); \
             \
             segment = (type*)pas_immortal_heap_allocate_with_alignment_and_heap_lock_hold_mode( \
-                (segment_size) * sizeof(type), alignof(type), \
+                (segment_size) * sizeof(type), PAS_ALIGNOF(type), \
                 #name "/segment", pas_object_allocation, \
                 heap_lock_hold_mode); \
             pas_zero_memory(segment, (segment_size) * sizeof(type)); \

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_heap.c (292406 => 292407)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_heap.c	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_heap.c	2022-04-05 18:45:09 UTC (rev 292407)
@@ -2093,7 +2093,7 @@
             
                     new_directories = pas_compact_expendable_memory_allocate(
                         sizeof(pas_segregated_heap_medium_directory_tuple) * new_capacity,
-                        alignof(pas_segregated_heap_medium_directory_tuple),
+                        PAS_ALIGNOF(pas_segregated_heap_medium_directory_tuple),
                         "pas_segregated_heap_rare_data/medium_directories");
             
                     memcpy(new_directories, medium_directories,

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_size_directory.c (292406 => 292407)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_size_directory.c	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_size_directory.c	2022-04-05 18:45:09 UTC (rev 292407)
@@ -83,7 +83,7 @@
     } else {
         result = pas_immortal_heap_allocate_with_alignment(
             sizeof(pas_segregated_size_directory) + sizeof(pas_bitfit_size_class),
-            PAS_MAX(alignof(pas_segregated_size_directory), alignof(pas_bitfit_size_class)),
+            PAS_MAX(PAS_ALIGNOF(pas_segregated_size_directory), PAS_ALIGNOF(pas_bitfit_size_class)),
             "pas_segregated_size_directory+pas_bitfit_size_class",
             pas_object_allocation);
     }

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_size_directory.h (292406 => 292407)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_size_directory.h	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_segregated_size_directory.h	2022-04-05 18:45:09 UTC (rev 292407)
@@ -268,7 +268,7 @@
     uintptr_t result;
     PAS_TESTING_ASSERT(pas_segregated_size_directory_is_bitfit(directory));
     result = (uintptr_t)(directory + 1);
-    PAS_TESTING_ASSERT(pas_is_aligned(result, alignof(pas_bitfit_size_class)));
+    PAS_TESTING_ASSERT(pas_is_aligned(result, PAS_ALIGNOF(pas_bitfit_size_class)));
     return (pas_bitfit_size_class*)result;
 }
 

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_thread_local_cache.c (292406 => 292407)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_thread_local_cache.c	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_thread_local_cache.c	2022-04-05 18:45:09 UTC (rev 292407)
@@ -47,6 +47,9 @@
 #if PAS_OS(DARWIN)
 #include <mach/thread_act.h>
 #endif
+#if PAS_PLATFORM(PLAYSTATION)
+#include <pthread_np.h>
+#endif
 
 PAS_BEGIN_EXTERN_C;
 
@@ -194,6 +197,7 @@
 {
     uint64_t thread_id;
     char thread_name[256];
+    int getname_result;
     PAS_UNUSED_PARAM(thread_id);
 #if PAS_OS(DARWIN)
     if (!pthread_threadid_np(thread, &thread_id))
@@ -201,7 +205,12 @@
     else
         pas_log("[%d] thread %p does not have id\n", getpid(), thread);
 #endif
-    if (!pthread_getname_np(thread, thread_name, sizeof(thread_name)))
+#if PAS_PLATFORM(PLAYSTATION)
+    getname_result = pthread_get_name_np(thread, thread_name);
+#else
+    getname_result = pthread_getname_np(thread, thread_name, sizeof(thread_name));
+#endif
+    if (!getname_result)
         pas_log("[%d] thread %p has name %s\n", getpid(), (void*)thread, thread_name);
     else
         pas_log("[%d] thread %p does not have name\n", getpid(), (void*)thread);

Modified: trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h (292406 => 292407)


--- trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h	2022-04-05 18:25:27 UTC (rev 292406)
+++ trunk/Source/bmalloc/libpas/src/libpas/pas_utils.h	2022-04-05 18:45:09 UTC (rev 292407)
@@ -66,6 +66,12 @@
 
 #define PAS_ALIGNED(amount) __attribute__((aligned(amount)))
 
+#if PAS_PLATFORM(PLAYSTATION) && !defined(alignof)
+#define PAS_ALIGNOF(type) _Alignof(type)
+#else
+#define PAS_ALIGNOF(type) alignof(type)
+#endif
+
 #define PAS_FORMAT_PRINTF(fmt, args) __attribute__((format(__printf__, fmt, args)))
 
 #define PAS_UNUSED __attribute__((unused))
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to