Dmitry Stogov
fd4e2e77dc
Merge branch 'PHP-7.4'
...
* PHP-7.4:
ARM64 may be big endian
2019-05-13 13:34:07 +03:00
Dmitry Stogov
3322ae2eb2
ARM64 may be big endian
2019-05-13 13:33:03 +03:00
Dmitry Stogov
8f4f5fc040
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Load 8 bytes at a time in hash_func. (Sebastian Pop)
2019-05-13 12:36:49 +03:00
Dmitry Stogov
071793a0bb
Load 8 bytes at a time in hash_func. (Sebastian Pop)
2019-05-13 12:34:53 +03:00
Nikita Popov
451eb4464a
Merge branch 'PHP-7.4'
2019-05-13 11:06:44 +02:00
Nikita Popov
bec6ff9021
Merge branch 'PHP-7.3' into PHP-7.4
2019-05-13 11:06:35 +02:00
Nikita Popov
bec68d59a2
Merge branch 'PHP-7.2' into PHP-7.3
2019-05-13 11:06:14 +02:00
Theodore Brown
b6b15fc65c
Fix #77993 : Wrong parse error for invalid hex literal on Windows
...
If a PHP file contains an invalid hex literal such as `0x_10`, the expected error
is `Parse error: syntax error, unexpected 'x_10' (T_STRING) in %s on line %d`.
This already worked correctly on Linux, but on Windows prior to this patch a different
error was produced: `Parse error: Invalid numeric literal in %s on line %d`.
2019-05-13 11:04:56 +02:00
Peter Kokot
2cf90bb2f0
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Normalize comments in *nix build system m4 files
2019-05-12 18:51:50 +02:00
Peter Kokot
75fb74860d
Normalize comments in *nix build system m4 files
...
Normalization include:
- Use dnl for everything that can be ommitted when configure is built in
favor of the shell comment character # which is visible in the output.
- Line length normalized to 80 columns
- Dots for most of the one line sentences
- Macro definitions include similar pattern header comments now
2019-05-12 18:43:03 +02:00
Peter Kokot
64b98c0e33
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Remove dead DEBUG_CFLAGS setting
2019-05-11 19:53:20 +02:00
Peter Kokot
836bbb4e2c
Remove dead DEBUG_CFLAGS setting
...
The USE_MAINTAINER_MODE has been removed via
a4c484a4d8 and
43ed903949
2019-05-11 19:53:14 +02:00
Peter Kokot
34bc920382
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Remove unused functions
2019-05-09 19:07:39 +02:00
Peter Kokot
ec518aef10
Remove unused functions
...
- _get_zval_ptr_cv_deref_BP_VAR_UNSET
- _get_zval_ptr_cv_deref_BP_VAR_IS
- _get_zval_ptr_cv_deref_BP_VAR_RW
- _get_zval_ptr_cv_deref_BP_VAR_W
2019-05-09 19:07:24 +02:00
Nikita Popov
b8c2b43778
Merge branch 'PHP-7.4'
2019-05-09 14:35:25 +02:00
Nikita Popov
d0a56f707f
Fixed bug #71030
...
Make sure to always fetch the RHS of a list assignment first, instead
of special casing known self-assignments, which will not detect cases
using references correctly.
As a side-effect, it is no longer possible to do something like
byRef(list($x) = $y). This worked by accident previously, but only
if $y was a CV and the self-assignment case did not trigger.
However it shouldn't work for the same reason that byRef($x = $y)
doesn't. Conversely byRef(list(&$x) = $y) and byRef($x =& $y)
continue to be legal.
2019-05-09 14:31:39 +02:00
Peter Kokot
a7bd736c2c
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Remove unused functions
2019-05-08 22:02:49 +02:00
Peter Kokot
3c92b79ea0
Remove unused functions
...
- zend_mm_bitset_find_zero
- zend_mm_bitset_find_one
- zend_mm_bitset_find_zero_and_set
- zend_is_by_ref_func_arg_fetch
2019-05-08 22:02:39 +02:00
Dmitry Stogov
370f4e4c6f
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Improve PHP hash function. See Daniel Lemire's blog post https://lemire.me/blog/2016/07/21/accelerating-php-hashing-by-unoptimizing-it/
2019-05-08 16:48:42 +03:00
Dmitry Stogov
90e285f6fd
Improve PHP hash function.
...
See Daniel Lemire's blog post https://lemire.me/blog/2016/07/21/accelerating-php-hashing-by-unoptimizing-it/
2019-05-08 16:47:12 +03:00
Nikita Popov
6ada4db002
Merge branch 'PHP-7.4'
2019-05-08 12:13:11 +02:00
Nikita Popov
f778e1a0b2
Refactor inheritance type check implementation
...
Extract the self/parent name resolution code and drop unnecessary
string copies/releases. Store the fe/proto types in local variables.
2019-05-08 12:13:06 +02:00
Nikita Popov
11655d0974
Merge branch 'PHP-7.4'
2019-05-08 11:51:50 +02:00
Nikita Popov
5c474010fb
Deduplicate inheritance type check implementation
...
Make the check covariant (insofar as it is allowed now, i.e.
nullability and iterable) and call it with appropriate argument
order for both parameter and return types.
This makes it simpler to extend to full variance support.
2019-05-08 11:51:23 +02:00
Nikita Popov
97cce70e55
Merge branch 'PHP-7.4'
2019-05-08 11:38:10 +02:00
Nikita Popov
d5ef9c5b28
Merge branch 'PHP-7.3' into PHP-7.4
2019-05-08 11:38:03 +02:00
Nikita Popov
e2ef4e9e2f
Merge branch 'PHP-7.2' into PHP-7.3
2019-05-08 11:37:49 +02:00
Nikita Popov
d19b6aa5ba
Fix resolution of "parent" during inheritance check
...
We can't assume that the method we're checking against is part of
the parent class...
2019-05-08 11:35:26 +02:00
Nikita Popov
fc1e6b3923
Merge branch 'PHP-7.4'
2019-05-07 16:22:17 +02:00
Sebastian Pop
6fad150cfd
[AArch64] Use NEON to initialize zend_hash
...
On A72, google-benchmark measure before and after the patch:
--------------------------------------------------------------
Benchmark Time CPU Iterations
--------------------------------------------------------------
BM_hash_init_before 43.6 ns 43.6 ns 16052937
BM_hash_init_after 27.0 ns 27.0 ns 25877296
Patch written by Ali Saidi <alisaidi@amazon.com >
and Sebastian Pop <spop@amazon.com >
2019-05-07 16:21:44 +02:00
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
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
Nikita Popov
d9a2d76a43
Remove outdated info from README.ZEND_MM
...
[ci skip]
2019-05-07 09:54:46 +02:00
Nikita Popov
79f41944ba
Merge branch 'PHP-7.4'
2019-05-02 15:07:04 +02:00
Nikita Popov
f3e5bbe6f3
Implement arrow functions
...
Per RFC: https://wiki.php.net/rfc/arrow_functions_v2
Co-authored-by: Levi Morrison <levim@php.net >
Co-authored-by: Bob Weinand <bobwei9@hotmail.com >
2019-05-02 15:04:03 +02:00
Dmitry Stogov
3d2a6d9bed
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Also, use ZEND_ACC_PRELOADED for classes
2019-04-30 02:22:58 +03:00
Dmitry Stogov
8cdd215894
Also, use ZEND_ACC_PRELOADED for classes
2019-04-30 02:07:02 +03:00
Nikita Popov
cdb7ebd972
Merge branch 'PHP-7.4'
2019-04-29 09:58:56 +02:00
Nikita Popov
22e9a5e0c3
Fix typo in TRY_ASSIGN macro name
2019-04-29 09:58:45 +02:00
Peter Kokot
cabd8c12d4
Merge branch 'PHP-7.4'
...
* PHP-7.4:
Remove unused TSRM/readdir.h header
2019-04-29 00:55:59 +02:00
Peter Kokot
b931dacc88
Remove unused TSRM/readdir.h header
...
This was once part of TSRM but then got refactored into the windows
implementation win32/readdir.h directly. Instead of including such files
directly code should use zend_virtual_cwd.h which is already part of the
php.h file.
2019-04-29 00:51:13 +02:00
Dmitry Stogov
e188e4170f
Use ZEND_TRY_ASSIGN_REF_... macros for arguments passed to internal function by reference
2019-04-24 18:28:29 +03:00
Dmitry Stogov
2e4686b566
Use ZEND_TRY_ASSIGN_REF_... macros for arguments passed to internal function by reference
2019-04-24 18:16:47 +03:00
Dmitry Stogov
34db07567d
Use ZEND_TRA_ASSIGN_REF_... macros for by reference arguments of internal functions.
2019-04-24 16:14:48 +03:00