]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-40280: Optimize ints and and startup on wasm (GH-29887)
authorChristian Heimes <christian@python.org>
Thu, 2 Dec 2021 11:19:30 +0000 (13:19 +0200)
committerGitHub <noreply@github.com>
Thu, 2 Dec 2021 11:19:30 +0000 (12:19 +0100)
Include/pyport.h
Python/pylifecycle.c

index 953f75c970d834172588085997c8b6ededc3a20a..81b1bde841e08308cb4f780e52bf28b0144691be 100644 (file)
@@ -87,13 +87,17 @@ Used in:  Py_SAFE_DOWNCAST
 
 /* If PYLONG_BITS_IN_DIGIT is not defined then we'll use 30-bit digits if all
    the necessary integer types are available, and we're on a 64-bit platform
-   (as determined by SIZEOF_VOID_P); otherwise we use 15-bit digits. */
+   (as determined by SIZEOF_VOID_P); otherwise we use 15-bit digits.
+
+   From pyodide: WASM has 32 bit pointers but has native 64 bit arithmetic
+   so it is more efficient to use 30 bit digits.
+ */
 
 #ifndef PYLONG_BITS_IN_DIGIT
-#if SIZEOF_VOID_P >= 8
-#define PYLONG_BITS_IN_DIGIT 30
+#if SIZEOF_VOID_P >= 8 || defined(__wasm__)
+#  define PYLONG_BITS_IN_DIGIT 30
 #else
-#define PYLONG_BITS_IN_DIGIT 15
+#  define PYLONG_BITS_IN_DIGIT 15
 #endif
 #endif
 
index 74d269b7a5646f7b4ea9f50567c3b9b796aba24b..c6b2a1eb961481c2ad2dec627e5cb5ca33879c70 100644 (file)
@@ -2145,7 +2145,11 @@ is_valid_fd(int fd)
     if (fd < 0) {
         return 0;
     }
-#if defined(F_GETFD) && (defined(__linux__) || defined(__APPLE__) || defined(MS_WINDOWS))
+#if defined(F_GETFD) && ( \
+        defined(__linux__) || \
+        defined(__APPLE__) || \
+        defined(MS_WINDOWS) || \
+        defined(__wasm__))
     int res;
     _Py_BEGIN_SUPPRESS_IPH
     res = fcntl(fd, F_GETFD);