diff --git a/docs/bootstrap-inventory.md b/docs/bootstrap-inventory.md index b6f87cf5204..e0fe43fb217 100644 --- a/docs/bootstrap-inventory.md +++ b/docs/bootstrap-inventory.md @@ -8,11 +8,11 @@ Regenerate: `php script/bootstrap-inventory.php` | Metric | Count | |--------|------:| -| PHP files on vm.php path | 4222 | -| Phase A inventory files (M2 ratio SSOT) | 4222 | +| PHP files on vm.php path | 4223 | +| Phase A inventory files (M2 ratio SSOT) | 4223 | | Phase A ratio-deferred paths | 0 | | Source constructs flagged (blockers) | 0 | -| Source constructs flagged (warnings) | 11382 | +| Source constructs flagged (warnings) | 11386 | ## Compiler CFG gaps (`lib/Compiler.php`) @@ -1300,7 +1300,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag | `ext/standard/MkdirJitHelper.php` | 0 | 1 | | `ext/standard/MktimeJitHelper.php` | 0 | 1 | | `ext/standard/ModfJitHelper.php` | 0 | 1 | -| `ext/standard/Module.php` | 0 | 801 | +| `ext/standard/Module.php` | 0 | 802 | | `ext/standard/ModuleRegistry.php` | 0 | 2 | | `ext/standard/MultisortJitHelper.php` | 0 | 2 | | `ext/standard/NCompareJitHelper.php` | 0 | 1 | @@ -2249,6 +2249,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag | `ext/standard/mktime.php` | 0 | 3 | | `ext/standard/modf.php` | 0 | 1 | | `ext/standard/move_uploaded_file.php` | 0 | 1 | +| `ext/standard/mt_getrandmax.php` | 0 | 1 | | `ext/standard/mt_rand.php` | 0 | 2 | | `ext/standard/mt_srand.php` | 0 | 2 | | `ext/standard/natcasesort_.php` | 0 | 1 | @@ -2707,7 +2708,7 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag | `lib/Cli/PhpcInit.php` | 0 | 1 | | `lib/Cli/PhpcRun.php` | 0 | 1 | | `lib/CloneWithSyntaxRejector.php` | 0 | 2 | -| `lib/Compiler.php` | 0 | 412 | +| `lib/Compiler.php` | 0 | 414 | | `lib/Compiler/AbstractMethodVisibilityCheck.php` | 0 | 3 | | `lib/Compiler/AsymmetricVisibilityCompileCheck.php` | 0 | 4 | | `lib/Compiler/AttributeClassRegistry.php` | 0 | 1 | @@ -12580,497 +12581,498 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag - new mt_srand (line 475) - new srand (line 476) - new getrandmax (line 477) -- new lcg_value (line 478) -- new uniqid (line 479) -- new str_pad (line 480) -- new str_split (line 481) -- new chunk_split (line 482) -- new wordwrap (line 483) -- new htmlspecialchars (line 484) -- new htmlspecialchars_decode (line 485) -- new highlight_string (line 486) -- new highlight_file (line 487) -- new show_source (line 488) -- new php_strip_whitespace (line 489) -- new htmlentities (line 490) -- new html_entity_decode (line 491) -- new get_html_translation_table (line 492) -- new get_meta_tags (line 493) -- new get_browser (line 494) -- new strip_tags (line 495) -- new header_ (line 496) -- new headers_sent (line 497) -- new connection_status (line 498) -- new fastcgi_finish_request (line 499) -- new header_register_callback (line 500) -- new register_shutdown_function (line 501) -- new readonly_ (line 502) -- new setcookie (line 503) -- new setrawcookie (line 504) -- new header_remove (line 505) -- new header_list (line 506) -- new headers_list (line 507) -- new apache_response_headers (line 509) -- new getallheaders_ (line 510) +- new mt_getrandmax (line 478) +- new lcg_value (line 479) +- new uniqid (line 480) +- new str_pad (line 481) +- new str_split (line 482) +- new chunk_split (line 483) +- new wordwrap (line 484) +- new htmlspecialchars (line 485) +- new htmlspecialchars_decode (line 486) +- new highlight_string (line 487) +- new highlight_file (line 488) +- new show_source (line 489) +- new php_strip_whitespace (line 490) +- new htmlentities (line 491) +- new html_entity_decode (line 492) +- new get_html_translation_table (line 493) +- new get_meta_tags (line 494) +- new get_browser (line 495) +- new strip_tags (line 496) +- new header_ (line 497) +- new headers_sent (line 498) +- new connection_status (line 499) +- new fastcgi_finish_request (line 500) +- new header_register_callback (line 501) +- new register_shutdown_function (line 502) +- new readonly_ (line 503) +- new setcookie (line 504) +- new setrawcookie (line 505) +- new header_remove (line 506) +- new header_list (line 507) +- new headers_list (line 508) +- new apache_response_headers (line 510) - new getallheaders_ (line 511) -- new apache_getenv_ (line 512) -- new apache_setenv_ (line 513) -- new apache_note (line 514) -- new apache_get_version (line 515) -- new http_get_last_response_headers (line 518) -- new get_last_response_headers (line 519) -- new http_clear_last_response_headers (line 520) -- new get_headers (line 522) -- new ob_start (line 523) -- new ob_gzhandler (line 524) -- new ob_get_clean (line 525) -- new ob_get_contents (line 526) -- new ob_get_flush (line 527) -- new ob_end_clean (line 528) -- new ob_get_length (line 529) -- new ob_end_flush (line 530) -- new flush_ (line 531) -- new ob_get_level (line 532) -- new ob_get_status (line 533) -- new ob_implicit_flush (line 534) -- new ob_flush (line 535) -- new ob_clean (line 536) -- new ob_list_handlers (line 537) -- new http_response_code (line 538) -- new output_add_rewrite_var (line 539) -- new output_reset_rewrite_vars (line 540) -- new json_encode (line 541) -- new json_decode (line 542) -- new json_validate (line 543) -- new serialize (line 544) -- new unserialize (line 545) -- new json_last_error_ (line 546) -- new json_last_error_msg_ (line 547) -- new web_int (line 548) -- new web_string (line 549) -- new web_bool (line 550) -- new urlencode (line 551) -- new rawurlencode (line 552) -- new http_build_query (line 553) -- new request_parse_body (line 554) -- new parse_str (line 555) -- new urldecode (line 556) -- new rawurldecode (line 557) -- new parse_url (line 558) -- new dirname (line 559) -- new basename (line 560) -- new realpath (line 561) -- new realpath_cache_get (line 562) -- new realpath_cache_size (line 563) -- new pathinfo (line 564) -- new file_get_contents (line 565) -- new readfile (line 566) -- new mime_content_type (line 567) -- new mail (line 568) -- new file_ (line 569) -- new readline (line 570) -- new readline_info (line 571) -- new readline_add_history (line 572) -- new readline_clear_history (line 573) -- new readline_list_history (line 574) -- new readline_read_history (line 575) -- new readline_write_history (line 576) -- new readline_completion_function (line 577) -- new readline_callback_handler_install (line 578) -- new readline_callback_read_char (line 579) -- new readline_callback_handler_remove (line 580) -- new readline_on_new_line (line 581) -- new readline_redisplay (line 582) -- new file_put_contents (line 583) -- new file_exists (line 584) -- new filesize (line 585) -- new filemtime (line 586) -- new disk_free_space (line 587) -- new disk_total_space (line 588) -- new diskfreespace (line 589) -- new disktotalspace (line 590) -- new dl (line 591) -- new fileatime (line 592) -- new filectime (line 593) -- new fileinode (line 594) -- new fileowner (line 595) -- new filegroup (line 596) -- new clearstatcache_ (line 597) -- new stat_ (line 598) -- new lstat_ (line 599) -- new fstat_ (line 600) -- new fileperms (line 601) -- new is_file (line 602) -- new is_dir (line 603) -- new is_readable (line 604) -- new is_writable (line 605) +- new getallheaders_ (line 512) +- new apache_getenv_ (line 513) +- new apache_setenv_ (line 514) +- new apache_note (line 515) +- new apache_get_version (line 516) +- new http_get_last_response_headers (line 519) +- new get_last_response_headers (line 520) +- new http_clear_last_response_headers (line 521) +- new get_headers (line 523) +- new ob_start (line 524) +- new ob_gzhandler (line 525) +- new ob_get_clean (line 526) +- new ob_get_contents (line 527) +- new ob_get_flush (line 528) +- new ob_end_clean (line 529) +- new ob_get_length (line 530) +- new ob_end_flush (line 531) +- new flush_ (line 532) +- new ob_get_level (line 533) +- new ob_get_status (line 534) +- new ob_implicit_flush (line 535) +- new ob_flush (line 536) +- new ob_clean (line 537) +- new ob_list_handlers (line 538) +- new http_response_code (line 539) +- new output_add_rewrite_var (line 540) +- new output_reset_rewrite_vars (line 541) +- new json_encode (line 542) +- new json_decode (line 543) +- new json_validate (line 544) +- new serialize (line 545) +- new unserialize (line 546) +- new json_last_error_ (line 547) +- new json_last_error_msg_ (line 548) +- new web_int (line 549) +- new web_string (line 550) +- new web_bool (line 551) +- new urlencode (line 552) +- new rawurlencode (line 553) +- new http_build_query (line 554) +- new request_parse_body (line 555) +- new parse_str (line 556) +- new urldecode (line 557) +- new rawurldecode (line 558) +- new parse_url (line 559) +- new dirname (line 560) +- new basename (line 561) +- new realpath (line 562) +- new realpath_cache_get (line 563) +- new realpath_cache_size (line 564) +- new pathinfo (line 565) +- new file_get_contents (line 566) +- new readfile (line 567) +- new mime_content_type (line 568) +- new mail (line 569) +- new file_ (line 570) +- new readline (line 571) +- new readline_info (line 572) +- new readline_add_history (line 573) +- new readline_clear_history (line 574) +- new readline_list_history (line 575) +- new readline_read_history (line 576) +- new readline_write_history (line 577) +- new readline_completion_function (line 578) +- new readline_callback_handler_install (line 579) +- new readline_callback_read_char (line 580) +- new readline_callback_handler_remove (line 581) +- new readline_on_new_line (line 582) +- new readline_redisplay (line 583) +- new file_put_contents (line 584) +- new file_exists (line 585) +- new filesize (line 586) +- new filemtime (line 587) +- new disk_free_space (line 588) +- new disk_total_space (line 589) +- new diskfreespace (line 590) +- new disktotalspace (line 591) +- new dl (line 592) +- new fileatime (line 593) +- new filectime (line 594) +- new fileinode (line 595) +- new fileowner (line 596) +- new filegroup (line 597) +- new clearstatcache_ (line 598) +- new stat_ (line 599) +- new lstat_ (line 600) +- new fstat_ (line 601) +- new fileperms (line 602) +- new is_file (line 603) +- new is_dir (line 604) +- new is_readable (line 605) - new is_writable (line 606) -- new is_executable (line 607) -- new is_link (line 608) -- new readlink (line 609) -- new linkinfo (line 610) -- new link_ (line 611) -- new symlink_ (line 612) -- new unlink (line 613) -- new mkdir_ (line 614) -- new rmdir_ (line 615) -- new chmod_ (line 616) -- new chown_ (line 617) -- new lchown_ (line 618) -- new chgrp_ (line 619) -- new lchgrp_ (line 620) -- new umask_ (line 621) -- new rename_ (line 622) -- new move_uploaded_file (line 623) -- new is_uploaded_file (line 624) -- new copy_ (line 625) -- new move_uploaded_file (line 626) -- new touch_ (line 627) -- new filetype (line 628) -- new stream_context_create (line 629) -- new stream_context_get_default (line 630) -- new stream_context_set_default (line 631) -- new stream_context_get_options (line 632) -- new stream_context_set_options (line 633) -- new stream_context_set_params (line 634) -- new stream_socket_client (line 635) -- new stream_socket_server (line 636) -- new stream_socket_accept (line 637) -- new stream_socket_pair (line 638) -- new stream_socket_get_name (line 639) -- new fsockopen (line 640) -- new pfsockopen (line 641) -- new stream_set_chunk_size_ (line 642) -- new stream_set_timeout_ (line 643) -- new stream_set_write_buffer_ (line 644) -- new stream_set_read_buffer_ (line 645) -- new set_file_buffer (line 646) -- new stream_supports (line 647) -- new stream_supports_lock (line 648) -- new stream_is_local (line 649) -- new stream_isatty (line 650) -- new stream_get_meta_data (line 651) -- new stream_set_blocking (line 652) -- new fopen (line 653) -- new fread (line 654) -- new stream_get_contents (line 655) -- new stream_copy_to_stream (line 656) -- new stream_copy_to_string (line 657) -- new stream_get_filters (line 658) -- new stream_filter_register (line 659) -- new stream_filter_append (line 660) -- new stream_filter_prepend (line 661) -- new stream_filter_remove (line 662) -- new stream_get_wrappers (line 663) -- new stream_get_transports (line 664) -- new stream_wrapper_register (line 665) -- new stream_register_wrapper (line 666) -- new stream_wrapper_unregister (line 667) -- new stream_wrapper_restore (line 668) -- new stream_bucket_new (line 669) -- new stream_bucket_make_writeable (line 670) -- new stream_bucket_append (line 671) -- new stream_bucket_prepend (line 672) -- new fgetc (line 673) -- new fgets (line 674) -- new stream_get_line (line 675) -- new fgetcsv (line 676) -- new fputcsv (line 677) -- new str_getcsv (line 678) -- new ftell_ (line 679) -- new ftok (line 680) -- new fseek (line 681) -- new rewind_ (line 682) -- new feof_ (line 683) -- new fflush_ (line 684) -- new fsync_ (line 685) -- new fdatasync_ (line 686) -- new ftruncate_ (line 687) -- new fpassthru (line 688) -- new fwrite (line 689) +- new is_writable (line 607) +- new is_executable (line 608) +- new is_link (line 609) +- new readlink (line 610) +- new linkinfo (line 611) +- new link_ (line 612) +- new symlink_ (line 613) +- new unlink (line 614) +- new mkdir_ (line 615) +- new rmdir_ (line 616) +- new chmod_ (line 617) +- new chown_ (line 618) +- new lchown_ (line 619) +- new chgrp_ (line 620) +- new lchgrp_ (line 621) +- new umask_ (line 622) +- new rename_ (line 623) +- new move_uploaded_file (line 624) +- new is_uploaded_file (line 625) +- new copy_ (line 626) +- new move_uploaded_file (line 627) +- new touch_ (line 628) +- new filetype (line 629) +- new stream_context_create (line 630) +- new stream_context_get_default (line 631) +- new stream_context_set_default (line 632) +- new stream_context_get_options (line 633) +- new stream_context_set_options (line 634) +- new stream_context_set_params (line 635) +- new stream_socket_client (line 636) +- new stream_socket_server (line 637) +- new stream_socket_accept (line 638) +- new stream_socket_pair (line 639) +- new stream_socket_get_name (line 640) +- new fsockopen (line 641) +- new pfsockopen (line 642) +- new stream_set_chunk_size_ (line 643) +- new stream_set_timeout_ (line 644) +- new stream_set_write_buffer_ (line 645) +- new stream_set_read_buffer_ (line 646) +- new set_file_buffer (line 647) +- new stream_supports (line 648) +- new stream_supports_lock (line 649) +- new stream_is_local (line 650) +- new stream_isatty (line 651) +- new stream_get_meta_data (line 652) +- new stream_set_blocking (line 653) +- new fopen (line 654) +- new fread (line 655) +- new stream_get_contents (line 656) +- new stream_copy_to_stream (line 657) +- new stream_copy_to_string (line 658) +- new stream_get_filters (line 659) +- new stream_filter_register (line 660) +- new stream_filter_append (line 661) +- new stream_filter_prepend (line 662) +- new stream_filter_remove (line 663) +- new stream_get_wrappers (line 664) +- new stream_get_transports (line 665) +- new stream_wrapper_register (line 666) +- new stream_register_wrapper (line 667) +- new stream_wrapper_unregister (line 668) +- new stream_wrapper_restore (line 669) +- new stream_bucket_new (line 670) +- new stream_bucket_make_writeable (line 671) +- new stream_bucket_append (line 672) +- new stream_bucket_prepend (line 673) +- new fgetc (line 674) +- new fgets (line 675) +- new stream_get_line (line 676) +- new fgetcsv (line 677) +- new fputcsv (line 678) +- new str_getcsv (line 679) +- new ftell_ (line 680) +- new ftok (line 681) +- new fseek (line 682) +- new rewind_ (line 683) +- new feof_ (line 684) +- new fflush_ (line 685) +- new fsync_ (line 686) +- new fdatasync_ (line 687) +- new ftruncate_ (line 688) +- new fpassthru (line 689) - new fwrite (line 690) -- new fclose (line 691) -- new flock (line 692) -- new forward_static_call (line 693) -- new forward_static_call_array (line 694) -- new getenv_ (line 695) -- new putenv_ (line 696) -- new exec (line 697) -- new passthru (line 698) -- new system (line 699) -- new shell_exec (line 700) -- new popen (line 701) -- new pclose (line 702) -- new proc_open (line 703) -- new proc_close (line 704) -- new proc_get_status (line 705) -- new proc_terminate (line 706) -- new stream_select (line 707) -- new escapeshellarg (line 708) -- new escapeshellcmd (line 709) -- new phpc_run_command (line 710) -- new phpc_gc_native_child_at (line 711) -- new phpc_gc_native_object_refcount (line 712) -- new phpc_gc_native_free_object (line 713) -- new phpc_destruct_try_invoke_native (line 714) -- new phpc_object_release_storage_native (line 715) -- new phpc_weakref_null_slot (line 716) -- new phpc_weakref_unset_map_key (line 717) -- new phpc_native_ht_alloc (line 718) -- new phpc_native_ht_set_string_key (line 719) -- new phpc_native_ht_set_string_key_ht (line 720) -- new phpc_native_ht_set_string_at (line 721) -- new phpc_native_ht_set_hashtable_at (line 722) -- new phpc_native_ht_set_string_key_long (line 723) -- new sys_get_temp_dir (line 724) -- new sys_getloadavg (line 725) -- new openlog (line 726) -- new syslog (line 727) -- new closelog (line 728) -- new tempnam (line 729) -- new tmpfile (line 730) -- new getcwd_ (line 731) -- new get_include_path (line 732) -- new set_include_path (line 733) -- new stream_resolve_include_path (line 734) -- new gethostname (line 735) -- new net_get_interfaces (line 736) -- new gethostbynamel (line 737) -- new gethostbyname (line 738) -- new gethostbyaddr (line 739) -- new checkdnsrr (line 740) +- new fwrite (line 691) +- new fclose (line 692) +- new flock (line 693) +- new forward_static_call (line 694) +- new forward_static_call_array (line 695) +- new getenv_ (line 696) +- new putenv_ (line 697) +- new exec (line 698) +- new passthru (line 699) +- new system (line 700) +- new shell_exec (line 701) +- new popen (line 702) +- new pclose (line 703) +- new proc_open (line 704) +- new proc_close (line 705) +- new proc_get_status (line 706) +- new proc_terminate (line 707) +- new stream_select (line 708) +- new escapeshellarg (line 709) +- new escapeshellcmd (line 710) +- new phpc_run_command (line 711) +- new phpc_gc_native_child_at (line 712) +- new phpc_gc_native_object_refcount (line 713) +- new phpc_gc_native_free_object (line 714) +- new phpc_destruct_try_invoke_native (line 715) +- new phpc_object_release_storage_native (line 716) +- new phpc_weakref_null_slot (line 717) +- new phpc_weakref_unset_map_key (line 718) +- new phpc_native_ht_alloc (line 719) +- new phpc_native_ht_set_string_key (line 720) +- new phpc_native_ht_set_string_key_ht (line 721) +- new phpc_native_ht_set_string_at (line 722) +- new phpc_native_ht_set_hashtable_at (line 723) +- new phpc_native_ht_set_string_key_long (line 724) +- new sys_get_temp_dir (line 725) +- new sys_getloadavg (line 726) +- new openlog (line 727) +- new syslog (line 728) +- new closelog (line 729) +- new tempnam (line 730) +- new tmpfile (line 731) +- new getcwd_ (line 732) +- new get_include_path (line 733) +- new set_include_path (line 734) +- new stream_resolve_include_path (line 735) +- new gethostname (line 736) +- new net_get_interfaces (line 737) +- new gethostbynamel (line 738) +- new gethostbyname (line 739) +- new gethostbyaddr (line 740) - new checkdnsrr (line 741) -- new dns_get_mx (line 742) -- new dns_get_record (line 743) -- new getmxrr (line 744) -- new long2ip (line 745) -- new ip2long (line 746) -- new inet_ntop (line 747) -- new inet_pton (line 748) -- new getprotobyname (line 749) -- new getprotobynumber (line 750) -- new getservbyname (line 751) -- new getservbyport (line 752) -- new chdir_ (line 753) -- new chroot_ (line 754) -- new putenv_ (line 755) -- new ini_set_ (line 756) +- new checkdnsrr (line 742) +- new dns_get_mx (line 743) +- new dns_get_record (line 744) +- new getmxrr (line 745) +- new long2ip (line 746) +- new ip2long (line 747) +- new inet_ntop (line 748) +- new inet_pton (line 749) +- new getprotobyname (line 750) +- new getprotobynumber (line 751) +- new getservbyname (line 752) +- new getservbyport (line 753) +- new chdir_ (line 754) +- new chroot_ (line 755) +- new putenv_ (line 756) - new ini_set_ (line 757) -- new ini_get_ (line 758) -- new ini_get_all (line 759) -- new ini_restore (line 760) -- new ini_parse_quantity (line 761) -- new parse_ini_string (line 762) -- new parse_ini_file (line 763) -- new error_reporting (line 764) -- new error_log (line 765) -- new define_ (line 766) -- new defined_ (line 767) -- new constant_ (line 768) -- new class_constants_ (line 769) -- new get_defined_constants_ (line 770) -- new get_defined_vars_ (line 771) -- new get_declared_variables_ (line 772) -- new get_declared_interfaces_ (line 773) -- new get_declared_classes_ (line 774) -- new get_declared_traits_ (line 775) -- new get_declared_attributes_ (line 776) -- new get_declared_functions_ (line 777) -- new get_defined_functions_ (line 778) -- new get_included_files_ (line 779) +- new ini_set_ (line 758) +- new ini_get_ (line 759) +- new ini_get_all (line 760) +- new ini_restore (line 761) +- new ini_parse_quantity (line 762) +- new parse_ini_string (line 763) +- new parse_ini_file (line 764) +- new error_reporting (line 765) +- new error_log (line 766) +- new define_ (line 767) +- new defined_ (line 768) +- new constant_ (line 769) +- new class_constants_ (line 770) +- new get_defined_constants_ (line 771) +- new get_defined_vars_ (line 772) +- new get_declared_variables_ (line 773) +- new get_declared_interfaces_ (line 774) +- new get_declared_classes_ (line 775) +- new get_declared_traits_ (line 776) +- new get_declared_attributes_ (line 777) +- new get_declared_functions_ (line 778) +- new get_defined_functions_ (line 779) - new get_included_files_ (line 780) -- new debug_backtrace (line 781) -- new debug_print_backtrace (line 782) -- new get_debug_backtrace (line 783) -- new class_exists_ (line 784) -- new class_alias (line 785) -- new create_lazy_ghost (line 787) -- new create_lazy_proxy (line 788) -- new class_has_lazy_object_initializer (line 789) -- new class_has_lazy_object_uninitializer (line 790) -- new enum_exists_ (line 792) -- new unitenum_exists_ (line 793) -- new interface_exists_ (line 794) -- new trait_exists_ (line 795) -- new class_uses_ (line 796) -- new class_uses_recursive (line 797) -- new class_implements_ (line 798) -- new class_parents_ (line 799) -- new function_exists (line 800) -- new is_callable (line 801) -- new call_user_func (line 802) -- new call_user_func_array (line 803) -- new func_get_arg (line 804) -- new func_get_args (line 805) -- new func_num_args (line 806) -- new method_exists_ (line 807) -- new class_meth_exists_ (line 808) -- new class_has_method_ (line 810) -- new class_has_property_ (line 811) -- new class_has_constant_ (line 812) -- new property_exists_ (line 814) -- new attribute_exists_ (line 815) -- new get_object_vars_ (line 816) -- new get_mangled_object_vars_ (line 817) -- new get_object_id (line 818) -- new spl_object_id (line 819) -- new spl_object_hash (line 820) -- new get_class_ (line 821) -- new get_called_class_ (line 822) -- new get_class_vars_ (line 823) -- new get_class_methods_ (line 824) -- new get_parent_class_ (line 825) -- new is_a_ (line 826) -- new is_subclass_of_ (line 827) -- new assert_ (line 828) -- new assert_options (line 829) -- new trigger_error_ (line 830) -- new user_error (line 831) -- new compiler_language_warning_ (line 832) -- new set_error_handler_ (line 833) -- new restore_error_handler_ (line 834) -- new set_exception_handler (line 835) -- new restore_exception_handler (line 836) -- new error_get_last (line 837) -- new error_clear_last (line 838) -- new exif_tagname (line 839) -- new eval_ (line 840) -- new phpc_deploy_path (line 841) -- new compiler_is_superglobal_name (line 842) -- new __compiler_libcrypt (line 843) -- new __compiler_password_random_bytes (line 844) -- new phpc_match_unhandled_operand_is_object (line 845) -- new phpc_clone_with_begin (line 846) -- new phpc_clone_with_end (line 847) -- new phpc_clone_with_reinit (line 848) -- new extract_ (line 849) -- new compact_ (line 850) -- new scandir (line 851) -- new opendir (line 852) -- new dir_ (line 853) -- new readdir (line 854) -- new closedir (line 855) -- new rewinddir (line 856) -- new glob_ (line 857) -- new gzcompress (line 858) -- new gzdecode (line 859) -- new gzdeflate (line 860) -- new gzencode (line 861) -- new gzinflate (line 862) -- new gzuncompress (line 863) -- new gzopen (line 864) -- new gzwrite (line 865) -- new gzputs (line 866) -- new gzread (line 867) -- new gzgets (line 868) -- new gzseek (line 869) -- new gztell (line 870) -- new gzrewind (line 871) -- new gzeof (line 872) -- new gzclose (line 873) -- new readgzfile (line 874) -- new gzfile (line 875) -- new gzpassthru (line 876) -- new zlib_encode (line 877) -- new zlib_decode (line 878) -- new zlib_get_coding_type (line 879) -- new fnmatch (line 880) -- new time (line 881) -- new getmypid (line 882) -- new getmyuid (line 883) -- new getmygid (line 884) -- new get_current_user (line 885) -- new get_cfg_var (line 886) -- new php_ini_loaded_file (line 887) -- new php_ini_scanned_files (line 888) -- new zend_thread_id (line 889) -- new getmygrgid (line 890) -- new getmyinode (line 891) -- new getlastmod (line 892) -- new getrusage (line 893) -- new cli_get_process_title (line 894) -- new cli_set_process_title (line 895) -- new proc_nice (line 896) -- new memory_get_peak_usage (line 897) -- new memory_get_usage (line 898) -- new memory_reset_peak_usage (line 899) -- new microtime (line 900) -- new gettimeofday (line 901) -- new hrtime (line 902) -- new clock_gettime (line 903) -- new phpversion (line 904) -- new php_sapi_name (line 905) -- new getopt (line 906) -- new php_uname (line 907) -- new phpinfo (line 908) -- new phpcredits (line 909) -- new zend_version (line 910) -- new version_compare (line 911) -- new extension_loaded (line 912) -- new get_loaded_extensions (line 913) -- new get_extension_funcs (line 914) -- new date (line 915) -- new timezone_version_get (line 916) -- new timezone_identifiers_list (line 917) -- new timezone_abbreviations_list (line 918) -- new timezone_name_from_abbr (line 919) -- new timezone_open (line 920) -- new timezone_name_get (line 921) -- new timezone_offset_get (line 922) -- new date_offset_get (line 923) -- new date_format (line 924) -- new date_timestamp_get (line 925) -- new date_timestamp_set (line 926) -- new date_timezone_get (line 927) -- new date_timezone_set (line 928) -- new date_get_last_errors (line 929) -- new timezone_location_get (line 930) -- new timezone_transitions_get (line 931) -- new gmdate (line 932) -- new strftime (line 933) -- new gmstrftime (line 934) -- new strptime (line 935) -- new getdate (line 936) -- new gmgetdate (line 937) -- new gmmktime (line 938) -- new mktime (line 939) -- new strtotime (line 940) -- new checkdate (line 941) -- new date_default_timezone_get (line 942) -- new date_default_timezone_set (line 943) -- new localtime (line 944) -- new localeconv (line 945) -- new idate (line 946) -- new date_sun_info (line 947) -- new date_interval_format (line 948) -- new date_interval_create_from_date_string (line 949) -- new date_create (line 950) -- new date_create_immutable (line 951) -- new date_create_from_format (line 952) -- new date_create_immutable_from_format (line 953) -- new date_parse (line 954) -- new date_parse_from_format (line 955) -- new date_add (line 956) -- new date_sub (line 957) -- new date_modify (line 958) -- new date_diff (line 959) -- new date_sunrise (line 960) -- new date_sunset (line 961) -- new sleep (line 962) -- new set_time_limit (line 963) -- new setlocale (line 964) -- new nl_langinfo (line 965) -- new ignore_user_abort (line 966) -- new connection_aborted (line 967) -- new spl_autoload (line 968) -- new spl_autoload_extensions (line 969) -- new spl_autoload_functions (line 970) -- new spl_autoload_register (line 971) -- new spl_autoload_unregister (line 972) -- new spl_autoload_call (line 973) -- new time_nanosleep (line 974) -- new time_sleep_until (line 975) -- new usleep (line 976) +- new get_included_files_ (line 781) +- new debug_backtrace (line 782) +- new debug_print_backtrace (line 783) +- new get_debug_backtrace (line 784) +- new class_exists_ (line 785) +- new class_alias (line 786) +- new create_lazy_ghost (line 788) +- new create_lazy_proxy (line 789) +- new class_has_lazy_object_initializer (line 790) +- new class_has_lazy_object_uninitializer (line 791) +- new enum_exists_ (line 793) +- new unitenum_exists_ (line 794) +- new interface_exists_ (line 795) +- new trait_exists_ (line 796) +- new class_uses_ (line 797) +- new class_uses_recursive (line 798) +- new class_implements_ (line 799) +- new class_parents_ (line 800) +- new function_exists (line 801) +- new is_callable (line 802) +- new call_user_func (line 803) +- new call_user_func_array (line 804) +- new func_get_arg (line 805) +- new func_get_args (line 806) +- new func_num_args (line 807) +- new method_exists_ (line 808) +- new class_meth_exists_ (line 809) +- new class_has_method_ (line 811) +- new class_has_property_ (line 812) +- new class_has_constant_ (line 813) +- new property_exists_ (line 815) +- new attribute_exists_ (line 816) +- new get_object_vars_ (line 817) +- new get_mangled_object_vars_ (line 818) +- new get_object_id (line 819) +- new spl_object_id (line 820) +- new spl_object_hash (line 821) +- new get_class_ (line 822) +- new get_called_class_ (line 823) +- new get_class_vars_ (line 824) +- new get_class_methods_ (line 825) +- new get_parent_class_ (line 826) +- new is_a_ (line 827) +- new is_subclass_of_ (line 828) +- new assert_ (line 829) +- new assert_options (line 830) +- new trigger_error_ (line 831) +- new user_error (line 832) +- new compiler_language_warning_ (line 833) +- new set_error_handler_ (line 834) +- new restore_error_handler_ (line 835) +- new set_exception_handler (line 836) +- new restore_exception_handler (line 837) +- new error_get_last (line 838) +- new error_clear_last (line 839) +- new exif_tagname (line 840) +- new eval_ (line 841) +- new phpc_deploy_path (line 842) +- new compiler_is_superglobal_name (line 843) +- new __compiler_libcrypt (line 844) +- new __compiler_password_random_bytes (line 845) +- new phpc_match_unhandled_operand_is_object (line 846) +- new phpc_clone_with_begin (line 847) +- new phpc_clone_with_end (line 848) +- new phpc_clone_with_reinit (line 849) +- new extract_ (line 850) +- new compact_ (line 851) +- new scandir (line 852) +- new opendir (line 853) +- new dir_ (line 854) +- new readdir (line 855) +- new closedir (line 856) +- new rewinddir (line 857) +- new glob_ (line 858) +- new gzcompress (line 859) +- new gzdecode (line 860) +- new gzdeflate (line 861) +- new gzencode (line 862) +- new gzinflate (line 863) +- new gzuncompress (line 864) +- new gzopen (line 865) +- new gzwrite (line 866) +- new gzputs (line 867) +- new gzread (line 868) +- new gzgets (line 869) +- new gzseek (line 870) +- new gztell (line 871) +- new gzrewind (line 872) +- new gzeof (line 873) +- new gzclose (line 874) +- new readgzfile (line 875) +- new gzfile (line 876) +- new gzpassthru (line 877) +- new zlib_encode (line 878) +- new zlib_decode (line 879) +- new zlib_get_coding_type (line 880) +- new fnmatch (line 881) +- new time (line 882) +- new getmypid (line 883) +- new getmyuid (line 884) +- new getmygid (line 885) +- new get_current_user (line 886) +- new get_cfg_var (line 887) +- new php_ini_loaded_file (line 888) +- new php_ini_scanned_files (line 889) +- new zend_thread_id (line 890) +- new getmygrgid (line 891) +- new getmyinode (line 892) +- new getlastmod (line 893) +- new getrusage (line 894) +- new cli_get_process_title (line 895) +- new cli_set_process_title (line 896) +- new proc_nice (line 897) +- new memory_get_peak_usage (line 898) +- new memory_get_usage (line 899) +- new memory_reset_peak_usage (line 900) +- new microtime (line 901) +- new gettimeofday (line 902) +- new hrtime (line 903) +- new clock_gettime (line 904) +- new phpversion (line 905) +- new php_sapi_name (line 906) +- new getopt (line 907) +- new php_uname (line 908) +- new phpinfo (line 909) +- new phpcredits (line 910) +- new zend_version (line 911) +- new version_compare (line 912) +- new extension_loaded (line 913) +- new get_loaded_extensions (line 914) +- new get_extension_funcs (line 915) +- new date (line 916) +- new timezone_version_get (line 917) +- new timezone_identifiers_list (line 918) +- new timezone_abbreviations_list (line 919) +- new timezone_name_from_abbr (line 920) +- new timezone_open (line 921) +- new timezone_name_get (line 922) +- new timezone_offset_get (line 923) +- new date_offset_get (line 924) +- new date_format (line 925) +- new date_timestamp_get (line 926) +- new date_timestamp_set (line 927) +- new date_timezone_get (line 928) +- new date_timezone_set (line 929) +- new date_get_last_errors (line 930) +- new timezone_location_get (line 931) +- new timezone_transitions_get (line 932) +- new gmdate (line 933) +- new strftime (line 934) +- new gmstrftime (line 935) +- new strptime (line 936) +- new getdate (line 937) +- new gmgetdate (line 938) +- new gmmktime (line 939) +- new mktime (line 940) +- new strtotime (line 941) +- new checkdate (line 942) +- new date_default_timezone_get (line 943) +- new date_default_timezone_set (line 944) +- new localtime (line 945) +- new localeconv (line 946) +- new idate (line 947) +- new date_sun_info (line 948) +- new date_interval_format (line 949) +- new date_interval_create_from_date_string (line 950) +- new date_create (line 951) +- new date_create_immutable (line 952) +- new date_create_from_format (line 953) +- new date_create_immutable_from_format (line 954) +- new date_parse (line 955) +- new date_parse_from_format (line 956) +- new date_add (line 957) +- new date_sub (line 958) +- new date_modify (line 959) +- new date_diff (line 960) +- new date_sunrise (line 961) +- new date_sunset (line 962) +- new sleep (line 963) +- new set_time_limit (line 964) +- new setlocale (line 965) +- new nl_langinfo (line 966) +- new ignore_user_abort (line 967) +- new connection_aborted (line 968) +- new spl_autoload (line 969) +- new spl_autoload_extensions (line 970) +- new spl_autoload_functions (line 971) +- new spl_autoload_register (line 972) +- new spl_autoload_unregister (line 973) +- new spl_autoload_call (line 974) +- new time_nanosleep (line 975) +- new time_sleep_until (line 976) +- new usleep (line 977) - 5 class method(s) - 1 closure(s) @@ -18489,10 +18491,10 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag ### `ext/standard/hex2bin.php` **Warnings** (review for bootstrap subset): -- new ArgumentCountError (line 32) -- new ArgumentCountError (line 35) -- new Error (line 51) -- new Error (line 71) +- new ArgumentCountError (line 36) +- new ArgumentCountError (line 39) +- new Error (line 55) +- new Error (line 75) - 2 class method(s) - 3 closure(s) @@ -19018,6 +19020,11 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag **Warnings** (review for bootstrap subset): - 2 class method(s) +### `ext/standard/mt_getrandmax.php` + +**Warnings** (review for bootstrap subset): +- 2 class method(s) + ### `ext/standard/mt_rand.php` **Warnings** (review for bootstrap subset): @@ -21760,351 +21767,353 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag - new Operand\Temporary (line 5909) - new Operand\Temporary (line 5923) - new Operand\Temporary (line 5929) -- new Operand\Temporary (line 5939) -- new Operand\Temporary (line 5947) -- new Variable (line 6137) -- new Operand\Literal (line 6333) -- new OpCode (line 6339) -- new Operand\Variable (line 6401) -- new Operand\Literal (line 6401) -- new Operand\Literal (line 6411) -- new Temporary (line 6414) -- new OpCode (line 6419) -- new OpCode (line 6425) -- new Variable (line 6473) -- new Operand\Temporary (line 6474) -- new Op\Type\Literal (line 6677) -- new Op\Expr\Param (line 6678) -- new Operand\Literal (line 6679) -- new Op\Type\Mixed_ (line 6680) -- new Variable (line 6925) -- new Variable (line 6962) -- new Variable (line 6999) -- new Variable (line 7043) -- new Variable (line 7048) -- new Variable (line 7146) -- new Variable (line 7153) -- new Variable (line 7165) -- new Variable (line 7180) -- new Variable (line 7183) -- new Variable (line 7189) -- new Variable (line 7196) -- new Variable (line 7203) -- new Variable (line 7209) -- new Variable (line 7215) -- new Variable (line 7222) +- new Operand\Temporary (line 5944) +- new Operand\Temporary (line 5954) +- new Operand\Temporary (line 5962) +- new Variable (line 6152) +- new Operand\Literal (line 6348) +- new OpCode (line 6354) +- new Operand\Variable (line 6416) +- new Operand\Literal (line 6416) +- new Operand\Literal (line 6426) +- new Temporary (line 6429) +- new OpCode (line 6434) +- new OpCode (line 6440) +- new Variable (line 6488) +- new Operand\Temporary (line 6489) +- new Op\Type\Literal (line 6692) +- new Op\Expr\Param (line 6693) +- new Operand\Literal (line 6694) +- new Op\Type\Mixed_ (line 6695) +- new Variable (line 6826) +- new Variable (line 6991) +- new Variable (line 7028) +- new Variable (line 7065) +- new Variable (line 7109) +- new Variable (line 7114) - new Variable (line 7229) - new Variable (line 7236) -- new Variable (line 7306) -- new Variable (line 7418) -- new Variable (line 7432) -- new Variable (line 7441) -- new Variable (line 7448) -- new Variable (line 7493) -- new Variable (line 7499) -- new Variable (line 7512) -- new Variable (line 7526) -- new Variable (line 7532) -- new Variable (line 7545) -- new Variable (line 7578) -- new Variable (line 7584) -- new Variable (line 7589) -- new Variable (line 7690) -- new ReflectionClassConstant (line 7710) -- new Variable (line 7716) -- new Variable (line 7722) -- new Variable (line 7728) -- new Variable (line 7734) -- new OpCode (line 8043) -- new Operand\Literal (line 8058) -- new OpCode (line 8060) -- new Operand\Literal (line 8079) -- new OpCode (line 8082) -- new OpCode (line 8091) -- new OpCode (line 8098) -- new OpCode (line 8106) -- new OpCode (line 8131) -- new OpCode (line 8135) -- new OpCode (line 8146) -- new OpCode (line 8149) -- new OpCode (line 8206) -- new OpCode (line 8211) -- new OpCode (line 8225) -- new OpCode (line 8243) -- new OpCode (line 8761) -- new OpCode (line 8780) -- new Block (line 8792) -- new OpCode (line 8799) -- new OpCode (line 8915) -- new OpCode (line 8965) -- new OpCode (line 8986) -- new OpCode (line 9005) -- new OpCode (line 9029) -- new Operand\Literal (line 9043) -- new OpCode (line 9044) -- new OpCode (line 9065) -- new OpCode (line 9072) -- new OpCode (line 9079) -- new OpCode (line 9095) -- new OpCode (line 9101) -- new OpCode (line 9109) -- new OpCode (line 9173) +- new Variable (line 7248) +- new Variable (line 7263) +- new Variable (line 7266) +- new Variable (line 7272) +- new Variable (line 7279) +- new Variable (line 7286) +- new Variable (line 7292) +- new Variable (line 7298) +- new Variable (line 7305) +- new Variable (line 7312) +- new Variable (line 7319) +- new Variable (line 7389) +- new Variable (line 7501) +- new Variable (line 7515) +- new Variable (line 7524) +- new Variable (line 7531) +- new Variable (line 7576) +- new Variable (line 7582) +- new Variable (line 7595) +- new Variable (line 7609) +- new Variable (line 7615) +- new Variable (line 7628) +- new Variable (line 7661) +- new Variable (line 7667) +- new Variable (line 7672) +- new Variable (line 7773) +- new ReflectionClassConstant (line 7793) +- new Variable (line 7799) +- new Variable (line 7805) +- new Variable (line 7811) +- new Variable (line 7817) +- new OpCode (line 8126) +- new Operand\Literal (line 8141) +- new OpCode (line 8143) +- new Operand\Literal (line 8162) +- new OpCode (line 8165) +- new OpCode (line 8174) +- new OpCode (line 8181) +- new OpCode (line 8189) +- new OpCode (line 8214) +- new OpCode (line 8218) +- new OpCode (line 8229) +- new OpCode (line 8232) +- new OpCode (line 8289) +- new OpCode (line 8294) +- new OpCode (line 8308) +- new OpCode (line 8326) +- new OpCode (line 8844) +- new OpCode (line 8863) +- new Block (line 8875) +- new OpCode (line 8882) +- new OpCode (line 8998) +- new OpCode (line 9048) +- new OpCode (line 9069) +- new OpCode (line 9088) +- new OpCode (line 9112) +- new Operand\Literal (line 9126) +- new OpCode (line 9127) +- new OpCode (line 9148) +- new OpCode (line 9155) +- new OpCode (line 9162) +- new OpCode (line 9178) +- new OpCode (line 9184) - new OpCode (line 9192) -- new OpCode (line 9220) -- new OpCode (line 9228) -- new OpCode (line 9243) -- new OpCode (line 9265) -- new OpCode (line 9277) -- new OpCode (line 9287) -- new OpCode (line 9296) -- new OpCode (line 9304) -- new OpCode (line 9331) -- new OpCode (line 9342) -- new OpCode (line 9354) -- new Operand\Literal (line 9369) -- new Operand\Literal (line 9393) -- new Operand\Literal (line 9413) -- new OpCode (line 9415) -- new OpCode (line 9453) -- new Operand\Temporary (line 9489) -- new OpCode (line 9491) -- new OpCode (line 9512) -- new OpCode (line 9525) -- new OpCode (line 9540) -- new OpCode (line 9546) -- new OpCode (line 9552) -- new OpCode (line 9584) -- new OpCode (line 9591) -- new OpCode (line 9602) -- new OpCode (line 9621) -- new Operand\Literal (line 9652) -- new OpCode (line 9654) -- new OpCode (line 9681) -- new OpCode (line 9903) -- new Operand\Literal (line 9940) -- new OpCode (line 9943) -- new Operand\Literal (line 9959) -- new OpCode (line 9964) -- new OpCode (line 9976) -- new OpCode (line 10186) -- new OpCode (line 10216) +- new OpCode (line 9256) +- new OpCode (line 9275) +- new OpCode (line 9303) +- new OpCode (line 9311) +- new OpCode (line 9326) +- new OpCode (line 9348) +- new OpCode (line 9360) +- new OpCode (line 9370) +- new OpCode (line 9379) +- new OpCode (line 9387) +- new OpCode (line 9414) +- new OpCode (line 9425) +- new OpCode (line 9437) +- new Operand\Literal (line 9452) +- new Operand\Literal (line 9476) +- new Operand\Literal (line 9496) +- new OpCode (line 9498) +- new OpCode (line 9536) +- new Operand\Temporary (line 9572) +- new OpCode (line 9574) +- new OpCode (line 9595) +- new OpCode (line 9608) +- new OpCode (line 9623) +- new OpCode (line 9629) +- new OpCode (line 9635) +- new OpCode (line 9667) +- new OpCode (line 9674) +- new OpCode (line 9685) +- new OpCode (line 9704) +- new Operand\Literal (line 9735) +- new OpCode (line 9737) +- new OpCode (line 9764) +- new OpCode (line 9986) +- new Operand\Literal (line 10023) +- new OpCode (line 10026) +- new Operand\Literal (line 10042) +- new OpCode (line 10047) +- new OpCode (line 10059) - new OpCode (line 10269) -- new OpCode (line 10400) -- new OpCode (line 10407) -- new Block (line 10415) -- new Block (line 10419) -- new OpCode (line 10444) -- new Block (line 10452) -- new OpCode (line 10462) -- new OpCode (line 10473) -- new OpCode (line 10484) -- new OpCode (line 10494) -- new OpCode (line 10505) -- new OpCode (line 10514) -- new OpCode (line 10517) +- new OpCode (line 10299) +- new OpCode (line 10352) +- new OpCode (line 10483) +- new OpCode (line 10490) +- new Block (line 10498) +- new Block (line 10502) - new OpCode (line 10527) -- new OpCode (line 10548) -- new OpCode (line 10565) -- new OpCode (line 10582) -- new OpCode (line 10592) -- new OpCode (line 10606) -- new OpCode (line 10619) -- new Block (line 10850) -- new Block (line 10854) -- new Operand\Literal (line 10857) -- new OpCode (line 10860) -- new OpCode (line 10866) -- new Block (line 10870) -- new OpCode (line 10873) -- new OpCode (line 10879) -- new OpCode (line 10885) -- new Block (line 10906) -- new Block (line 10910) -- new Operand\Literal (line 10913) -- new OpCode (line 10916) -- new OpCode (line 10922) -- new Block (line 10926) -- new OpCode (line 10929) -- new OpCode (line 10938) -- new OpCode (line 10944) -- new OpCode (line 10986) -- new Block (line 11013) -- new Block (line 11030) -- new Block (line 11052) -- new OpCode (line 11056) -- new OpCode (line 11062) -- new Block (line 11066) -- new OpCode (line 11076) -- new OpCode (line 11081) -- new OpCode (line 11096) -- new Block (line 11121) -- new OpCode (line 11125) -- new OpCode (line 11131) +- new Block (line 10535) +- new OpCode (line 10545) +- new OpCode (line 10556) +- new OpCode (line 10567) +- new OpCode (line 10577) +- new OpCode (line 10588) +- new OpCode (line 10597) +- new OpCode (line 10600) +- new OpCode (line 10610) +- new OpCode (line 10631) +- new OpCode (line 10648) +- new OpCode (line 10665) +- new OpCode (line 10675) +- new OpCode (line 10689) +- new OpCode (line 10702) +- new Block (line 10933) +- new Block (line 10937) +- new Operand\Literal (line 10940) +- new OpCode (line 10943) +- new OpCode (line 10949) +- new Block (line 10953) +- new OpCode (line 10956) +- new OpCode (line 10962) +- new OpCode (line 10968) +- new Block (line 10989) +- new Block (line 10993) +- new Operand\Literal (line 10996) +- new OpCode (line 10999) +- new OpCode (line 11005) +- new Block (line 11009) +- new OpCode (line 11012) +- new OpCode (line 11021) +- new OpCode (line 11027) +- new OpCode (line 11069) +- new Block (line 11096) +- new Block (line 11113) - new Block (line 11135) - new OpCode (line 11139) - new OpCode (line 11145) -- new OpCode (line 11150) -- new OpCode (line 11165) -- new Block (line 11188) -- new Block (line 11192) -- new Operand\Literal (line 11195) -- new OpCode (line 11198) -- new OpCode (line 11204) -- new Block (line 11208) +- new Block (line 11149) +- new OpCode (line 11159) +- new OpCode (line 11164) +- new OpCode (line 11179) +- new Block (line 11204) +- new OpCode (line 11208) - new OpCode (line 11214) -- new OpCode (line 11227) +- new Block (line 11218) +- new OpCode (line 11222) +- new OpCode (line 11228) - new OpCode (line 11233) -- new Variable (line 11311) -- new Operand\Literal (line 11313) -- new Block (line 11364) -- new OpCode (line 11368) -- new OpCode (line 11380) -- new OpCode (line 11388) -- new OpCode (line 11432) -- new Op\Expr\Param (line 11569) -- new Operand\Literal (line 11570) -- new Op\Type\Mixed_ (line 11571) -- new HashTable (line 11595) -- new Variable (line 11658) -- new Variable (line 11727) -- new Operand\Literal (line 11775) -- new Operand\Variable (line 11777) -- new OpCode (line 12372) -- new Block (line 12404) -- new Block (line 12407) -- new OpCode (line 12410) -- new OpCode (line 12416) -- new OpCode (line 12446) -- new Block (line 12460) -- new OpCode (line 12463) -- new OpCode (line 12473) -- new Temporary (line 12483) -- new Variable (line 12493) -- new Operand\Temporary (line 12495) -- new OpCode (line 12542) -- new Temporary (line 15293) -- new Operand\Temporary (line 27979) -- new Operand\Temporary (line 27984) -- new Operand\Temporary (line 28057) +- new OpCode (line 11248) +- new Block (line 11271) +- new Block (line 11275) +- new Operand\Literal (line 11278) +- new OpCode (line 11281) +- new OpCode (line 11287) +- new Block (line 11291) +- new OpCode (line 11297) +- new OpCode (line 11310) +- new OpCode (line 11316) +- new Variable (line 11394) +- new Operand\Literal (line 11396) +- new Block (line 11447) +- new OpCode (line 11451) +- new OpCode (line 11463) +- new OpCode (line 11471) +- new OpCode (line 11515) +- new Op\Expr\Param (line 11652) +- new Operand\Literal (line 11653) +- new Op\Type\Mixed_ (line 11654) +- new HashTable (line 11678) +- new Variable (line 11741) +- new Variable (line 11810) +- new Operand\Literal (line 11858) +- new Operand\Variable (line 11860) +- new OpCode (line 12455) +- new Block (line 12487) +- new Block (line 12490) +- new OpCode (line 12493) +- new OpCode (line 12499) +- new OpCode (line 12529) +- new Block (line 12543) +- new OpCode (line 12546) +- new OpCode (line 12556) +- new Temporary (line 12566) +- new Variable (line 12576) +- new Operand\Temporary (line 12578) +- new OpCode (line 12625) +- new Temporary (line 15376) - new Operand\Temporary (line 28062) -- new OpCode (line 28199) -- new OpCode (line 28300) -- new OpCode (line 28381) -- new OpCode (line 28466) -- new OpCode (line 28556) -- new OpCode (line 28660) -- new CfgVariable (line 30760) -- new Literal (line 30760) -- new Variable (line 30792) -- new Variable (line 30846) -- new OpCode (line 30875) -- new Operand\Temporary (line 31593) -- new OpCode (line 31595) -- new OpCode (line 31621) -- new OpCode (line 31637) -- new OpCode (line 31645) -- new OpCode (line 31652) -- new OpCode (line 31664) -- new OpCode (line 31681) -- new OpCode (line 31687) -- new OpCode (line 31693) -- new OpCode (line 31698) -- new OpCode (line 31714) -- new OpCode (line 31727) -- new Variable (line 31738) -- new Operand\Literal (line 31740) -- new OpCode (line 31743) -- new OpCode (line 31813) -- new OpCode (line 31824) -- new OpCode (line 31837) -- new OpCode (line 32011) -- new OpCode (line 32264) -- new OpCode (line 32270) -- new OpCode (line 32276) -- new OpCode (line 32301) -- new Variable (line 32328) -- new Temporary (line 32330) -- new Variable (line 32338) -- new Temporary (line 32340) -- new OpCode (line 32388) -- new Operand\Temporary (line 32409) -- new Operand\Temporary (line 32415) -- new Operand\Temporary (line 32421) -- new Operand\Temporary (line 32427) -- new Operand\Temporary (line 32436) -- new Operand\Temporary (line 34178) -- new Variable (line 34555) -- new Variable (line 34559) -- new Variable (line 34567) -- new Variable (line 34571) -- new Variable (line 34855) -- new OpCode (line 34948) -- new OpCode (line 34965) -- new OpCode (line 34984) -- new OpCode (line 35004) -- new OpCode (line 35046) -- new OpCode (line 35081) -- new OpCode (line 35099) -- new OpCode (line 35132) -- new OpCode (line 35173) -- new OpCode (line 35189) -- new OpCode (line 35207) -- new OpCode (line 35224) -- new OpCode (line 35238) -- new OpCode (line 35260) -- new OpCode (line 35282) -- new OpCode (line 35291) -- new OpCode (line 35310) -- new OpCode (line 35387) -- new OpCode (line 35400) -- new OpCode (line 35413) -- new OpCode (line 35418) -- new OpCode (line 35435) -- new OpCode (line 35481) -- new OpCode (line 35586) -- new OpCode (line 35625) -- new OpCode (line 35703) -- new OpCode (line 35742) -- new OpCode (line 35793) -- new Operand\Temporary (line 37454) -- new Operand\Temporary (line 37936) -- new Operand\Temporary (line 38122) -- new Operand\Temporary (line 38154) -- new Operand\Temporary (line 38250) -- new Operand\Temporary (line 38372) -- new OpCode (line 38374) -- new OpCode (line 39634) -- new Operand\Temporary (line 40092) -- new OpCode (line 40616) -- new Operand\Literal (line 40915) -- new Variable (line 40917) -- new OpCode (line 40963) -- new OpCode (line 41178) -- new OpCode (line 41188) -- new OpCode (line 41191) -- new Operand\Temporary (line 41229) -- new OpCode (line 41231) -- new OpCode (line 41242) -- new Operand\Temporary (line 41245) -- new OpCode (line 41247) -- new OpCode (line 41255) -- new OpCode (line 41262) -- new OpCode (line 41270) -- new OpCode (line 41273) -- new OpCode (line 41301) -- new OpCode (line 41324) -- new OpCode (line 41341) -- new OpCode (line 41348) -- new Operand\Literal (line 42027) -- new OpCode (line 42893) -- new Literal (line 42925) -- new OpCode (line 43024) -- new Variable (line 43031) -- new Temporary (line 43033) -- new OpCode (line 43036) -- new CompileFatal (line 43371) -- new CompileFatal (line 43626) -- 927 class method(s) +- new Operand\Temporary (line 28067) +- new Operand\Temporary (line 28140) +- new Operand\Temporary (line 28145) +- new OpCode (line 28282) +- new OpCode (line 28383) +- new OpCode (line 28464) +- new OpCode (line 28549) +- new OpCode (line 28639) +- new OpCode (line 28743) +- new CfgVariable (line 30843) +- new Literal (line 30843) +- new Variable (line 30875) +- new Variable (line 30929) +- new OpCode (line 30958) +- new Operand\Temporary (line 31676) +- new OpCode (line 31678) +- new OpCode (line 31704) +- new OpCode (line 31720) +- new OpCode (line 31728) +- new OpCode (line 31735) +- new OpCode (line 31747) +- new OpCode (line 31764) +- new OpCode (line 31770) +- new OpCode (line 31776) +- new OpCode (line 31781) +- new OpCode (line 31797) +- new OpCode (line 31810) +- new Variable (line 31821) +- new Operand\Literal (line 31823) +- new OpCode (line 31826) +- new OpCode (line 31896) +- new OpCode (line 31907) +- new OpCode (line 31920) +- new OpCode (line 32094) +- new OpCode (line 32347) +- new OpCode (line 32353) +- new OpCode (line 32359) +- new OpCode (line 32384) +- new Variable (line 32411) +- new Temporary (line 32413) +- new Variable (line 32421) +- new Temporary (line 32423) +- new OpCode (line 32471) +- new Operand\Temporary (line 32492) +- new Operand\Temporary (line 32498) +- new Operand\Temporary (line 32504) +- new Operand\Temporary (line 32510) +- new Operand\Temporary (line 32519) +- new Operand\Temporary (line 34261) +- new Variable (line 34638) +- new Variable (line 34642) +- new Variable (line 34650) +- new Variable (line 34654) +- new Variable (line 34938) +- new OpCode (line 35031) +- new OpCode (line 35048) +- new OpCode (line 35067) +- new OpCode (line 35087) +- new OpCode (line 35129) +- new OpCode (line 35164) +- new OpCode (line 35182) +- new OpCode (line 35215) +- new OpCode (line 35256) +- new OpCode (line 35272) +- new OpCode (line 35290) +- new OpCode (line 35307) +- new OpCode (line 35321) +- new OpCode (line 35343) +- new OpCode (line 35365) +- new OpCode (line 35374) +- new OpCode (line 35393) +- new OpCode (line 35470) +- new OpCode (line 35483) +- new OpCode (line 35496) +- new OpCode (line 35501) +- new OpCode (line 35518) +- new OpCode (line 35564) +- new OpCode (line 35669) +- new OpCode (line 35708) +- new OpCode (line 35786) +- new OpCode (line 35825) +- new OpCode (line 35876) +- new Operand\Temporary (line 37537) +- new Operand\Temporary (line 38019) +- new Operand\Temporary (line 38205) +- new Operand\Temporary (line 38237) +- new Operand\Temporary (line 38333) +- new Operand\Temporary (line 38455) +- new OpCode (line 38457) +- new OpCode (line 39717) +- new Operand\Temporary (line 40175) +- new OpCode (line 40699) +- new Operand\Literal (line 40998) +- new Variable (line 41000) +- new OpCode (line 41046) +- new OpCode (line 41261) +- new OpCode (line 41271) +- new OpCode (line 41274) +- new Operand\Temporary (line 41312) +- new OpCode (line 41314) +- new OpCode (line 41325) +- new Operand\Temporary (line 41328) +- new OpCode (line 41330) +- new OpCode (line 41338) +- new OpCode (line 41345) +- new OpCode (line 41353) +- new OpCode (line 41356) +- new OpCode (line 41384) +- new OpCode (line 41407) +- new OpCode (line 41424) +- new OpCode (line 41431) +- new Operand\Literal (line 42110) +- new OpCode (line 42976) +- new Literal (line 43008) +- new OpCode (line 43107) +- new Variable (line 43114) +- new Temporary (line 43116) +- new OpCode (line 43119) +- new CompileFatal (line 43454) +- new CompileFatal (line 43709) +- 928 class method(s) - 45 closure(s) ### `lib/Compiler/AbstractMethodVisibilityCheck.php` @@ -30507,20 +30516,20 @@ Rank live CFG gaps across inventory files: `php script/bootstrap-inventory-triag ### `lib/VM/ClassConstExpr.php` **Warnings** (review for bootstrap subset): -- new Variable (line 107) -- new Variable (line 115) -- new Error (line 134) -- new ClassConstForwardReferenceException (line 183) -- new ClassConstForwardReferenceException (line 229) -- new Error (line 313) -- new Variable (line 318) -- new ReflectionClassConstant (line 392) -- new Variable (line 412) -- new Variable (line 418) -- new Variable (line 424) -- new Variable (line 430) -- new HashTable (line 436) -- new Variable (line 450) +- new Variable (line 151) +- new Variable (line 159) +- new Error (line 178) +- new ClassConstForwardReferenceException (line 227) +- new ClassConstForwardReferenceException (line 273) +- new Error (line 357) +- new Variable (line 362) +- new ReflectionClassConstant (line 436) +- new Variable (line 456) +- new Variable (line 462) +- new Variable (line 468) +- new Variable (line 474) +- new HashTable (line 480) +- new Variable (line 494) - 14 class method(s) ### `lib/VM/ClassConstMaterializer.php` diff --git a/docs/capabilities.md b/docs/capabilities.md index e93a14983fe..118473e8762 100644 --- a/docs/capabilities.md +++ b/docs/capabilities.md @@ -329,7 +329,7 @@ Auto-generated by `script/capability-matrix.php`. Do not edit by hand. | `getopt` | yes | yes | yes | standard | JIT PHPT | | `getprotobyname` | yes | yes | yes | standard | JIT PHPT; AOT PHPT | | `getprotobynumber` | yes | yes | yes | standard | JIT PHPT; AOT PHPT | -| `getrandmax` | yes | yes | yes | standard | | +| `getrandmax` | yes | yes | yes | standard | JIT PHPT | | `getrusage` | yes | yes | yes | standard | JIT PHPT; AOT PHPT | | `getservbyname` | yes | yes | yes | standard | JIT PHPT; AOT PHPT | | `getservbyport` | yes | yes | yes | standard | JIT PHPT; AOT PHPT | @@ -513,6 +513,7 @@ Auto-generated by `script/capability-matrix.php`. Do not edit by hand. | `mktime` | yes | yes | yes | standard | JIT PHPT | | `modf` | yes | yes | yes | standard | AOT PHPT | | `move_uploaded_file` | yes | yes | yes | standard | nested $_FILES + multipart web runtime (#52, #87); 006-FileUploadWeb; FILE_UPLOAD_WEB_AOT_SMOKE_GATE (#2012); FILE_UPLOAD_WEB_DEPLOY_SMOKE_GATE (#2028); JIT PHPT; AOT PHPT | +| `mt_getrandmax` | yes | yes | yes | standard | JIT PHPT | | `mt_rand` | yes | yes | yes | standard | JIT PHPT; AOT PHPT | | `mt_srand` | yes | yes | yes | standard | JIT PHPT; AOT PHPT | | `natcasesort` | yes | yes | yes | standard | JIT PHPT; AOT PHPT | diff --git a/docs/stdlib-jit-audit.md b/docs/stdlib-jit-audit.md index 2902c1aaa16..3a33ebe2550 100644 --- a/docs/stdlib-jit-audit.md +++ b/docs/stdlib-jit-audit.md @@ -37,6 +37,7 @@ Auto-generated by `script/audit-stdlib-jit.php`. Regenerate: `php script/audit-s - `get_declared_variables` — `ext/standard/get_declared_variables_.php` - `get_defined_vars` — `ext/standard/get_defined_vars_.php` - `getrandmax` — `ext/standard/getrandmax.php` +- `mt_getrandmax` — `ext/standard/mt_getrandmax.php` - `gzputs` — `ext/standard/gzputs.php` - `parse_ini_file` — `ext/standard/parse_ini_file.php` - `pfsockopen` — `ext/standard/pfsockopen.php` diff --git a/ext/standard/Module.php b/ext/standard/Module.php index a04734b6192..2e167739bbc 100755 --- a/ext/standard/Module.php +++ b/ext/standard/Module.php @@ -475,6 +475,7 @@ public function getFunctions(): array new mt_srand(), new srand(), new getrandmax(), + new mt_getrandmax(), new lcg_value(), new uniqid(), new str_pad(), diff --git a/ext/standard/mt_getrandmax.php b/ext/standard/mt_getrandmax.php new file mode 100644 index 00000000000..3da22dbd765 --- /dev/null +++ b/ext/standard/mt_getrandmax.php @@ -0,0 +1,39 @@ +requireExactArgCount($frame, 'mt_getrandmax', 0); + if (null === $frame->returnVar) { + return; + } + $frame->returnVar->int(VmMt19937::PHP_MT_RAND_MAX); + } + + public function call(Context $context, JITVariable ...$args): Value + { + $this->requireExactJitArgCount($context, $args, 'mt_getrandmax', 0); + $i64 = $context->getTypeFromString('int64'); + + return $i64->constInt(VmMt19937::PHP_MT_RAND_MAX, false); + } +} diff --git a/test/compliance/cases/stdlib/mt_getrandmax.phpt b/test/compliance/cases/stdlib/mt_getrandmax.phpt new file mode 100644 index 00000000000..63f337b7d89 --- /dev/null +++ b/test/compliance/cases/stdlib/mt_getrandmax.phpt @@ -0,0 +1,18 @@ +--TEST-- +stdlib mt_getrandmax() — MT_RAND_MAX parity (#17228, ext/random/random.c) +--FILE-- +getMessage(), "\n"; +} +--EXPECT-- +mt_getrandmax=yes +2147483647 +same_as_getrandmax=yes +mt_getrandmax() expects exactly 0 arguments, 1 given diff --git a/test/compliance/cases/stdlib/mt_getrandmax_jit.phpt b/test/compliance/cases/stdlib/mt_getrandmax_jit.phpt new file mode 100644 index 00000000000..608e9aa0f4b --- /dev/null +++ b/test/compliance/cases/stdlib/mt_getrandmax_jit.phpt @@ -0,0 +1,18 @@ +--TEST-- +stdlib mt_getrandmax() JIT — MT_RAND_MAX parity (#17228, ext/random/random.c) +--FILE-- +getMessage(), "\n"; +} +--EXPECT-- +mt_getrandmax=yes +2147483647 +same_as_getrandmax=yes +mt_getrandmax() expects exactly 0 arguments, 1 given diff --git a/test/repro/maintainer_gap_mt_getrandmax_missing.php b/test/repro/maintainer_gap_mt_getrandmax_missing.php new file mode 100644 index 00000000000..37ecbf3f332 --- /dev/null +++ b/test/repro/maintainer_gap_mt_getrandmax_missing.php @@ -0,0 +1,14 @@ +getMessage(), "\n"; +} diff --git a/test/selfhost/compiler_lib_spine_smoke/main.php b/test/selfhost/compiler_lib_spine_smoke/main.php index bd793e4a726..8c25a96cfce 100644 --- a/test/selfhost/compiler_lib_spine_smoke/main.php +++ b/test/selfhost/compiler_lib_spine_smoke/main.php @@ -2164,6 +2164,7 @@ require_once __DIR__.'/../../../ext/standard/getprotobyname.php'; require_once __DIR__.'/../../../ext/standard/getprotobynumber.php'; require_once __DIR__.'/../../../ext/standard/getrandmax.php'; +require_once __DIR__.'/../../../ext/standard/mt_getrandmax.php'; require_once __DIR__.'/../../../ext/standard/getrusage.php'; require_once __DIR__.'/../../../ext/standard/getservbyname.php'; require_once __DIR__.'/../../../ext/standard/getservbyport.php'; diff --git a/test/unit/BootstrapSelfhostBundleTest.php b/test/unit/BootstrapSelfhostBundleTest.php index 7839f9993a4..02f77a3ed0b 100644 --- a/test/unit/BootstrapSelfhostBundleTest.php +++ b/test/unit/BootstrapSelfhostBundleTest.php @@ -467,6 +467,7 @@ final class BootstrapSelfhostBundleTest extends TestCase 'ext/standard/VmCombinedLcg.php', 'ext/standard/VmMt19937.php', 'ext/standard/getrandmax.php', + 'ext/standard/mt_getrandmax.php', 'ext/standard/lcg_value.php', 'ext/standard/mt_rand.php', 'ext/standard/mt_srand.php',