1
0
mirror of https://github.com/php/php-src.git synced 2026-04-27 18:23:26 +02:00
Commit Graph

228 Commits

Author SHA1 Message Date
Dmitry Stogov 6fb9e24218 Allow generation of VM map 2018-02-22 15:31:00 +03:00
Dmitry Stogov 9c0427cada Mark exceptional helpers as "cold" 2018-02-21 12:07:29 +03:00
Haitao Lv 764e231cc5 fix ZEND_VM_SET_OPCODE_HANDLER cannot set user opcode handler 2018-02-20 10:46:41 +03:00
Dmitry Stogov 050d62484b Fixed typo 2018-02-19 17:57:46 +03:00
Dmitry Stogov 6d3e1bd124 Added VM instrumentation ability 2018-02-19 16:42:02 +03:00
Dmitry Stogov 190a970dd6 Elimintate duplicate error message 2018-02-19 16:11:28 +03:00
Nikita Popov b0af9ac733 Avoid live range references in opcodes
Don't store the live range of the freed variable for FREE_ON_RETURN
frees, instead look it up at runtime. As this is an extremely
unlikely codepath (in particular, it requires a loop variable with
a throwing destructor), saving the runtime lookup of the live range
is not worth the extra complexity this adds everywhere else.
2018-02-16 21:30:48 +01:00
Dmitry Stogov 285bfb96fe Optimize "backup" functions of inlined opcode handlers for size 2018-02-15 17:04:41 +03:00
Dmitry Stogov 3778abfc15 Added ability to manually sort opcode handlers (not used yet) 2018-02-15 15:56:38 +03:00
Dmitry Stogov 633d037ed5 Added simple VM instrumentation ability 2018-02-15 15:55:19 +03:00
Dmitry Stogov 23da83c8ca Avoid inlining of rarely used handlers 2018-02-15 13:48:04 +03:00
Haitao Lv 5206f79987 fix unknown opcode overflow error 2018-02-12 09:27:55 +01:00
Dmitry Stogov ca035f26aa Moved "zval.u2.cache_slot" into free room of "zend_op" 2018-02-05 19:41:47 +03:00
Dmitry Stogov 3a794d39f0 Avoid repeatable ARG_SHOULD_BE_SENT_BY_REF() checks in FETCH_*FUNC_ARG and following SEND_VAR_EX. Perform the check once in a new CHECK_FUNC_ARG opcode and reuse in the following FETCH_*FUNC_ARG and SEND_FUNC_ARG (SEND_VAR_EX replacement). 2018-02-05 19:40:06 +03:00
Dmitry Stogov ba298725d1 Changed CATCH instruction format (extended_value moved into op2, op2 into result, result into extended_value) 2018-01-31 22:39:30 +03:00
Dmitry Stogov 9c7fb529ce Changed FETCH_CONSTANT instruction format (extended_value moved into op1) 2018-01-31 18:15:25 +03:00
Dmitry Stogov f67f455ef7 Changed FETCH_CLASS instruction format (extended_value moved into op1) 2018-01-31 18:14:43 +03:00
Dmitry Stogov 9701b644fa Compress handlers table 2018-01-31 16:46:30 +03:00
Dmitry Stogov 17a3b48454 Make IS_UNUSED to be zero. 2018-01-31 11:18:41 +03:00
Dmitry Stogov 267b78550e Use fastcall calling convention 2018-01-16 10:33:41 +03:00
Dmitry Stogov c73a42ccec Added abiliy to mark object specific handlers with most often used operand types as HOT. (UNUSED+CONST and CV+CONST) 2018-01-10 19:00:38 +03:00
Dmitry Stogov 83aa742dde Removed unused array 2018-01-09 23:17:10 +03:00
Dmitry Stogov 09b1bfecee Allow commas in specializer conditions 2018-01-09 15:08:18 +03:00
Xinchen Hui a6519d0514 year++ 2018-01-02 12:57:58 +08:00
Dmitry Stogov f860ae451a fixed "unused function" compilation warning 2017-12-18 11:43:12 +03:00
Dmitry Stogov b337b90bac Fix warning in the proper place 2017-12-18 11:28:59 +03:00
Dmitry Stogov 588f1df7a2 Remove duplicate handlers for commutative operations 2017-12-15 13:42:54 +03:00
Dmitry Stogov 9e709e2fa0 Move constants into read-only data segment 2017-12-14 18:43:44 +03:00
Dmitry Stogov 91507ba6e8 Reduced VM code size.
Made FETCH_DIM/OBJ_FUNC_ARG to dispatch ro corresponding FETCH_DIM/OBJ_R/_W handlers.
Merged TMP and VAR specializations of ZEND_FETCH_OBJ_R.
Allowed dispatching to less specialized handelrs and helpers. (e.g. from OP_TMP_CONST to OP_TMPVAR_CONST).
2017-12-07 01:52:27 +03:00
Dmitry Stogov d1d1aff4e5 Optimization of init_func_execute_data() 2017-12-06 02:53:30 +03:00
Nikita Popov 828d8e635b Fix ZEND_VM_SPEC=0 build 2017-11-24 23:06:01 +01:00
Dmitry Stogov 33b094479b TYPE_CHECK instruction changed. Now it keeps in extended_value a type mask.
This makes check for "boolean" cheaper and allows check combination e.g. (is_string($a) || is_null($a))
2017-11-23 15:58:34 +03:00
Dmitry Stogov e70618aff6 Changed the way VM accesses constant operands in 64-bit builds. 2017-10-04 16:53:01 +03:00
Dmitry Stogov bfa154448d VM refactoring, to avoid passing "execute_data" into helper functions that can access it using global register variable. 2017-06-16 01:42:49 +03:00
Dmitry Stogov fc927dc263 Switch to HYBRID VM 2017-05-17 15:07:33 +03:00
Dmitry Stogov 7640e0a5f9 HYBRID VM cleanup 2017-05-16 09:24:23 +03:00
Dmitry Stogov 69b4f8ed79 Fixed USER_OPCODE handling in HYBRID VM. 2017-05-15 21:17:58 +03:00
Xinchen Hui e1c32646b4 typo 2017-05-09 17:15:42 +08:00
Dmitry Stogov 2f9d72b309 Cleanup 2017-05-09 09:37:46 +03:00
Dmitry Stogov 71bfb430af Fixed zend_vm_call_opcode_handler(). Make phpdbg work with HYBRID VM. 2017-05-04 18:56:28 +03:00
Dmitry Stogov b5e857b905 Added missing ZEND_VM_HOT define 2017-05-04 17:57:49 +03:00
Dmitry Stogov 27e01cd918 Implemented HYBRID VM instruction dispatch method that takes advantages of both CALL and GOTO VMs. 2017-05-03 10:01:22 +03:00
Sammy Kaye Powers 9e29f841ce Update copyright headers to 2017 2017-01-02 09:30:12 -06:00
Sara Golemon 16758a3c66 Merge branch 'PHP-7.1'
* PHP-7.1:
  Remove extraneous parentheses in conditions
2016-12-25 22:18:27 -08:00
Sébastien Santoro 5d7c774bea Remove extraneous parentheses in conditions
The zend_vm_gen.php generator now checks if the condition is already
enclosed by parentheses, and them only if needed.

This fixes nine clang/llvm parentheses-equality warnings.
2016-12-25 22:17:46 -08:00
Kalle Sommer Nielsen cf24a61735 Disable C4101 warnings entirely on Windows 2016-12-08 03:50:31 +01:00
Bob Weinand 444d612b62 Use an inline handler instead of repeating logic for calling assign op helpers each time 2016-12-05 10:55:11 +01:00
Dmitry Stogov 22cebaf89a Revert "Fix return value memory leaks upon exceptions in opcode operand freeing"
This reverts commit 9ad9d7ae37.
2016-12-02 11:58:41 +03:00
Bob Weinand 9ad9d7ae37 Fix return value memory leaks upon exceptions in opcode operand freeing 2016-11-30 17:44:34 +01:00
Xinchen Hui 38f7d595c0 Remove redundant \t 2016-08-25 13:29:22 +08:00