@@ -139,6 +139,40 @@ static void preload_restart(void);
139139# define LOCKVAL (v ) (ZCSG(v))
140140#endif
141141
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+
142176#ifdef ZEND_WIN32
143177static time_t zend_accel_get_time (void )
144178{
@@ -1539,43 +1573,6 @@ static zend_persistent_script *cache_script_in_shared_memory(zend_persistent_scr
15391573
15401574 /* Allocate shared memory */
15411575 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
15791576 if (!ZCG (mem )) {
15801577 zend_shared_alloc_destroy_xlat_table ();
15811578 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
15871584 return new_persistent_script ;
15881585 }
15891586
1587+ bzero_aligned (ZCG (mem ), memory_used );
1588+
15901589 zend_shared_alloc_clear_xlat_table ();
15911590
15921591 /* Copy into shared memory */
@@ -4235,48 +4234,13 @@ static zend_persistent_script* preload_script_in_shared_memory(zend_persistent_s
42354234
42364235 /* Allocate shared memory */
42374236 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
42754237 if (!ZCG (mem )) {
42764238 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." );
42774239 return NULL ;
42784240 }
42794241
4242+ bzero_aligned (ZCG (mem ), memory_used );
4243+
42804244 zend_shared_alloc_restore_xlat_table (checkpoint );
42814245
42824246 /* Copy into shared memory */
0 commit comments