Commit Graph

112589 Commits

Author SHA1 Message Date
Nikita Popov
2e56e14e39 Swap implode() argument order in some tests 2019-07-12 12:54:10 +02:00
Nikita Popov
9a274de4f4 Improve bless_tests
If a string var_dump contains a wildcard, also make the length a
wildcard.
2019-07-12 12:54:01 +02:00
Dmitry Stogov
0793af0673 Use common code for double math 2019-07-12 11:40:56 +03:00
Christoph M. Becker
d0d02ecc4e Revert "Temporarily skip test"
This reverts commit 4e5a717866.

As of commit 17f7fb7605 the test should
no longer hang.
2019-07-11 23:33:34 +02:00
Dmitry Stogov
350f2212ff Allow GOTO style helpers in HYBRID VM 2019-07-12 00:00:55 +03:00
Dmitry Stogov
ef1a1a0698 Separate "cold" parts of comparison instructions 2019-07-11 20:44:39 +03:00
Dmitry Stogov
be94c0c3c6 Separate "cold" parts of binary op instructions 2019-07-11 18:23:08 +03:00
Nikita Popov
59852c0321 Remove redundant 64-bit ezmlm_hash() test
This test is the same as the as ezmlm_hash_basic.phpt. This function
does not behave differently on 32-bit and 64-bit.
2019-07-11 17:09:18 +02:00
Nikita Popov
cbda1b1c6a Add ZEND_DEP_ME macro 2019-07-11 17:09:03 +02:00
George Peter Banyard
e6c2b28865 Convert short tag to standard tag in Zend test file
Closes GH-4389.
2019-07-11 16:20:05 +02:00
Nikita Popov
17f7fb7605 Switch to using shell-less proc_open() in various server tests 2019-07-11 15:48:10 +02:00
Nikita Popov
6285bb52fa Support redirect+null descriptors in proc_open
This adds support for doing something like:

    [1 => ['pipe', 'w'], 2 => ['redirect', 1]]

This will make descriptor 2 on the child end a dup'd descriptor 1.
This is mainly useful in conjunction with shell-less mode, because
we don't have an easy way to do "2>&1" there.

Additionally we support:

    [1 => ['pipe', 'w'], 2 => ['null']]

Which would be the same as a >/dev/null or >nul redirect, depending
on platform.
2019-07-11 15:48:10 +02:00
Nikita Popov
42cac9d7d7 Don't call Reflection::export() internally
export() methods were implemented in a roundabout way, where they
would call Reflection::export(), which would then call __toString().
Cut out the middleman by directly calling __toString().
2019-07-11 14:14:55 +02:00
Christoph M. Becker
17997a908d Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Fix #78212: Segfault in built-in webserver
2019-07-11 13:11:08 +02:00
Christoph M. Becker
fa65f5ecf5 Fix #78212: Segfault in built-in webserver
Since syslog's ident and facility parameters have been added to
config[1], vsyslog() segfaults on Windows, if openlog() has not been
called before.  We bring back the removed lines to fix this.

[1] <http://git.php.net/?p=php-src.git;a=commit;h=2475337bd8a0fad0dac03db3f5e7e9d331d53653>
2019-07-11 13:09:54 +02:00
Nikita Popov
c02dfddda3 Include test name in JUnit testcase name
Azure does not show the classname attribute in any convenient way,
and the file name is the part we usually care about.
2019-07-11 12:46:56 +02:00
Nikita Popov
d20fc5a192 Make proc_open_bug64438.phpt more robust
The test currently assumes that we'll first read the data of
stdout and stderr and then see eof on stdout and stderr. However
we could also read stdout, see eof on stdout, read stderr and see
eof on stderr, depending on timing.

Avoid output ordering issues by collecting events into a per-pipe
array, so interleaving is not visible.
2019-07-11 12:46:56 +02:00
Sebastian Pop
3b73c9fb86 neon vectorization for base64
A similar algorithm is used to vectorize on x86_64, with a good description in
https://arxiv.org/abs/1704.00605 . On AArch64 the implementation differs in that
instead of using multiplies to shift bits around, it uses the vld3+vst4 and
vld4+vst3 combinations to load and store interleaved data.  This patch is based
on the NEON implementation of Wojciech Mula:
https://github.com/WojciechMula/base64simd/blob/master/encode/encode.neon.cpp
https://github.com/WojciechMula/base64simd/blob/master/encode/lookup.neon.cpp
and
https://github.com/WojciechMula/base64simd/blob/master/encode/encode.neon.cpp
https://github.com/WojciechMula/base64simd/blob/master/encode/encode.neon.cpp
adapted to php/ext/standard/base64.c and vectorized with factor 16 instead of 8.

On a Graviton A1 instance and on the synthetic benchmarks in
https://github.com/lemire/fastbase64 I see 175% speedup on base64 encoding and
60% speedup on base64 decode compared to the scalar implementation.

The patch passes `make test` regression testing on aarch64-linux.
2019-07-11 12:04:29 +03:00
Sebastian Pop
2a535a9707 [AArch64] Use crc32 instructions when available
The time goes from 0.838s down to 0.029s (a 28x speedup) on a Graviton A1
instance and the following benchmark:

function simple_crc32() {
  $a = "foo";
  for ($i = 0; $i < 10000; $i++) {
      crc32($a);
      $a .= "o".$i;
  }
}
2019-07-11 10:29:45 +02:00
Nikita Popov
ba8c4894d8 Add server conflict to soap custom content type test 2019-07-11 10:26:53 +02:00
Peter Kokot
a6daded1a4 Refactor undefining PACKAGE_* symbols
Instead of patching configuration headers template generated by
the given tools - autoheader, this moves patching these symbols to
the configure step before creating and invoking the config.status
and before the configuration header file is generated from the
patched template.

Closes GH-4374
2019-07-11 02:00:51 +02:00
Peter Kokot
d63fdced2e Remove TSRM/tsrm_config.w32.h
The tsrm_config.w32.h file is a simple wrapper for already defined
symbols and includes elsewhere.

Closes GH-4383
2019-07-10 21:19:44 +02:00
Dmitry Stogov
0e3d4911fa Set expectation to reduce hot code fragmentation 2019-07-10 18:29:35 +03:00
Nikita Popov
a54ee8a947 Merge branch 'PHP-7.3' into PHP-7.4 2019-07-10 17:28:37 +02:00
Nikita Popov
e7a83ec8df Fix bug #78271
When cleaning nops in the dfa pass, we were always keeping the
smart branch inhibiting nop that occurs directly before the jump
instruction. However, as we skip unreachable blocks entirely, it
may happen that we need to keep a nop that occurs further back,
prior to the unreachable blocks. Account for that case now.

We should really do something about the smart branch situation,
this is very fragile...
2019-07-10 17:25:40 +02:00
Cyril Pascal
6791107319 Align segments on huge page boundary only for x86
Closes GH-4387.
2019-07-10 15:19:24 +02:00
Nikita Popov
ee18687f97 Merge branch 'PHP-7.3' into PHP-7.4 2019-07-10 13:10:07 +02:00
Nikita Popov
3fa9f9cfae Add CONFLICTS to recognized sections
It does nothing on 7.3, but this makes it easier to write tests in
3rd party extensions.
2019-07-10 13:09:06 +02:00
Nikita Popov
07bbc54658 Fix file collisions in phar tests 2019-07-10 12:55:40 +02:00
Nikita Popov
852e35317d Additional fix for mysqli_fork test 2019-07-10 12:42:17 +02:00
Nikita Popov
c42b7dd6d3 Throw notice on array access on illegal type
No notice is thrown for list() accesses, because we did not come
to an agreement regarding patterns like

    while ([$key, $value] = yield $it->next()) { ... }

where silent null access may be desirable.

No effort is made to suppress multiple notices in access chains
likes $x[0][0][0], because the technical complexity this causes
does not seem worthwhile.

RFC: https://wiki.php.net/rfc/notice-for-non-valid-array-container
2019-07-10 12:02:14 +02:00
Nikita Popov
a63422029e Fix invalid array access in mysqli_fork test 2019-07-10 11:59:27 +02:00
Dmitry Stogov
d57d74b271 Reduce cost for references to strings and resources 2019-07-10 12:27:59 +03:00
Nikita Popov
2bca35eacc Rename support_strings to !is_list
In preparation for more behavior that depends on whether it it is
a list() access. Using support_strings for that would be
confusing.
2019-07-10 11:10:17 +02:00
Nikita Popov
0c450967e1 Simplify two unserialize() tests
unserialize() returns false for these now, so it doesn't make sense
to try and do something with the result.
2019-07-10 11:09:54 +02:00
Nikita Popov
a207b3574b Fix iteration limits in SXE test
Test doesn't look like it's specifically testing out of bounds
access, just two different iteration patterns, so make sure the
limits are correct.
2019-07-10 11:09:47 +02:00
Nikita Popov
9d82a01d01 Clean up DateTimeZone::getLocation() test
And avoid invalid array access.
2019-07-10 11:09:41 +02:00
Nikita Popov
dfe5fd2a37 Avoid invalid array access in fcgi.inc 2019-07-10 11:09:34 +02:00
Remi Collet
db0eaa8cf1 improve libargon2/libsodium compatibility 2019-07-10 09:00:41 +02:00
Peter Kokot
48abed7fd8 Use e.g. instead of less common f.e. [ci skip] 2019-07-09 17:53:46 +02:00
Sara Golemon
f65956e4fb
Relax argon2 mem_cost down to 64k, bump time_cost to 4 2019-07-09 11:36:48 -04:00
David Carlier
aa0e29a668 CGI: Fix memory leak on error paths 2019-07-09 16:19:41 +02:00
Dmitry Stogov
8f0c87e1b6 Avoid unintended inlining 2019-07-09 14:01:48 +03:00
Nikita Popov
ba05b2c6b0 Merge branch 'PHP-7.3' into PHP-7.4 2019-07-09 11:05:54 +02:00
Nikita Popov
825f47564a Merge branch 'PHP-7.2' into PHP-7.3 2019-07-09 11:05:18 +02:00
Nikita Popov
22ed362810 Revert "Fixed bug #76980"
This reverts commit 35353dc49a.

This changes causes issues for Symfony, see
https://github.com/symfony/symfony/issues/32395. I'm reverting it
from PHP 7.2 and PHP 7.3 and only leaving it in PHP 7.4.
2019-07-09 11:04:16 +02:00
Derick Rethans
432ad35b55 Merge remote-tracking branch 'origin/PHP-7.4' into PHP-7.4 2019-07-09 09:14:01 +01:00
Christoph M. Becker
726c07e9af Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3:
  Upgrade to SQLite 3.28.0
2019-07-09 10:08:09 +02:00
Christoph M. Becker
7404d756e9 Merge branch 'PHP-7.2' into PHP-7.3
* PHP-7.2:
  Upgrade to SQLite 3.28.0
2019-07-09 10:04:41 +02:00
Christoph M. Becker
40f7533cc1 Merge branch 'PHP-7.1' into PHP-7.2
* PHP-7.1:
  Upgrade to SQLite 3.28.0
2019-07-09 10:02:47 +02:00