mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Revert "Don't allocate temporary file cache memory on arena"
This reverts commit 4440ac3ed6
.
This fix wasn't correct, as we do retain the arena-allocation
for the file cache only case. This will need some other way to
reconcile both modes.
This commit is contained in:
parent
6ab4286f2e
commit
bd3ba5465b
1 changed files with 9 additions and 8 deletions
|
@ -1705,7 +1705,7 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
|
||||||
zend_persistent_script *script;
|
zend_persistent_script *script;
|
||||||
zend_file_cache_metainfo info;
|
zend_file_cache_metainfo info;
|
||||||
zend_accel_hash_entry *bucket;
|
zend_accel_hash_entry *bucket;
|
||||||
void *mem, *buf;
|
void *mem, *checkpoint, *buf;
|
||||||
int cache_it = 1;
|
int cache_it = 1;
|
||||||
unsigned int actual_checksum;
|
unsigned int actual_checksum;
|
||||||
int ok;
|
int ok;
|
||||||
|
@ -1766,12 +1766,13 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
checkpoint = zend_arena_checkpoint(CG(arena));
|
||||||
#if defined(__AVX__) || defined(__SSE2__)
|
#if defined(__AVX__) || defined(__SSE2__)
|
||||||
/* Align to 64-byte boundary */
|
/* Align to 64-byte boundary */
|
||||||
mem = emalloc(info.mem_size + info.str_size + 64);
|
mem = zend_arena_alloc(&CG(arena), info.mem_size + info.str_size + 64);
|
||||||
mem = (void*)(((zend_uintptr_t)mem + 63L) & ~63L);
|
mem = (void*)(((zend_uintptr_t)mem + 63L) & ~63L);
|
||||||
#else
|
#else
|
||||||
mem = emalloc(info.mem_size + info.str_size);
|
mem = zend_arena_alloc(&CG(arena), info.mem_size + info.str_size);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (read(fd, mem, info.mem_size + info.str_size) != (ssize_t)(info.mem_size + info.str_size)) {
|
if (read(fd, mem, info.mem_size + info.str_size) != (ssize_t)(info.mem_size + info.str_size)) {
|
||||||
|
@ -1779,7 +1780,7 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
|
||||||
zend_file_cache_flock(fd, LOCK_UN);
|
zend_file_cache_flock(fd, LOCK_UN);
|
||||||
close(fd);
|
close(fd);
|
||||||
zend_file_cache_unlink(filename);
|
zend_file_cache_unlink(filename);
|
||||||
efree(mem);
|
zend_arena_release(&CG(arena), checkpoint);
|
||||||
efree(filename);
|
efree(filename);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1793,7 +1794,7 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
|
||||||
(actual_checksum = zend_adler32(ADLER32_INIT, mem, info.mem_size + info.str_size)) != info.checksum) {
|
(actual_checksum = zend_adler32(ADLER32_INIT, mem, info.mem_size + info.str_size)) != info.checksum) {
|
||||||
zend_accel_error(ACCEL_LOG_WARNING, "corrupted file '%s' excepted checksum: 0x%08x actual checksum: 0x%08x\n", filename, info.checksum, actual_checksum);
|
zend_accel_error(ACCEL_LOG_WARNING, "corrupted file '%s' excepted checksum: 0x%08x actual checksum: 0x%08x\n", filename, info.checksum, actual_checksum);
|
||||||
zend_file_cache_unlink(filename);
|
zend_file_cache_unlink(filename);
|
||||||
efree(mem);
|
zend_arena_release(&CG(arena), checkpoint);
|
||||||
efree(filename);
|
efree(filename);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1813,7 +1814,7 @@ zend_persistent_script *zend_file_cache_script_load(zend_file_handle *file_handl
|
||||||
script = (zend_persistent_script *)bucket->data;
|
script = (zend_persistent_script *)bucket->data;
|
||||||
if (!script->corrupted) {
|
if (!script->corrupted) {
|
||||||
zend_shared_alloc_unlock();
|
zend_shared_alloc_unlock();
|
||||||
efree(mem);
|
zend_arena_release(&CG(arena), checkpoint);
|
||||||
efree(filename);
|
efree(filename);
|
||||||
return script;
|
return script;
|
||||||
}
|
}
|
||||||
|
@ -1863,7 +1864,7 @@ use_process_mem:
|
||||||
zend_shared_alloc_unlock();
|
zend_shared_alloc_unlock();
|
||||||
goto use_process_mem;
|
goto use_process_mem;
|
||||||
} else {
|
} else {
|
||||||
efree(mem);
|
zend_arena_release(&CG(arena), checkpoint);
|
||||||
efree(filename);
|
efree(filename);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1881,7 +1882,7 @@ use_process_mem:
|
||||||
zend_shared_alloc_unlock();
|
zend_shared_alloc_unlock();
|
||||||
zend_accel_error(ACCEL_LOG_INFO, "File cached script loaded into memory '%s'", ZSTR_VAL(script->script.filename));
|
zend_accel_error(ACCEL_LOG_INFO, "File cached script loaded into memory '%s'", ZSTR_VAL(script->script.filename));
|
||||||
|
|
||||||
efree(mem);
|
zend_arena_release(&CG(arena), checkpoint);
|
||||||
}
|
}
|
||||||
efree(filename);
|
efree(filename);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue