Browse Source

dtoolbase: Hardcode page size for emscripten, don't define malloc lock

rdb 2 years ago
parent
commit
e77571d6f2

+ 5 - 1
dtool/src/dtoolbase/memoryHook.I

@@ -40,9 +40,11 @@ dec_heap(size_t size) {
  */
 INLINE size_t MemoryHook::
 get_page_size() const {
+#ifndef __EMSCRIPTEN__
   if (_page_size == 0) {
     determine_page_size();
   }
+#endif
   return _page_size;
 }
 
@@ -52,10 +54,12 @@ get_page_size() const {
  */
 INLINE size_t MemoryHook::
 round_up_to_page_size(size_t size) const {
+#ifndef __EMSCRIPTEN__
   if (_page_size == 0) {
     determine_page_size();
   }
-  return  ((size + _page_size - 1) / _page_size) * _page_size;
+#endif
+  return ((size + _page_size - 1) / _page_size) * _page_size;
 }
 
 /**

+ 10 - 2
dtool/src/dtoolbase/memoryHook.cxx

@@ -207,8 +207,12 @@ MemoryHook(const MemoryHook &copy) :
   _total_heap_array_size(copy._total_heap_array_size.load(std::memory_order_relaxed)),
   _requested_heap_size(copy._requested_heap_size.load(std::memory_order_relaxed)),
   _total_mmap_size(copy._total_mmap_size.load(std::memory_order_relaxed)),
-  _max_heap_size(copy._max_heap_size),
-  _page_size(copy._page_size) {
+  _max_heap_size(copy._max_heap_size)
+#ifndef __EMSCRIPTEN__
+  ,
+  _page_size(copy._page_size)
+#endif
+{
 }
 
 
@@ -483,9 +487,11 @@ heap_trim(size_t pad) {
  */
 void *MemoryHook::
 mmap_alloc(size_t size, bool allow_exec) {
+#ifndef __EMSCRIPTEN__
   if (_page_size == 0) {
     determine_page_size();
   }
+#endif
   assert((size % _page_size) == 0);
 
 #ifdef DO_MEMORY_USAGE
@@ -602,6 +608,7 @@ overflow_heap_size() {
 /**
  * Asks the operating system for the page size.
  */
+#ifndef __EMSCRIPTEN__
 void MemoryHook::
 determine_page_size() const {
 #ifdef _WIN32
@@ -619,3 +626,4 @@ determine_page_size() const {
 
   assert(_page_size != 0);
 }
+#endif  // !__EMSCRIPTEN__

+ 10 - 1
dtool/src/dtoolbase/memoryHook.h

@@ -20,6 +20,10 @@
 #include "mutexImpl.h"
 #include <map>
 
+#ifdef __EMSCRIPTEN__
+#include <emscripten/heap.h>
+#endif
+
 /**
  * This class provides a wrapper around the various possible malloc schemes
  * Panda might employ.  It also exists to allow the MemoryUsage class in Panda
@@ -77,12 +81,17 @@ protected:
 
   virtual void overflow_heap_size();
 
+#ifndef __EMSCRIPTEN__
   void determine_page_size() const;
+#endif
 
 private:
+#ifdef __EMSCRIPTEN__
+  static const size_t _page_size = EMSCRIPTEN_PAGE_SIZE;
+#else
   mutable size_t _page_size = 0;
-
   mutable MutexImpl _lock;
+#endif
 };
 
 #include "memoryHook.I"