Dmitry Stogov
40b2ffe201
Merge branch 'PHP-7.4'
...
* PHP-7.4:
speed up increment and decrement operators with overflow detection
2019-05-07 15:42:25 +03:00
Sebastian Pop
79a84e00fa
speed up increment and decrement operators with overflow detection
...
On A72, google-benchmark measure before and after the patch:
--------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------
BM_inc_before 6.54 ns 6.54 ns 106985447
BM_dec_before 6.54 ns 6.54 ns 107011667
BM_inc_after 4.36 ns 4.36 ns 160525864
BM_dec_after 4.36 ns 4.36 ns 160524243
Before the patch:
fast_long_add_function:
ldr x0, [x1]
add x2, x0, 1
cmp x2, x0
blt .L11
str x2, [x1]
ret
.L11:
mov x0, 4890909195324358656
mov w2, 5
str x0, [x1]
str w2, [x1, 8]
ret
With the patch:
fast_long_add_function:
ldr x5, [x1]
adds x5,x5,1
bvs .L2
str x5, [x1]
ret
.L2:
mov x0, 4890909195324358656
mov w2, 5
str x0, [x1]
str w2, [x1, 8]
ret
php$ ./sapi/cli/php Zend/bench.php
Base: Patch:
simple 0.091 simple 0.091
simplecall 0.014 simplecall 0.014
simpleucall 0.041 simpleucall 0.041
simpleudcall 0.045 simpleudcall 0.045
mandel 0.193 mandel 0.193
mandel2 0.229 mandel2 0.229
ackermann(7) 0.044 ackermann(7) 0.044
ary(50000) 0.010 ary(50000) 0.010
ary2(50000) 0.008 ary2(50000) 0.008
ary3(2000) 0.096 ary3(2000) 0.102
fibo(30) 0.149 fibo(30) 0.148
hash1(50000) 0.016 hash1(50000) 0.016
hash2(500) 0.020 hash2(500) 0.020
heapsort(20000) 0.055 heapsort(20000) 0.055
matrix(20) 0.057 matrix(20) 0.057
nestedloop(12) 0.091 nestedloop(12) 0.091
sieve(30) 0.032 sieve(30) 0.032
strcat(200000) 0.010 strcat(200000) 0.010
------------------------ ------------------------
Total 1.199 Total 1.204
php$ ./sapi/cli/php Zend/micro_bench.php
Base: Patch:
empty_loop 0.051 empty_loop 0.050
func() 0.181 0.130 func() 0.181 0.131
undef_func() 0.186 0.135 undef_func() 0.186 0.136
int_func() 0.116 0.064 int_func() 0.116 0.065
$x = self::$x 0.235 0.183 $x = self::$x 0.229 0.179
self::$x = 0 0.198 0.147 self::$x = 0 0.199 0.148
isset(self::$x) 0.229 0.178 isset(self::$x) 0.225 0.174
empty(self::$x) 0.231 0.180 empty(self::$x) 0.227 0.177
$x = Foo::$x 0.144 0.093 $x = Foo::$x 0.142 0.092
Foo::$x = 0 0.107 0.056 Foo::$x = 0 0.105 0.054
isset(Foo::$x) 0.140 0.088 isset(Foo::$x) 0.140 0.089
empty(Foo::$x) 0.148 0.097 empty(Foo::$x) 0.144 0.094
self::f() 0.238 0.187 self::f() 0.240 0.190
Foo::f() 0.209 0.158 Foo::f() 0.201 0.150
$x = $this->x 0.123 0.072 $x = $this->x 0.120 0.070
$this->x = 0 0.124 0.073 $this->x = 0 0.124 0.074
$this->x += 2 0.151 0.099 $this->x += 2 0.151 0.101
++$this->x 0.137 0.086 ++$this->x 0.139 0.088
--$this->x 0.137 0.086 --$this->x 0.137 0.087
$this->x++ 0.170 0.119 $this->x++ 0.172 0.122
$this->x-- 0.171 0.119 $this->x-- 0.172 0.122
isset($this->x) 0.170 0.119 isset($this->x) 0.170 0.120
empty($this->x) 0.179 0.128 empty($this->x) 0.179 0.129
$this->f() 0.194 0.143 $this->f() 0.194 0.144
$x = Foo::TEST 0.188 0.137 $x = Foo::TEST 0.188 0.138
new Foo() 0.482 0.431 new Foo() 0.482 0.432
$x = TEST 0.109 0.058 $x = TEST 0.109 0.059
$x = $_GET 0.190 0.138 $x = $_GET 0.188 0.137
$x = $GLOBALS['v'] 0.242 0.191 $x = $GLOBALS['v'] 0.246 0.196
$x = $hash['v'] 0.196 0.145 $x = $hash['v'] 0.192 0.142
$x = $str[0] 0.146 0.094 $x = $str[0] 0.142 0.092
$x = $a ?: null 0.144 0.093 $x = $a ?: null 0.144 0.094
$x = $f ?: tmp 0.174 0.123 $x = $f ?: tmp 0.174 0.124
$x = $f ? $f : $a 0.153 0.101 $x = $f ? $f : $a 0.153 0.102
$x = $f ? $f : tmp 0.148 0.097 $x = $f ? $f : tmp 0.148 0.098
------------------------ ------------------------
Total 6.143 Total 6.108
2019-05-07 15:42:19 +03:00
Dmitry Stogov
b27f97d858
Merge branch 'PHP-7.4'
...
* PHP-7.4:
speed up add and sub operators with overflow detection
2019-05-07 15:38:27 +03:00
Sebastian Pop
adc3b72076
speed up add and sub operators with overflow detection
...
On A72, google-benchmark measure before and after the patch:
--------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------
BM_add_before 13.3 ns 13.3 ns 52626058
BM_sub_before 8.72 ns 8.72 ns 80259343
BM_add_after 4.80 ns 4.80 ns 145926004
BM_sub_after 4.80 ns 4.80 ns 145936496
Before the patch:
fast_long_add_function:
ldr x1, [x1]
ldr x2, [x2]
add x3, x1, x2
eor x4, x1, x2
tbz x4, #63 , .L5
.L2:
mov w1, 4
str x3, [x0]
str w1, [x0, 8]
ret
.p2align 2
.L5:
eor x4, x1, x3
tbz x4, #63 , .L2
scvtf d0, x1
scvtf d1, x2
mov w1, 5
str w1, [x0, 8]
fadd d0, d0, d1
str d0, [x0]
ret
With the patch:
fast_long_add_function:
ldr x5, [x1]
ldr x6, [x2]
adds x5, x5, x6
bvs .L2
mov w6, 4
str x5, [x0]
str w6, [x0, 8]
ret
.L2:
ldr x1, [x1]
mov w3, 5
ldr x2, [x2]
str w3, [x0, 8]
scvtf d0, x1
scvtf d1, x2
fadd d0, d0, d1
str d0, [x0]
ret
php$ ./sapi/cli/php Zend/bench.php
Base: Patch:
simple 0.091 simple 0.091
simplecall 0.014 simplecall 0.014
simpleucall 0.041 simpleucall 0.041
simpleudcall 0.045 simpleudcall 0.045
mandel 0.193 mandel 0.193
mandel2 0.229 mandel2 0.229
ackermann(7) 0.044 ackermann(7) 0.044
ary(50000) 0.010 ary(50000) 0.010
ary2(50000) 0.008 ary2(50000) 0.008
ary3(2000) 0.096 ary3(2000) 0.095
fibo(30) 0.149 fibo(30) 0.148
hash1(50000) 0.016 hash1(50000) 0.016
hash2(500) 0.020 hash2(500) 0.020
heapsort(20000) 0.055 heapsort(20000) 0.054
matrix(20) 0.057 matrix(20) 0.057
nestedloop(12) 0.091 nestedloop(12) 0.091
sieve(30) 0.032 sieve(30) 0.032
strcat(200000) 0.010 strcat(200000) 0.010
------------------------ ------------------------
Total 1.199 Total 1.197
php$ ./sapi/cli/php Zend/micro_bench.php
Base: Patch:
empty_loop 0.051 empty_loop 0.051
func() 0.181 0.130 func() 0.181 0.130
undef_func() 0.186 0.135 undef_func() 0.186 0.135
int_func() 0.116 0.064 int_func() 0.116 0.064
$x = self::$x 0.235 0.183 $x = self::$x 0.233 0.182
self::$x = 0 0.198 0.147 self::$x = 0 0.198 0.147
isset(self::$x) 0.229 0.178 isset(self::$x) 0.229 0.178
empty(self::$x) 0.231 0.180 empty(self::$x) 0.231 0.180
$x = Foo::$x 0.144 0.093 $x = Foo::$x 0.144 0.093
Foo::$x = 0 0.107 0.056 Foo::$x = 0 0.107 0.056
isset(Foo::$x) 0.140 0.088 isset(Foo::$x) 0.140 0.088
empty(Foo::$x) 0.148 0.097 empty(Foo::$x) 0.148 0.097
self::f() 0.238 0.187 self::f() 0.238 0.187
Foo::f() 0.209 0.158 Foo::f() 0.209 0.158
$x = $this->x 0.123 0.072 $x = $this->x 0.123 0.072
$this->x = 0 0.124 0.073 $this->x = 0 0.124 0.073
$this->x += 2 0.151 0.099 $this->x += 2 0.153 0.101
++$this->x 0.137 0.086 ++$this->x 0.138 0.086
--$this->x 0.137 0.086 --$this->x 0.138 0.086
$this->x++ 0.170 0.119 $this->x++ 0.172 0.121
$this->x-- 0.171 0.119 $this->x-- 0.172 0.121
isset($this->x) 0.170 0.119 isset($this->x) 0.170 0.119
empty($this->x) 0.179 0.128 empty($this->x) 0.179 0.128
$this->f() 0.194 0.143 $this->f() 0.194 0.143
$x = Foo::TEST 0.188 0.137 $x = Foo::TEST 0.188 0.136
new Foo() 0.482 0.431 new Foo() 0.479 0.427
$x = TEST 0.109 0.058 $x = TEST 0.109 0.058
$x = $_GET 0.190 0.138 $x = $_GET 0.190 0.139
$x = $GLOBALS['v'] 0.242 0.191 $x = $GLOBALS['v'] 0.242 0.191
$x = $hash['v'] 0.196 0.145 $x = $hash['v'] 0.196 0.145
$x = $str[0] 0.146 0.094 $x = $str[0] 0.145 0.094
$x = $a ?: null 0.144 0.093 $x = $a ?: null 0.144 0.093
$x = $f ?: tmp 0.174 0.123 $x = $f ?: tmp 0.174 0.123
$x = $f ? $f : $a 0.153 0.101 $x = $f ? $f : $a 0.153 0.101
$x = $f ? $f : tmp 0.148 0.097 $x = $f ? $f : tmp 0.148 0.097
------------------------ ------------------------
Total 6.143 Total 6.143
2019-05-07 15:38:17 +03:00
Nikita Popov
2a2f6a9e74
Merge branch 'PHP-7.4'
2019-05-07 14:30:20 +02:00
Hugh McMaster
cc9c5d8057
Use PKG_CHECK_MODULES to detect the ffi library
2019-05-07 14:28:33 +02:00
Nikita Popov
3619cc78a8
Merge branch 'PHP-7.4'
2019-05-07 14:07:30 +02:00
Nikita Popov
09ea55cb4e
Deprecate left-associative ternary
...
Deprecate nesting ternary operators without explicit parentheses.
RFC: https://wiki.php.net/rfc/ternary_associativity
2019-05-07 14:06:29 +02:00
Nikita Popov
fd2db11929
Always generate fatal error for LSP failures
...
RFC: https://wiki.php.net/rfc/lsp_errors
2019-05-07 13:45:28 +02:00
Nikita Popov
49c4ab3c39
Merge branch 'PHP-7.4'
2019-05-07 10:41:31 +02:00
Sebastian Pop
68a7578243
[AArch64] use rev64 to reverse strings
...
The execution time goes from 4.388s down to 0.563s on a Graviton A1
instance for the benchmark:
function reverse_strings() {
$a = "foo";
for ($i = 0; $i < 100000; $i++) {
strrev($a);
$a .= "o";
}
}
2019-05-07 10:40:45 +02:00
Nikita Popov
d9a2d76a43
Remove outdated info from README.ZEND_MM
...
[ci skip]
2019-05-07 09:54:46 +02:00
Peter Kokot
91a91c6c8b
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Convert CRLF line endings to LF
Convert CRLF line endings to LF
2019-05-07 04:40:23 +02:00
Peter Kokot
361d0b3426
Convert CRLF line endings to LF
...
This patch simplifies line endings tracked in the Git repository and
syncs them to all include the LF style instead of the CRLF files.
Newline characters:
- LF (\n) (*nix and Mac)
- CRLF (\r\n) (Windows)
- CR (\r) (old Mac, obsolete)
To see which line endings are in the index and in the working copy the
following command can be used:
`git ls-files --eol`
Git additionally provides `.gitattributes` file to specify if some files
need to have specific line endings on all platforms (either CRLF or LF).
Changed files shouldn't cause issues on modern Windows platforms because
also Git can do output conversion is core.autocrlf=true is set on
Windows and use CRLF newlines in all files in the working tree.
Unless CRLF files are tracked specifically, Git by default tracks all
files in the index using LF newlines.
2019-05-07 04:40:01 +02:00
Peter Kokot
c453196be4
Merge branch 'PHP-7.3' into PHP-7.4
...
* PHP-7.3:
Convert CRLF line endings to LF
2019-05-07 04:35:43 +02:00
Peter Kokot
d153fbc5a9
Convert CRLF line endings to LF
...
This patch simplifies line endings tracked in the Git repository and
syncs them to all include the LF style instead of the CRLF files.
Newline characters:
- LF (\n) (*nix and Mac)
- CRLF (\r\n) (Windows)
- CR (\r) (old Mac, obsolete)
To see which line endings are in the index and in the working copy the
following command can be used:
`git ls-files --eol`
Git additionally provides `.gitattributes` file to specify if some files
need to have specific line endings on all platforms (either CRLF or LF).
Changed files shouldn't cause issues on modern Windows platforms because
also Git can do output conversion is core.autocrlf=true is set on
Windows and use CRLF newlines in all files in the working tree.
Unless CRLF files are tracked specifically, Git by default tracks all
files in the index using LF newlines.
2019-05-07 04:34:37 +02:00
Peter Kokot
e0aea5539b
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Remove empty section
2019-05-07 04:26:09 +02:00
Peter Kokot
b8caba92e2
Remove empty section
2019-05-07 04:26:03 +02:00
Peter Kokot
206476f7df
Merge branch 'PHP-7.4'
...
* PHP-7.4:
[ci skip] Add password registry RFC to changelog
2019-05-07 02:23:07 +02:00
Peter Kokot
88f64d4a7b
[ci skip] Add password registry RFC to changelog
2019-05-07 02:22:29 +02:00
Peter Kokot
9f26162ae4
Merge branch 'PHP-7.4'
...
* PHP-7.4:
[ci skip] Rename libbcmath license file to LICENSE
2019-05-07 01:10:05 +02:00
Peter Kokot
eb9ad31b48
[ci skip] Rename libbcmath license file to LICENSE
...
- More common filename accross the PHP repository
- Additionally, this patch replaces some legacy form feed (FF or ^L)
characters (for printers) to LF (\n) newline character.
2019-05-07 01:09:25 +02:00
Peter Kokot
5d829dd0ce
Merge branch 'PHP-7.4'
...
* PHP-7.4:
[ci skip] Move OpenLDAP license to redistributable info file
2019-05-06 23:04:19 +02:00
Peter Kokot
975cb57930
[ci skip] Move OpenLDAP license to redistributable info file
2019-05-06 23:02:46 +02:00
Dmitry Stogov
66a1d821d3
Improved code for unordered comparison
2019-05-06 16:07:48 +03:00
Dmitry Stogov
17a43fe2a5
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Fix double incremenation in ffi
2019-05-06 09:45:23 +03:00
Peter Kokot
426bcdf021
Fix double incremenation in ffi
...
This removes the warning of:
`incremented both in the loop header and in the loop body` in the
compilation step.
2019-05-06 09:45:11 +03:00
Peter Kokot
49a0792d64
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Rename uppercase JPG file to lowercase jpg
2019-05-06 05:21:00 +02:00
Peter Kokot
c025cf47c0
Rename uppercase JPG file to lowercase jpg
...
To not introduce new file type and since it is not related to a test.
Lowercase JPG file type more common and recommended to use.
2019-05-06 05:18:27 +02:00
Peter Kokot
4409368467
Merge branch 'PHP-7.4'
...
* PHP-7.4:
[ci skip] Move wddx to dedicated section
2019-05-06 00:58:28 +02:00
Peter Kokot
6be6cac6f4
[ci skip] Move wddx to dedicated section
2019-05-06 00:58:21 +02:00
Peter Kokot
c9fa674d51
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Remove phpextdist
2019-05-06 00:15:43 +02:00
Peter Kokot
e58fddf7a3
Remove phpextdist
...
This script hasn't been used since using PEAR as a package manager for
PHP extensions since it is using Makefile.in as an indicator if the
current directory is extension. Instead of this script extensions can
be packaged differently and more properly with either current PEAR
or with some other manual method.
2019-05-06 00:15:20 +02:00
Peter Kokot
f4b4a47e7f
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Remove duplicate test file
2019-05-06 00:11:59 +02:00
Peter Kokot
340c39acfa
Remove duplicate test file
...
Files ext/oci8/tests/field_funcs0.phpt and
ext/oci8/tests/field_funcs.phpt are the same.
2019-05-06 00:11:40 +02:00
Peter Kokot
46bcabeb05
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Remove duplicate getimagesize_variation_003 test
2019-05-05 23:55:23 +02:00
peter279k
8417142a8f
Remove duplicate getimagesize_variation_003 test
2019-05-05 23:55:09 +02:00
Jakub Zelenka
187872503a
Merge branch 'PHP-7.4'
2019-05-05 21:06:58 +01:00
Jakub Zelenka
b348c46e29
Merge branch 'PHP-7.3' into PHP-7.4
2019-05-05 21:06:30 +01:00
Jakub Zelenka
36a7d9fca4
Merge branch 'PHP-7.2' into PHP-7.3
2019-05-05 21:05:55 +01:00
Jakub Zelenka
9977de0028
Fix OpenSSL online test for ca context
...
The php.net is redirected to https so use nginx.org
2019-05-05 21:04:28 +01:00
Christoph M. Becker
848ce03347
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Properly initialize variable
2019-05-05 17:50:15 +02:00
Christoph M. Becker
30409d6753
Properly initialize variable
...
Not all code paths assign to `handle`, even though it may be used, so
we make sure that it is initialized to a sane value in the first place.
2019-05-05 17:49:54 +02:00
Christoph M. Becker
af8dc55601
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Fix typo
2019-05-05 15:41:05 +02:00
Christoph M. Becker
a760c79f1e
Fix typo
2019-05-05 15:40:33 +02:00
Christoph M. Becker
679d0402ab
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Re-add common PDO tests to Firebird test suite
2019-05-04 14:25:06 +02:00
Christoph M. Becker
e4757ecc80
Re-add common PDO tests to Firebird test suite
...
These have been inadvertently dropped when changing the test suite to
not require ext/interbase anymore, so we add them back.
We also change the required environment variable names to match the
usual PDO names. Particularly, we replace `PDO_FIREBIRD_TEST_HOSTNAME`
and `_DATABASE` with the more flexible `PDO_FIREBIRD_TEST_DSN`.
2019-05-04 14:24:15 +02:00
Christoph M. Becker
14d48a58a1
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Fix memory leak exhibited by bug_aaa.phpt
2019-05-04 14:20:59 +02:00
Christoph M. Becker
ae21dc46da
Fix memory leak exhibited by bug_aaa.phpt
...
Since a statement may be executed multiple times, we need to free
already allocated storage for output data before allocating new
storage.
2019-05-04 14:20:11 +02:00
Peter Kokot
4e88112adb
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Fix undefined variable, and remove unused test-pdo
2019-05-03 18:14:53 +02:00