Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JIT for PHP based on DynAsm #3792

Closed
wants to merge 904 commits into from
Closed

JIT for PHP based on DynAsm #3792

wants to merge 904 commits into from

Conversation

@dstogov
Copy link
Member

@dstogov dstogov commented Feb 4, 2019

No description provided.

dstogov and others added 30 commits Aug 16, 2017
* master:
  EXPECT instead of EXPECTF
  Fixed: tests not written to pass on Windows
  cli_get_process_title() may not be empty before set
  Not skipping test on Windows and test against CLI instead
  Added: tests for cli_get_process_title / cli_set_process_title
  Do the revert properly, and put back fraction support in 7.1
  Fixed 32-bit tests as well.
  Revert "Upgrade timelib to 2017.05beta7"
  Revert "Remove removed header files from configuration files."
  Fixed stupid test
  Added timelib version to phpinfo()
* master:
  More accurate reference counting inference
* master:
  Fixed bug #75089 (preg_grep() is not reporting PREG_BAD_UTF8_ERROR after first input string)
  Fix phpize exit status
  Add dump env target
  Make ext/zend_test report itself as zend-test in `php -m'
  Fix test location
  We don't use these makefiles for compiling PHP extensions anymore (PHP4 era)
  Get rid of all these old package[2].xml files, most of these had no had a release since PHP4, or any release at all in close to 10 years, some even did not have a package registered at pecl
  Implemented FR #74781 (Add the latest PG_DIAG_* const)
  bump versions
Conflicts:
	ext/opcache/Optimizer/zend_inference.c
* master:
  Initial implementation of Escape Analysis (disabled yet).
  timelib now have a function for this, use it
  sodium ext: If sodium_init() returns 1, this is fine.
  Update NEWS
  Update NEWS
  Update NEWS
  Fixed bug #74631 (PDO_PCO with PHP-FPM: OCI environment initialized before PHP-FPM sets it up)
  Correct default value in master
  Correct default value
  Attempt to fix unstable test
* master: (21 commits)
  Enable PGO for Opcache
  Switch to non deprecated PGO options
  sodium ext: if it's a length, call it "length"!
  sodium ext: add bindings for sodium_pad() and sodium_unpad()
  Fixed bug #75111 (Memory disclosure or DoS via crafted .bmp image)
  sodium ext: restore sodium_remove_param_values_from_backtrace() call
  sodium ext: sync sodium_crypto_kdf_derive_from_key() with the standalone ext
  sodium ext: Constants were renamed SODIUM_* Adjust error messages accordingly.
  From documentation, only the sign of returned value is relevant
  Jani is not a member of the QA team anymore, and have not been for years
  Kill compiler warnings in ext/phar
  Kill compiler warnings in ext/standard
  Kill compiler warnings in ext/xml
  Kill compiler warnings in ext/hash
  Kill a compiler warning in ext/mysqlnd
  Kill compiler warnings in ext/com_dotnet
  Kill a compiler warning
  Fixed typo in FPM error message
  Use ZEND_HASH_APPLY_SHIFT macro instead of hard-coded literal
  Consolidate Valgrind logic into a single var and class
  ...
* master: (33 commits)
  Extend SCCP pass with support for elements of non-escaping arrays
  Fix symbol name
  Removed support for BeOS, development for BeOS was supported 17 years ago.
  Remove this old obsolete TODO file
  ext/sodium: the second parameter of sodium_hex2bin() is optional
  ext/sodium: AI_StringRef_And_String -> AI_StringRefAndString for consistency
  ext/sodium: sort functions list
  Fixed escaping instructions
  Update NEWS for 7.2.0RC2
  Update NEWS for PHP 7.2.0RC1
  Fixed tests titels
  Added few Optimizer tests
  Accurate handling of ZEND_ASSIGN_OBJ
  Check for user defined classes
  Escpaing objects can't have destructors, so their assignment don't make side effects and may be eliminated.
  Fix constant references in error messages in ext/sodium
  Aliased varaibles may escape
  Make assignment to elements of non-esaping arrays and objects removable by DCE pass.
  Enable escape analysis
  Include variables with false dependencies into equi escape sets.
  ...
* master:
  Detect undefined variable usage
* master:
  Support for implicit array/object allocations
* master:
  Remove dead construction of non-escaping arrays and objects
  Extend SCCP to support properties of non-escaping objects
  Fixed SSA construction for PRE_INC_OBJ and family (these opcodes change the source object)
  move AC_DEFINE in the right position (in bundled lib conditon)
  Automatically load OpenSSL configuration file
  Do not explicitly initialize and clean up OpenSSL for OpenSSL 1.1
* master:
  Improved check to avoid removing of dead code that may throw exception.
* master:
  Fix command
  Fixed SCCP rewinding on partial_array|object phi
  Fixed SCCP on PHI(partial_object#1, partial_object#2)
  Fixed SCCP on PHI(contant_array, partial_array)
  Fixed bug #75139 (libgd/gd_interpolation.c:1786: suspicious if ?)
  Added skipif.inc
  Fixed bug #75143 new method setEncryptionName() seems not to exist in ZipArchive
  Yet one DLL to ignore
  Remove dead allocations of non-escaping objects
  Objects with constructors escape
  Make for exclusion per regex
  Extend ignore list for DLLs to not to look after
  Fix `nmake install` fails when there are no shared extensions
  Copy dependencies of the core DLL in `nmake snap` for statically-compiled extensions when packaging builds
* master:
  Fixed incorrect optimizaton (update of jump instructions should be also reflected in CFG update)
  Fixed typo
  Prevent duplicate debug output
* master:
  Revert "Fixed incorrect optimizaton (update of jump instructions should be also reflected in CFG update)"
  improve warn (bzip2 requires libzip >= 1.3.0)
  libzip 1.3.0 supports also bz2 compression
* master:
  Fixed incorect constant conditional jump elimination
* master:
  Fixed tests
  NEWS
  Fixed Bug #75149 redefinition of typedefs ttinfo and t1info
dstogov added 2 commits Feb 22, 2019
@weltling

This comment has been minimized.

Copy link

@weltling weltling commented on ext/opcache/jit/zend_jit_vm_helpers.c in 3aa1756 Feb 25, 2019

This is causing zend_jit_vm_helpers.c(169): error C2036: 'void *': unknown size with MSVC, where GCC blames about char* otherwise :) I'll check to unify it another way, or the ifdef were perhaps also ok.

Thanks.

This comment has been minimized.

Copy link
Member Author

@dstogov dstogov replied Feb 25, 2019

OK. I fixed this.

dstogov added 7 commits Feb 25, 2019
* master: (27 commits)
  Fix assertion in Exception::getMessage() if $message is a ref
  Fix some directory collisions in dir tests
  Fix some port collisions in sockets tests
  Fixed compiler warning
  Update NEWS
  Fixed bug #77660 (Segmentation fault on break 2147483648)
  Update NEWS
  Fixed bug #77664 (Segmentation fault when using undefined constant in custom wrapper)
  Revert "Disable bug77390.phpt"
  Print empty string in test for but 77390 just once
  Use spaces instead of tabs in bug 77390 test
  Remove unused PHP_AC_BROKEN_SPRINTF and AC_ZEND_BROKEN_SPRINTF
  Replace Hebrew characters with escape sequences
  Disable bug77390.phpt
  Fix anon class handling in ext mode
  Remove result def during jmp_set optimization
  Fix removal of unreachable code in SCCP
  Fix inference warning about missing key type
  Fix get_unresolved_initializer for static props
  Fix directory collisions in zlib tests
  ...
* master: (33 commits)
  Test for function posix_getpwnam() basic functionality
  NEWS
  Removed pdo_odbc.db2_instance_name
  Fix file permissions
  Remove PHP_DECLARED_TIMEZONE and HAVE_DECLARED_TIMEZONE
  Free map_base_ptr during post_startup
  Don't remove CONST CAST in CONCAT operand
  Remove unnecessary convert_to_string_safe macro
  Fix leak in resolve_property_types
  Don't return inside _DO_THROW macro
  Remove more leftovers of mysqli embedded server
  Fixed bug #50020 (DateInterval:createDateFromString() silently fails)
  Sync with 7be0e06
  Remove dead code
  Remove mysqli embedded server support
  Sync with behavior change in OpenSSL 1.1.1b
  Use zpp string argument in imagecreatefromstring()
  Disable test parallelization on AppVeyor with opcache
  Mark ext/xmlreader/tests/bug70309.phpt as online test
  Fixed bug #77669
  ...
@weltling
Copy link
Contributor

@weltling weltling commented Mar 1, 2019

A dev snapshot for Windows is available here https://windows.php.net/downloads/snaps/ostc/jit-dynasm/20190301/. Everyone interested please test carefully and report bugs :)

Thanks.

dstogov added 3 commits Mar 4, 2019
* master: (36 commits)
  Don't generate script for proc_open_pipes tests
  Use separate output files in x2gd tests
  Use separate directories for win32 dir tests
  Fix test error message
  Fix bug #77563 - Uninitialized read in exif_process_IFD_in_MAKERNOTE
  Fix bug #77540 - Invalid Read on exif_process_SOFn
  Fix integer overflows on 32-bits
  Fix #77431 SplFileInfo::__construct() accepts NUL bytes
  Fix bug #77396 - Null Pointer Dereference in phar_create_or_parse_filename
  Fix bug #77586 - phar_tar_writeheaders_int() buffer overflow
  Update NEWS
  Fix test error message
  Fix bug #77563 - Uninitialized read in exif_process_IFD_in_MAKERNOTE
  Fix bug #77540 - Invalid Read on exif_process_SOFn
  Fix integer overflows on 32-bits
  Fix #77431 SplFileInfo::__construct() accepts NUL bytes
  Fix bug #77396 - Null Pointer Dereference in phar_create_or_parse_filename
  [ci skip] Remove oniguruma and libzip leftovers
  Remove outdated hack for AIX 4
  Remove AC_PROG_CC_C_O
  ...
* master:
  Remove custom error handler in mbstring tests
  Remove more zpp error tests
  Remove tests for zpp failure conditions
  add NEWS entry
  Fixed support for callbacks with "void" return type
  Update NEWS
  Fix bug #77630 - safer rename() procedure
  Replace --with-gd by --enable-gd for Travis
  Fix test portability
  Update NEWS
  Fixed bug #77691
  Move Makefile.global and Makefile.gcov to build directory
  Revert "Detect invalid uses of parent:: during compilation"
  Replace PHP_TM_GMTOFF with AC_CHECK_MEMBERS
  Remove mkinstalldirs, install-sh and missing
  add NEWS entries
@weltling
Copy link
Contributor

@weltling weltling commented Mar 5, 2019

dstogov added 9 commits Mar 12, 2019
* master: (59 commits)
  weakrefs upgrading note
  zend_weakrefs
  Die hard if mc.exe or mt.exe not found
  SQLite3: add DEFENSIVE config for SQLite >= 3.26.0 as a mitigation strategy against potential security flaws
  Fixed bug #76717
  Free trampolines from get_closure in is_callable
  Closure::fromCallable() supports only regular methods and magic method invoked through __call()/__callStatic(). It doesn't support method of internal classes invoked through C object or class handlers. This commit prevents crash described at bug #77708, but doesn't implement the desired behavior.
  Reset fields
  Fixed bug #77707 (FFI loses type information for opaque types)
  Adjust tests for zpp TypeError change
  Remove some unnecessary error handler setting
  Intl: Don't separately report "bad arguments" errors
  Make zpp failures always throw, independent of strict_types
  Fixed bug #77706 (Improve error messages in FFI for incompatible arguments)
  Fix #71890: Add support for crc32c Castagnoli's polynomial.
  Fix shm api detection test for opcache module on FreeBSD
  drop unused parameter from zend_startup
  Remove function_table var from the caller
  curl_exec: remove bad check for CURLE_PARTIAL_FILE
  This option doesn't exist for a long time.
  ...
* master:
  Better data packing
  Avoid reinitailization of ZTS cache pointer. Initialize it once in TSRM.c
  Fixed ZTS cache usage
  Fixed ZTS cache usage
  Fixed ZTS cache usage
  Fixed ZTS cache usage
  Switch to use ZTS cache
  Cleanup unused module globals
  Fixed ZTS cache usage
  Fixed bug #77722
  add --enable-rtld-now in upgrade info
  use DL_LOAD in litespeed
  add --enable-rtld-now build option to change dlopen behavior
* master:
  Implemented a faster way to access predefined TSRM resources - CG(), EG(), etc.
  Integrate README.EXT_SKEL to help option
  test reversed
  Fix duplicate symbols _zend_ce_weakrefs
  [ci skip] Mention removed m4 macros
  Sync with ZEND_ENABLE_STATIC_TSRMLS_CACHE enablement in ext/mbstring
* master:
  Fixed bug #77697 (Crash on Big_Endian platform)
  Add tests to XMLReader
  Fix failing test
  Clean build system
  Remove HAVE_STRFTIME
  Fix weakref object handlers for master
  ext/session: remove the redundant convert_to_long
  Fixed bug #77742
  updated NEWS
  Fixed bug #77738 (Nullptr deref in zend_compile_expr)
@weltling
Copy link
Contributor

@weltling weltling commented Mar 15, 2019

New Windows builds are available right here https://windows.php.net/downloads/snaps/ostc/jit-dynasm/20190315/.

Thanks.

dstogov added 2 commits Mar 21, 2019
* master: (73 commits)
  fix test
  Remove usage of HAVE_HASH_EXT and COMPILE_DL_HASH as ext/hash is always available (master only)
  Sync the changes to ext/filter with 7.4, now that it works.
  Unbundle ext/wddx
  Fix tests after fix for #76717
  Fixed bug #74345
  NEWS
  Revert "Fix #77609: Tests from mailparse extension fails"
  Mark bug76348.phpt as online test
  Fixed incorrect error message
  Fixed typo
  Upgrade deprecated directives and use non-posix bison
  Remove extension readmes
  Bump versions for 7.2.18
  comment out sqlite3.defensive = 1 follow common practice, this is the default value
  Prepare main branch for PHP 7.3.5
  fix test for upcoming pcre2 10.33
  Respect OFFSET_CAPTURE when padding preg_match_all() results
  Fixed bug #76127
  Don't create a new array for empty/null match every time
  ...
* master: (54 commits)
  Add additional protected visibility prototype test
  Revert "Switch to bison location tracking"
  fix build: readline support must be disabled by default in phpdbg
  Validate subject encoding in mb_split and mb_ereg_match
  Validate pattern against mbregex encoding
  Support for __restrict and few GCC attributes
  Use semantic predicates to simplify lookahead and reduce backtracking
  Treat abstract ctors the same, regardless of origin
  Fix lineno for more inheritance errors
  Make line numbers for inheritance errors more precise
  Consider phpdbg as cli
  Fix #77805 phpdbg build fails when readline is shared
  Validate interoperability between libsodium and libargon for argon2i(d) hashing
  Increase default time cost for argon2 password hashing
  more work on phpdbg conditional breaks
  Fix #77800 phpdbg segfaults on conditional breakpoints
  Add minimum required PHP version to run-tests.php
  remove last enable-maintainer-zts mention from source
  Add zend_error_at API that accepts a filename and lineno
  Fix typos in the documentation
  ...
@cmb69
Copy link
Contributor

@cmb69 cmb69 commented Apr 26, 2019

To my knowledge, this already has been applied to master – closing.

PS: applied as 9a06876

@cmb69 cmb69 closed this Apr 26, 2019
@carusogabriel carusogabriel added this to the PHP 8.0 milestone May 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
10 participants