@@ -139,6 +139,40 @@ static void preload_restart(void);
139
139
# define LOCKVAL (v ) (ZCSG(v))
140
140
#endif
141
141
142
+ /**
143
+ * Clear AVX/SSE2-aligned memory.
144
+ */
145
+ static void bzero_aligned (void * mem , size_t size )
146
+ {
147
+ #if defined(__x86_64__ )
148
+ memset (mem , 0 , size );
149
+ #elif defined(__AVX__ )
150
+ char * p = (char * )mem ;
151
+ char * end = p + size ;
152
+ __m256i ymm0 = _mm256_setzero_si256 ();
153
+
154
+ while (p < end ) {
155
+ _mm256_store_si256 ((__m256i * )p , ymm0 );
156
+ _mm256_store_si256 ((__m256i * )(p + 32 ), ymm0 );
157
+ p += 64 ;
158
+ }
159
+ #elif defined(__SSE2__ )
160
+ char * p = (char * )mem ;
161
+ char * end = p + size ;
162
+ __m128i xmm0 = _mm_setzero_si128 ();
163
+
164
+ while (p < end ) {
165
+ _mm_store_si128 ((__m128i * )p , xmm0 );
166
+ _mm_store_si128 ((__m128i * )(p + 16 ), xmm0 );
167
+ _mm_store_si128 ((__m128i * )(p + 32 ), xmm0 );
168
+ _mm_store_si128 ((__m128i * )(p + 48 ), xmm0 );
169
+ p += 64 ;
170
+ }
171
+ #else
172
+ memset (mem , 0 , size );
173
+ #endif
174
+ }
175
+
142
176
#ifdef ZEND_WIN32
143
177
static time_t zend_accel_get_time (void )
144
178
{
@@ -1539,43 +1573,6 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr
1539
1573
1540
1574
/* Allocate shared memory */
1541
1575
ZCG (mem ) = zend_shared_alloc_aligned (memory_used );
1542
- #if defined(__AVX__ ) || defined(__SSE2__ )
1543
- if (ZCG (mem )) {
1544
- #if defined(__x86_64__ )
1545
- memset (ZCG (mem ), 0 , memory_used );
1546
- #elif defined(__AVX__ )
1547
- {
1548
- char * p = (char * )ZCG (mem );
1549
- char * end = p + memory_used ;
1550
- __m256i ymm0 = _mm256_setzero_si256 ();
1551
-
1552
- while (p < end ) {
1553
- _mm256_store_si256 ((__m256i * )p , ymm0 );
1554
- _mm256_store_si256 ((__m256i * )(p + 32 ), ymm0 );
1555
- p += 64 ;
1556
- }
1557
- }
1558
- #else
1559
- {
1560
- char * p = (char * )ZCG (mem );
1561
- char * end = p + memory_used ;
1562
- __m128i xmm0 = _mm_setzero_si128 ();
1563
-
1564
- while (p < end ) {
1565
- _mm_store_si128 ((__m128i * )p , xmm0 );
1566
- _mm_store_si128 ((__m128i * )(p + 16 ), xmm0 );
1567
- _mm_store_si128 ((__m128i * )(p + 32 ), xmm0 );
1568
- _mm_store_si128 ((__m128i * )(p + 48 ), xmm0 );
1569
- p += 64 ;
1570
- }
1571
- }
1572
- #endif
1573
- }
1574
- #else
1575
- if (ZCG (mem )) {
1576
- memset (ZCG (mem ), 0 , memory_used );
1577
- }
1578
- #endif
1579
1576
if (!ZCG (mem )) {
1580
1577
zend_shared_alloc_destroy_xlat_table ();
1581
1578
zend_accel_schedule_restart_if_necessary (ACCEL_RESTART_OOM );
@@ -1587,6 +1584,8 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr
1587
1584
return new_persistent_script ;
1588
1585
}
1589
1586
1587
+ bzero_aligned (ZCG (mem ), memory_used );
1588
+
1590
1589
zend_shared_alloc_clear_xlat_table ();
1591
1590
1592
1591
/* Copy into shared memory */
@@ -4235,48 +4234,13 @@ static zend_persistent_script* preload_script_in_shared_memory(zend_persistent_s
4235
4234
4236
4235
/* Allocate shared memory */
4237
4236
ZCG (mem ) = zend_shared_alloc_aligned (memory_used );
4238
- #if defined(__AVX__ ) || defined(__SSE2__ )
4239
- if (ZCG (mem )) {
4240
- #if defined(__x86_64__ )
4241
- memset (ZCG (mem ), 0 , memory_used );
4242
- #elif defined(__AVX__ )
4243
- {
4244
- char * p = (char * )ZCG (mem );
4245
- char * end = p + memory_used ;
4246
- __m256i ymm0 = _mm256_setzero_si256 ();
4247
-
4248
- while (p < end ) {
4249
- _mm256_store_si256 ((__m256i * )p , ymm0 );
4250
- _mm256_store_si256 ((__m256i * )(p + 32 ), ymm0 );
4251
- p += 64 ;
4252
- }
4253
- }
4254
- #else
4255
- {
4256
- char * p = (char * )ZCG (mem );
4257
- char * end = p + memory_used ;
4258
- __m128i xmm0 = _mm_setzero_si128 ();
4259
-
4260
- while (p < end ) {
4261
- _mm_store_si128 ((__m128i * )p , xmm0 );
4262
- _mm_store_si128 ((__m128i * )(p + 16 ), xmm0 );
4263
- _mm_store_si128 ((__m128i * )(p + 32 ), xmm0 );
4264
- _mm_store_si128 ((__m128i * )(p + 48 ), xmm0 );
4265
- p += 64 ;
4266
- }
4267
- }
4268
- #endif
4269
- }
4270
- #else
4271
- if (ZCG (mem )) {
4272
- memset (ZCG (mem ), 0 , memory_used );
4273
- }
4274
- #endif
4275
4237
if (!ZCG (mem )) {
4276
4238
zend_accel_error_noreturn (ACCEL_LOG_FATAL , "Not enough shared memory for preloading. Consider increasing the value for the opcache.memory_consumption directive in php.ini." );
4277
4239
return NULL ;
4278
4240
}
4279
4241
4242
+ bzero_aligned (ZCG (mem ), memory_used );
4243
+
4280
4244
zend_shared_alloc_restore_xlat_table (checkpoint );
4281
4245
4282
4246
/* Copy into shared memory */
0 commit comments