Commit Graph
670 Commits
Author SHA1 Message Date
Nikita Popov bc3512c1d6 Fix various update_opN_const issues 2015-11-07 17:45:26 +01:00
Nikita Popov 9da456655c Refactor update_op2_const
Combines both switches into one, to avoid having to maintain the same
opcode list twice. This also makes most of the bugs fixed by the next
commit pretty obvious.

No functional change here.
2015-11-07 17:31:09 +01:00
Reeze Xia c524f43e4f C99 complain fix 2015-11-07 22:15:19 +08:00
Nikita Popov 99d818f1e9 Don't propagate into ops that error on non-string
To properly support this make update_opN_const fallible -- they
are not always called through replace_with_const.
2015-11-07 12:04:51 +01:00
Nikita Popov 00b37e718d Strip leading backslash in update_opN_const 2015-11-07 12:04:51 +01:00
Nikita Popov 632bee4abb Fix update_opX_const lowercasing
It was lowering in-place.
2015-11-07 12:04:51 +01:00
Xinchen Hui fe0af271c6 Fixed bug #70843 (Segmentation fault on MacOSX with opcache.file_cache_only=1) 2015-11-04 18:59:30 +08:00
Xinchen Hui 008d8b6789 Fixed bug #70656 (require() statement broken after opcache_reset() or a few hours of use) 2015-10-26 17:28:19 -07:00
Xinchen Hui 31553f07f2 Revert "Fixed bug #70656 (require() statement broken after opcache_reset() or a few hours of use)"
This reverts commit 3ef96c2cc6.
2015-10-26 17:26:30 -07:00
Xinchen Hui 3ef96c2cc6 Fixed bug #70656 (require() statement broken after opcache_reset() or a few hours of use) 2015-10-26 17:09:42 -07:00
Julien Pauli eb59dd7d81 Don't remap .text segment if huge pages are not available. 2015-10-29 08:44:19 +03:00
Xinchen Hui d4df6641c8 Fixed bug #70724 (Undefined Symbols from opcache.so on Mac OS X 10.10) 2015-10-17 01:52:32 -07:00
Anatol Belski ffb5d0aca3 Implemented file_cache_fallback mechanism
which is essential as an attempt to fix the "failed to reattach"
error on Windows. If file_cache is enabled, Opcache will
automaticaly switch to file_cache_only mode in the case a process
failed to map the shared segment at the required address. The
important small part of the SHM will still be mapped, which
allows information exchange between normal processes using SHM
and those using the fallback mechanism.

This is based on Dmitry's, Matt's and mine ideas. So many thanks for
support!
2015-10-09 23:47:59 +02:00
Anatol Belski a549a3ac17 improve error message 2015-10-04 16:36:53 +02:00
Anatol Belski c97198e181 fix incrementing on 32-bit 2015-10-04 12:19:16 +02:00
Anatol Belski 4cb6342426 remove useless checks
Other platforms than listed in the checks are not supported since
PHP 5.5. We also won't need these checks for a while, so can simplify.
2015-10-03 10:57:32 +02:00
Anatol Belski 96fe3be7f2 Merge branch 'PHP-5.6' into PHP-7.0
* PHP-5.6:
  fix win10 support
2015-10-03 10:46:10 +02:00
Anatol Belski 83bef0ef83 fix win10 support
dwMajorVersion == 10 there, and generally this check is obsolete
as we don't support dwMajorVersion < 6 since 5.5
2015-10-03 10:44:43 +02:00
Dmitry Stogov a05fc48055 Extended zend_extension API to allow storing additional data associated with op_arrays in opcache SHM. (op_array->reserved[]) 2015-09-25 11:50:38 +03:00
Anatol Belski 67aff16d94 fix ident 2015-09-25 08:30:44 +02:00
Anatol Belski 0fd7acd11d don't keep locked mutex after errors 2015-09-24 16:34:44 +02:00
Anatol Belski df832c966c avoid dangling pointers 2015-09-24 16:33:58 +02:00
Anatol Belski 3ef3d80f25 move accel_shared_globals assignment into locked block
this might fix crashes under high concurrency
2015-09-24 16:33:57 +02:00
Dmitry Stogov 2d55e8c186 Fix (revert) loop exit condition 2015-09-24 11:19:26 +03:00
Dmitry Stogov 262160e0e9 Attmpt to fix "Unable to reattach to base address" problem. (Matt Ficken) 2015-09-24 10:48:34 +03:00
Dmitry Stogov 233c42ad59 Enabled placing PHP code segment into huge pages 2015-09-15 02:04:09 +03:00
Dmitry Stogov 818e5ea5f7 Enable file based cache compilation by default 2015-09-15 01:58:32 +03:00
Dmitry Stogov c104d329e1 Use shorter php.ini directive name "opcache.huge_code_pages" and disable it by default. 2015-09-15 01:54:04 +03:00
Dmitry Stogov f2480582fb Removed useless include 2015-09-15 01:46:53 +03:00
Dmitry Stogov 5c28c21159 Use memcpy() instead of mmap() to keep modifyed code (e.g. gdb breakpoints) 2015-09-14 18:42:45 +03:00
Dmitry Stogov 669f0b39b1 Added an experemental ability to move PHP code pages (PHP TEXT segment) into HUGE pages.
PHP should be configured and built with --enable-huge-code-pages, OS should be configured to provide huge pages.
It's possible to enable/disable this future in php.ini through opcache.enable_huge_code_pages=0/1.
The feature was tested on Linux and provided 2% improvement on real-life apps, because of 2-3 times reduction in number of iTLB misses.
2015-09-14 13:34:17 +03:00
Bob Weinand fe08b933e4 Add support for **= in opcache optimizer 2015-09-13 12:35:35 +02:00
Anatol Belski b9155b851e add test for bug #70423 2015-09-07 17:31:49 +02:00
Anatol Belski 46792a9914 remove unnecessary check
as it's unrelated to the size pre calculation
2015-09-07 15:14:26 +02:00
Anatol Belski eaf96698c7 Fix bug #70423 Warning Internal error: wrong size calculation 2015-09-07 15:02:33 +02:00
Dmitry Stogov a2f8a7675b Prevent HashTable compaction below HT_MIN_SIZE (this may lead to hash collisions). 2015-09-02 13:03:31 +03:00
Dmitry Stogov d8eee72a84 Fixed possible caching with invalid key value 2015-09-01 12:56:33 +03:00
Dmitry Stogov 89aa1b7392 Ensure proper data alignment 2015-08-31 13:56:42 +03:00
Xinchen Hui 5a37056efa unnecessary 1 byte allocted 2015-08-21 18:28:02 +08:00
Xinchen Hui 79cd9a18b5 Fixed bug #70237 (Empty while and do-while segmentation fault with opcode on CLI enabled). 2015-08-11 21:01:56 +08:00
Xinchen Hui 6e894f8b81 Merge branch 'PHP-5.6' 2015-08-11 21:44:04 +08:00
Dmitry Stogov 18fb424bef Fixed bug #70207 (Finally is broken with opcache) 2015-08-10 16:38:43 +03:00
Dmitry Stogov 90cb3bb7de Reduce memory usage by using bitsets instead of array of bytes. 2015-08-06 15:41:50 +03:00
Dmitry Stogov 6d681876ee Get rid of memcpy() in MAKE_NOP() 2015-08-06 15:40:40 +03:00
Bogdan Andone 68185bafbe opcache: Patch SSE based fast_memcpy() implementation
Use _mm_store_si128() instead of _mm_stream_si128(). This ensures that copied memory
is preserved in data cache, which is good as the interpretor will start to use this
data without the need to go back to memory. _mm_stream* is intended to be used for
stores where we want to avoid reading data into the cache and the cache pollution;
in our scenario it seems that preserving the data in cache has a positive impact.

Tests on WordPress 4.1 show ~1% performance increase with fast_memcpy() in place
versus standard memcpy() when running php-cgi -T10000 wordpress/index.php.

I also updated SW prefetching on target memory but its contribution is almost negligible.
The address to be prefetched will be used in a couple of cycles (at the next iteration)
while the data from memory will be available in >100 cycles.
2015-07-29 14:51:57 +03:00
Nikita Popov a717acd21a Fix RECV_VARIADIC literal compacting wrt cache slot 2015-07-26 21:22:31 +02:00
Xinchen Hui 3e479ef424 Fixed bug #70111 (Segfault when a function uses both an explicit return type and an explicit cast) 2015-07-22 22:43:30 +08:00
Anatol Belski a685953969 fix duplicated line 2015-07-17 20:30:21 +02:00
Anatol Belski daba578dbe fix file cache path calculation at all the places
moved the corresponding code into a separte function while on that
2015-07-17 15:14:25 +02:00
Anatol Belski 4c87750c26 fix path handling for the file cache 2015-07-17 13:51:16 +02:00