Skip to content

Commit 8113260

Browse files
committed
Separate the cpuinfo initialization part and call it at startup
1 parent 560cc32 commit 8113260

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

Zend/zend.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "zend_virtual_cwd.h"
3434
#include "zend_smart_str.h"
3535
#include "zend_smart_string.h"
36+
#include "zend_cpuinfo.h"
3637

3738
#ifdef ZTS
3839
ZEND_API int compiler_globals_id;
@@ -752,6 +753,8 @@ int zend_startup(zend_utility_functions *utility_functions, char **extensions) /
752753
extern zend_php_scanner_globals language_scanner_globals;
753754
#endif
754755

756+
zend_cpu_startup();
757+
755758
#ifdef ZEND_WIN32
756759
php_win32_cp_set_by_id(65001);
757760
#endif

Zend/zend_cpuinfo.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ typedef struct _zend_cpu_info {
2727
uint32_t initialized;
2828
} zend_cpu_info;
2929

30-
static zend_cpu_info cpuinfo;
30+
static zend_cpu_info cpuinfo = {0};
3131

3232
#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
3333
static void __zend_cpuid(uint32_t func, uint32_t subfunc) {
@@ -55,15 +55,19 @@ static void __zend_cpuid(uint32_t func, uint32_t subfunc) {
5555
}
5656
#endif
5757

58-
ZEND_API int zend_cpu_supports(zend_cpu_feature feature) {
58+
void zend_cpu_startup(void)
59+
{
5960
if (!cpuinfo.initialized) {
6061
cpuinfo.initialized = 1;
6162
__zend_cpuid(0, 0);
6263
if (cpuinfo.eax == 0) {
63-
return 0;
64+
return;
6465
}
6566
__zend_cpuid(1, 0);
6667
}
68+
}
69+
70+
ZEND_API int zend_cpu_supports(zend_cpu_feature feature) {
6771
if (feature & ZEND_CPU_EDX_MASK) {
6872
return (cpuinfo.edx & (feature & ~ZEND_CPU_EDX_MASK));
6973
} else {

Zend/zend_cpuinfo.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ typedef enum _zend_cpu_feature {
9393

9494
ZEND_API int zend_cpu_supports(zend_cpu_feature feature);
9595

96+
void zend_cpu_startup(void);
97+
9698
#endif
9799

98100
/*

0 commit comments

Comments
 (0)