1
0
mirror of https://github.com/php/php-src.git synced 2026-04-29 11:13:36 +02:00
Commit Graph

3792 Commits

Author SHA1 Message Date
Tyson Andre df0fa5b178 Clean up remaining opcodes for foreach([] as $x)
Previously, two useless FE_RESET_R and FE_FREE would be left over whether the empty array
was from a literal, a variable, or a class constant.

This doesn't pick up the RESET_RW case due to a weakness in our "may throw"
modeling. (for foreach by reference).

Co-Authored-By: Nikita Popov <nikita.ppv@gmail.com>
using https://gist.github.com/nikic/58d367ad605e10299f5433d2d83a0b5b

Closes GH-4949
2021-01-07 09:43:31 -05:00
Nikita Popov 3460af5262 Fold dirname in sccp for non-windows platforms 2021-01-07 14:27:12 +01:00
Nikita Popov 63263abff8 Remove unnecessary INDIRECT checks in JIT helpers 2021-01-06 14:28:17 +01:00
Nikita Popov 3c68f38fda Restrict allowed usages of $GLOBALS
This restricts allowed usage of $GLOBALS, with the effect that
plain PHP arrays can no longer contain INDIRECT elements.

RFC: https://wiki.php.net/rfc/restrict_globals_usage

Closes GH-6487.
2021-01-06 12:46:24 +01:00
Nikita Popov 73f989a83b Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix/improve mysqli stubs
2021-01-06 11:29:38 +01:00
Dharman 44a311dbbe Fix/improve mysqli stubs
* mysqli_commit $flags default value is 0, not -1.
* A number of functions cannot actually return null.
* mysqli_poll parameter names were incorrect, as this function
  has a different signature from select.
* fetch functions apart from fetch_all can return false on failure.
2021-01-06 11:28:45 +01:00
Nikita Popov ab9f497b90 Fix curl_getinfo() funcinfo
This can now return any type with any refcount.
2021-01-04 18:57:57 +01:00
Dmitry Stogov 984df80e27 Merge branch 'PHP-8.0'
* PHP-8.0:
  Initialize EX(call)->func by single instruction
  Reuse value stored in %r0 instead of immediate operand
2020-12-29 13:21:06 +03:00
Dmitry Stogov da0ca53f39 Initialize EX(call)->func by single instruction 2020-12-29 13:20:10 +03:00
Dmitry Stogov 56fde2a381 Reuse value stored in %r0 instead of immediate operand 2020-12-29 13:18:56 +03:00
Dmitry Stogov 14b5fff632 Merge branch 'PHP-8.0'
* PHP-8.0:
  Eliminate redundand comparison insructions
2020-12-24 16:59:27 +03:00
Dmitry Stogov 23bbff2b05 Eliminate redundand comparison insructions 2020-12-24 16:58:54 +03:00
Christoph M. Becker b85f0d1cd0 Convert file_info resources to objects
Besides our general desire to get rid of the legacy resource types,
this is particularly appealing for fileinfo, because there are already
respective objects.

Closes GH-5987.
2020-12-20 18:19:22 +01:00
Dmitry Stogov 6c05b33e84 Merge branch 'PHP-8.0'
* PHP-8.0:
  Optimize out result value of ASSIGN, ASSIGN_OP and INC/DEC opcodes, if possible.
2020-12-15 14:34:21 +03:00
Dmitry Stogov de78786566 Optimize out result value of ASSIGN, ASSIGN_OP and INC/DEC opcodes, if possible. 2020-12-15 14:30:58 +03:00
Nikita Popov 0896f36bc6 Merge branch 'PHP-8.0'
* PHP-8.0:
  JIT: Update invalid opcache.jit INI value message to include "tracing" and "function" values
2020-12-15 10:18:54 +01:00
Ayesh Karunaratne 724e241c9d JIT: Update invalid opcache.jit INI value message to include "tracing" and "function" values
`opcache.jit` accepts `tracing` and `function` as aliases, but they were not mentioned in the start-up INI warning message.
This updates the error message to include all possible values.

Closes GH-6490.
2020-12-15 10:18:33 +01:00
Nikita Popov f9942b061d Merge branch 'PHP-8.0'
* PHP-8.0:
  JIT disabled build fix.
2020-12-15 09:51:51 +01:00
David Carlier 1e6c7e776c JIT disabled build fix.
Closes GH-6514.
2020-12-15 09:51:16 +01:00
Dmitry Stogov f1e2cd8625 Merge branch 'PHP-8.0'
* PHP-8.0:
  Remove unused flag
2020-12-14 15:29:34 +03:00
Dmitry Stogov b3377028dc Remove unused flag 2020-12-14 15:29:21 +03:00
Dmitry Stogov c3c7b673d1 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed bug #80506 (Immediate SIGSEGV upon ini_set("opcache.jit_debug", 1))
2020-12-14 15:28:27 +03:00
Dmitry Stogov a12e7affd7 Fixed bug #80506 (Immediate SIGSEGV upon ini_set("opcache.jit_debug", 1)) 2020-12-14 15:26:11 +03:00
Dmitry Stogov 6ec7d4c406 Merge branch 'PHP-8.0'
* PHP-8.0:
  Eliminate some repeatable IS_REFERENCE checks
2020-12-10 14:46:03 +03:00
Dmitry Stogov dde5572937 Eliminate some repeatable IS_REFERENCE checks 2020-12-10 14:45:54 +03:00
Dmitry Stogov d92b001d50 Merge branch 'PHP-8.0'
* PHP-8.0:
  Perform early guard type check for result of FETCH_CONSTANT
2020-12-09 22:25:04 +03:00
Dmitry Stogov e9f9e9f863 Perform early guard type check for result of FETCH_CONSTANT 2020-12-09 22:24:03 +03:00
Dmitry Stogov 974b4429cd Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed IS_32BIT/IS_SIGNED_32BIT mess
2020-12-09 17:17:25 +03:00
Dmitry Stogov 8d268e8443 Fixed IS_32BIT/IS_SIGNED_32BIT mess 2020-12-09 17:16:54 +03:00
Dmitry Stogov 75d7e606cc Merge branch 'PHP-8.0'
* PHP-8.0:
  Avoid unnecessary checks
2020-12-08 13:11:05 +03:00
Dmitry Stogov db34491a62 Avoid unnecessary checks 2020-12-08 13:10:35 +03:00
Dmitry Stogov b9ee87583b Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed bug #80480 (Segmentation fault with JIT enabled)
2020-12-07 13:29:11 +03:00
Dmitry Stogov 7971602574 Fixed bug #80480 (Segmentation fault with JIT enabled) 2020-12-07 13:28:37 +03:00
Christoph M. Becker 52bd07e204 Merge branch 'PHP-8.0'
* PHP-8.0:
  Fix failing VirtualProtect() calls
2020-12-02 16:53:43 +01:00
Christoph M. Becker 72cd5793be Fix failing VirtualProtect() calls
Whenever JIT is disabled due to incompatibilities, we also need to set
`JIT_G(on)` to zero.

Closes GH-6470.
2020-12-02 16:51:50 +01:00
Dmitry Stogov 828f6806f3 Merge branch 'PHP-8.0'
* PHP-8.0:
  Bug #80447 (Strange out of memory error when running with JIT)
2020-12-01 16:43:41 +03:00
Dmitry Stogov 1674c96c0b Bug #80447 (Strange out of memory error when running with JIT) 2020-12-01 16:43:05 +03:00
Dmitry Stogov c3a6cf01af Merge branch 'PHP-8.0'
* PHP-8.0:
  Skip test if JIT is not available
2020-12-01 09:59:25 +03:00
Dmitry Stogov 31eafedf2e Skip test if JIT is not available 2020-12-01 09:58:33 +03:00
Dmitry Stogov e1656bac7d Merge branch 'PHP-8.0'
* PHP-8.0:
  Preallocate stack space for JIT in execute_ex() to eliminate JIT prologue/epilogue.
2020-11-30 17:56:32 +03:00
Dmitry Stogov 841b00f641 Preallocate stack space for JIT in execute_ex() to eliminate JIT prologue/epilogue. 2020-11-30 17:56:08 +03:00
Dmitry Stogov 68520291af Merge branch 'PHP-8.0'
* PHP-8.0:
  Fixed "may be used uninitialized" compilation warnings
2020-11-30 17:47:02 +03:00
Dmitry Stogov 5f36d0497f Fixed "may be used uninitialized" compilation warnings 2020-11-30 17:46:43 +03:00
Dmitry Stogov a3d0752a0a Merge branch 'PHP-8.0'
* PHP-8.0:
  Hide phpdbg/JIT incompatibility macro (JIT is disabled for phpdbg)
2020-11-30 16:43:04 +03:00
Dmitry Stogov a0baa09b99 Hide phpdbg/JIT incompatibility macro (JIT is disabled for phpdbg) 2020-11-30 16:42:17 +03:00
Dmitry Stogov 034270d69a Merge branch 'PHP-8.0'
* PHP-8.0:
  Disable JIT with incompatible third-party extensions
2020-11-30 13:59:33 +03:00
Dmitry Stogov d5a82e2c4e Disable JIT with incompatible third-party extensions 2020-11-30 13:58:34 +03:00
Nikita Popov 89891d75c3 Merge branch 'PHP-8.0'
* PHP-8.0:
  Only replace IN_ARRAY result type for JMPZ/JMPNZ
2020-11-30 11:19:13 +01:00
Nikita Popov fdb05b92bf Only replace IN_ARRAY result type for JMPZ/JMPNZ
Replacing the result type in the general case is dangerous,
because not all opcodes support both VAR and TMP. One common case
is the in_array() result being passed to SEND_VAR, which would
have to be changed to SEND_VAL.

Rather than complicating this logic, reduce the scope to only
doing the type replacement for JMPZ and JMPNZ. The only reason
we're doing this in the first place is to enable the smart branch
optimization, so we can limit it to the relevant opcodes. Replacing
the result type may be marginally useful in other cases as well
(as it may avoid reference checks), but not worth the bother.
2020-11-30 11:18:21 +01:00
Christoph M. Becker b1a30d8ab1 Fix typos in comments 2020-11-28 13:52:46 +01:00