mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-01-31 19:43:32 +00:00
d26d7ae0e4
Building o//third_party/python now takes 5 seconds on my PC This change works towards modifying Python to use runtime dispatching when appropriate. For example, when loading the magnums in the socket module, it's a good idea to check if the magnum is zero, because that means the local system platform doesn't support it.
31 lines
912 B
C
31 lines
912 B
C
/* clang-format off */
|
|
#include "third_party/python/Include/Python.h"
|
|
|
|
#ifdef X87_DOUBLE_ROUNDING
|
|
/* On x86 platforms using an x87 FPU, this function is called from the
|
|
Py_FORCE_DOUBLE macro (defined in pymath.h) to force a floating-point
|
|
number out of an 80-bit x87 FPU register and into a 64-bit memory location,
|
|
thus rounding from extended precision to double precision. */
|
|
double _Py_force_double(double x)
|
|
{
|
|
volatile double y;
|
|
y = x;
|
|
return y;
|
|
}
|
|
#endif
|
|
|
|
#ifdef HAVE_GCC_ASM_FOR_X87
|
|
/* inline assembly for getting and setting the 387 FPU control word on
|
|
gcc/x86 */
|
|
#ifdef _Py_MEMORY_SANITIZER
|
|
__attribute__((no_sanitize_memory))
|
|
#endif
|
|
unsigned short _Py_get_387controlword(void) {
|
|
unsigned short cw;
|
|
__asm__ __volatile__ ("fnstcw %0" : "=m" (cw));
|
|
return cw;
|
|
}
|
|
void _Py_set_387controlword(unsigned short cw) {
|
|
__asm__ __volatile__ ("fldcw %0" : : "m" (cw));
|
|
}
|
|
#endif
|