Commit Graph
617 Commits
Author SHA1 Message Date
Dmitry Stogov dddb40313b Keep track information about used JIT trigger in ZEND_FUNC_INFO(op_array)->func_info.flags 2020-09-29 13:05:24 +03:00
Dmitry Stogov f722512c4a Move invariant type guard out of loop 2020-09-28 23:54:28 +03:00
Dmitry Stogov c3206c28d7 Dump class names 2020-09-28 20:29:46 +03:00
Dmitry Stogov 2a71cb3ce1 Improved trace selection rules 2020-09-28 17:04:34 +03:00
Dmitry Stogov d1ddccdc19 Fixed usage of invalid frame for exit point 2020-09-28 16:18:06 +03:00
Dmitry Stogov 6dd840182e Missed opline guard 2020-09-28 14:47:45 +03:00
Dmitry Stogov 5783e611a2 Improve trace selection (avoid blacklisting of trace that may be linked). 2020-09-23 23:50:44 +03:00
Dmitry Stogov 3c4fb70f2b Replace ZEND_JIT_TRACE_STOP_RETURN_HALT and ZEND_JIT_TRACE_STOP_HALT by separate ZEND_JIT_TRACE_HALT flag. 2020-09-23 15:44:04 +03:00
Nikita Popov 7fedee873f Fix shift ub
And typo in macro name
2020-09-23 10:04:32 +02:00
Dmitry Stogov 3dde6fc4ac Fix extra args leak 2020-09-23 00:21:39 +03:00
Dmitry Stogov 57a3fbb1e1 Fixed INIT_METHOD_CALL + IS_VAR + reference in tracing JIT 2020-09-22 00:47:23 +03:00
Dmitry Stogov 43e58d3221 Fixed incorrect assumption about sizeof(zend_reference) 2020-09-21 23:58:18 +03:00
Dmitry Stogov 4ff2122275 Ficed 32-bit JIT (inconsistent CPU stack state) 2020-09-21 23:43:31 +03:00
Dmitry Stogov 5a085777b7 Fixed incorrect JIT for FETCH_THIS+SEND_REF 2020-09-21 21:53:03 +03:00
Sammy Kaye Powers 12306728c5 Add system ID entropy API
The `zend_system_id` is a (true global) system ID that fingerprints a process state. When extensions add engine hooks during MINIT/startup, entropy is added the system ID for each hook. This allows extensions to identify that changes have been made to the engine since the last PHP process restart.

Closes GH-5871
2020-09-18 14:26:44 -07:00
Dmitry Stogov d5d31ea3b3 Cleanup observer API and add JIT support 2020-09-18 12:55:58 +03:00
Nikita Popov 34bb5ba2ea Remove support for EXT_NOP
This is an annoying edge case that regularly gets broken. As we're
not aware of significant users of this API, and there are other
ways to hook this, remove support for EXT_NOP.
2020-09-18 11:03:08 +02:00
Dmitry Stogov a9cbdafa69 Support for ZEND_COMPILE_EXTENDED_STMT 2020-09-17 23:19:28 +03:00
Dmitry Stogov 0f9aefa64f Fixed incorrect live-range construction 2020-09-17 19:39:44 +03:00
Dmitry Stogov 23429b5818 Fixed incorrect register allocation 2020-09-17 18:36:45 +03:00
Dmitry Stogov e9820bf470 Fixed memory leak in ext/spl/tests/bug77263.phpt 2020-09-17 11:55:50 +03:00
Dmitry Stogov f786c0e097 Optimize code for FETCH_THIS + INIT_METHOD_CALL/ASSIGN_OBJ_OP/etc 2020-09-16 14:22:36 +03:00
Dmitry Stogov e27776343f Fixed incorrect constant string access 2020-09-16 10:49:54 +03:00
Dmitry Stogov 5f1fb1a5a4 JIT for INIT_METHOD_CALL 2020-09-16 10:25:36 +03:00
Dmitry Stogov f5bbb0480e Tracing JIT for INIT_DYNAMIC_CALL (closure only) 2020-09-15 15:57:57 +03:00
Dmitry Stogov a4c3aee5b2 Support for reference 2020-09-14 23:30:49 +03:00
Dmitry Stogov a351da55bf Simplify zend_jit_pre/post_inc/dec_typed_ref() helpers 2020-09-14 22:26:34 +03:00
Dmitry Stogov 8f342ad4d2 JIT for PRE/POST_INC/DEC_OBJ 2020-09-14 19:36:15 +03:00
Dmitry Stogov bf515649ff JIT for ASSIGN_OBJ_OP 2020-09-14 13:31:41 +03:00
Dmitry Stogov 0a03291b51 Allocate Windows 64 shadow stack space 2020-09-14 10:41:22 +03:00
Benjamin Eberlei ff0e39bb4d Remove @jit Docblock support for now due to dev-time constraints 2020-09-14 09:21:05 +02:00
Dmitry Stogov ccd0348d52 Eliminate repeatable class guards and unnecessary IS_UNDEF property checks 2020-09-11 10:30:43 +03:00
Dmitry Stogov 7b0a053169 JIT for ASSIGN_OBJ 2020-09-10 23:41:50 +03:00
Dmitry Stogov 00076ef2b9 Attempt to fix bug #80014 (PHP 8.0 beta2 crashes with default JIT flags due to hardware incompatibility) 2020-09-10 09:34:32 +03:00
Dmitry Stogov d2efb7e6c4 Eliminate unnecessary IS_INDIRECT guards 2020-09-10 02:20:15 +03:00
Dmitry Stogov 817ae41496 JIT for ASSIGN_DIM[_OP] with first IS_VAR + IS_INDIRECT operand 2020-09-09 21:41:48 +03:00
Máté Kocsis 9975986b7e Improve error messages mentioning parameters instead of arguments
Closes GH-5999
2020-09-09 10:47:43 +02:00
Dmitry Stogov c5b42be40e Fixed memory leak 2020-09-09 11:09:20 +03:00
Dmitry Stogov d6cc6b2dee Tracin JIT support for FETCH_DIM_W/RW with IS_VAR + IS_INDIRECT first operand. 2020-09-09 10:35:44 +03:00
Nikita Popov 536e5b4953 Pass correct op_info to zend_jit_fetch_dim() 2020-09-09 09:29:28 +02:00
Dmitry Stogov 73c7fa272d JIT for FETCH_DIM_W/RW insructions 2020-09-09 02:41:22 +03:00
Dmitry Stogov b106463d37 JIT for IN_ARRAY instruction. 2020-09-08 21:03:51 +03:00
Dmitry Stogov 02b645e47a JIT for FETCH_LIST_R 2020-09-08 16:47:15 +03:00
David Carlier 8e05c44496 Opcache JIT, code simplification for Haiku.
More straightforward approach to get the path of the
 current PHP process.

Closes GH-6082.
2020-09-07 10:15:28 +02:00
Dmitry Stogov 56a9eeda65 Avoid unnecessary IP initiliaization on trace linking 2020-09-04 11:42:13 +03:00
Dmitry Stogov 3f4a5003aa Cleanup macro/function names 2020-09-04 02:10:48 +03:00
Dmitry Stogov 531d17f0bd Load EX(opline) in one instuction if possible 2020-09-03 23:53:02 +03:00
Dmitry Stogov c58c4be5df Reorder DynAsm macros (no other changes) 2020-09-03 23:52:24 +03:00
Dmitry Stogov 9dc9534637 If we don't know the return address, just escape to VM, instead of adding side exit.
Remove unnecessary exception checks.
2020-09-03 17:12:23 +03:00
Dmitry Stogov 67e9b3be39 JIT for FE_FETCH_R 2020-09-03 12:06:06 +03:00