Xinchen Hui
cc4a198d19
Fixed segfault
2014-12-21 23:18:56 -05:00
Dmitry Stogov
00628afd74
Fixed memory leaks
2014-12-19 19:43:17 +03:00
Nikita Popov
0f815642e0
Drop ZEND_PRINT opcode in favor of ZEND_ECHO
...
The return value long(1) is an IS_CONST operand now.
2014-12-18 14:39:40 +01:00
Anatol Belski
2eef2abee5
Merge remote-tracking branch 'origin/master' into native-tls
...
* origin/master:
Optimize argument passing handlers:
Fix pcre non-FAST_ZPP build
Conflicts:
Zend/zend_compile.c
Zend/zend_execute.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/pcre/php_pcre.c
2014-12-16 17:13:47 +01:00
Dmitry Stogov
3a18597774
Optimize argument passing handlers:
...
- predcalculate offsets of passed argument and store it in opline->result.var for ZEND_SEND_*;
- don't update "number of passed arguments" op each ZEND_SEND_* opcode, store it on call frame creation
- Change ZEND_HANDLE_EXCEPTION to determine "number of passed arguments" in incomplete calls fefore freeing
2014-12-16 18:40:52 +03:00
Anatol Belski
209a7a27a5
Merge remote-tracking branch 'origin/master' into native-tls
...
* origin/master:
Revert "Removed useless local variable"
Fix the fix for bug #55415
add BC breaks from PHPNG RFC
add include for definition of php_url_encode
2014-12-16 08:04:51 +01:00
Dmitry Stogov
caf5521416
Revert "Removed useless local variable"
...
This reverts commit 44ae32ad55
.
It doesn't work properly. We can't access call->scope after free.
2014-12-16 01:44:10 +03:00
Anatol Belski
f62ad3bc57
Merge remote-tracking branch 'origin/master' into native-tls
...
* origin/master:
made the apache ini holders to be zend_bool
Removed useless local variable
Use simpler functions
Fixed test
small fixes to UPGRADING
Reorder to save alignment size (of course, only for common used structs)
2014-12-15 13:57:43 +01:00
Dmitry Stogov
44ae32ad55
Removed useless local variable
2014-12-15 14:43:30 +03:00
Anatol Belski
e112f6a04e
second shot on removing TSRMLS_*
2014-12-14 14:07:59 +01:00
Anatol Belski
bdeb220f48
first shot remove TSRMLS_* things
2014-12-13 23:06:14 +01:00
Dmitry Stogov
3893c1fc3d
Fixed compilation warnings
2014-12-12 21:57:34 +03:00
Dmitry Stogov
14e29f5146
Reduced size of zend_op on 64-bit systems.
...
the main idea - the smaller the zend_op structure, the lees memory traffic is required to load VM instructions during execution. The patch reduces the size of each opcode from 48 to 32 bytes (saves 16 bytes for each opcode, and applications use thousands of opoceds). This reduced the number of CPU cache misses by 12% and improved performance of real-life apps by 1-2%.
The patch affects how constants and jump targets are represented in VM during execution. Previously they were implemented as absolute 64-bit pointers. Now they are relative 32-bit offsets.
In run-time constant now should be accessed as:
RT_CONSTANT(op_array, opine->op1) instead of opline->op1.zv
EX_CONSTANT(opline->op1) instead of opline->op1.zv
Jump targets:
OP_JMP_ADDR(opline, opline->op2) instead of opline->op2.jmp_addr
The patch doesn't change zend_op representation for 32-bit systems. They still use absolute addresses. The compile-time representation is also kept the same.
2014-12-12 10:19:41 +03:00
Dmitry Stogov
9ea35a37b9
Make ZEND_INIT_FCALL keep predcalculted size of necessary stack space in opline->op1.num to avoid its recalculation on each execution.
2014-12-12 09:01:42 +03:00
Xinchen Hui
634448e2de
Revert "Save one xor instr"
...
This reverts commit bd5c5d3729
.
2014-12-11 03:19:33 -05:00
Xinchen Hui
882741639c
Merge branch 'master' of https://git.php.net/repository/php-src
2014-12-11 00:03:45 -05:00
Xinchen Hui
bd5c5d3729
Save one xor instr
2014-12-11 00:03:31 -05:00
Anatol Belski
da78550006
fix TS build and C89 compat
2014-12-10 12:23:46 +01:00
Dmitry Stogov
29b9105beb
Wrap RETURN_VALUE_USED() with EXPECTED() or UNEXPECTED() macros according to more frequent usage patterns.
2014-12-09 17:07:12 +03:00
Dmitry Stogov
5b3a69c29f
Improved ASSIGN_<OP>, ASSIGN_DIM and UNSET_DIM
2014-12-09 15:15:24 +03:00
Dmitry Stogov
98e81e13cf
simplified code
2014-12-09 12:17:55 +03:00
Dmitry Stogov
0b19a7c235
Move ZVAL_DEREF() and make_real_object() into slow paths.
2014-12-09 03:05:06 +03:00
Dmitry Stogov
f70545678b
Pass znode_op structure by value (it fits into one word) instead of pointer to structure.
2014-12-09 03:03:38 +03:00
Dmitry Stogov
11f7854e75
Move checks for references into slow paths.
2014-12-09 01:09:44 +03:00
Dmitry Stogov
b6c6e7960a
Improved ASSIGN_DIM and ASSIGN_OBJ
2014-12-09 00:10:23 +03:00
Dmitry Stogov
0bfc9c6979
Fixed typo
2014-12-08 18:40:37 +03:00
Dmitry Stogov
db4271d332
Move checks for references into slow paths of handlers or helpers. Remove duplicate opcode handlers.
2014-12-08 18:11:14 +03:00
Dmitry Stogov
a555bdf7d1
Removed useless handlers
2014-12-06 03:03:48 +03:00
Dmitry Stogov
5ba4ae7f67
Move checks for references into slow paths of operator functions. Remove duplicate opcode handlers.
2014-12-06 02:14:45 +03:00
Dmitry Stogov
8ab9396adf
Get rid of few more duplicate handlers
2014-12-05 18:23:39 +03:00
Dmitry Stogov
e6180ebb64
Improved BOOL, BOOL_NOT and conditional jumps
2014-12-05 17:04:15 +03:00
Dmitry Stogov
62867f008d
Improved ECHO and PRINT
2014-12-05 15:07:49 +03:00
Dmitry Stogov
a417ebfc48
Get rid of duplicare FETCH_DIM_* handlers
2014-12-05 13:45:03 +03:00
Dmitry Stogov
c7f695f311
Get rid of duplicate handlers (where the code for IS_TMP_VAR and IS_VAR operands is the same)
2014-12-05 12:40:47 +03:00
Anatol Belski
e04971ce21
fix TS build
2014-12-03 19:50:02 +01:00
Dmitry Stogov
e5716d1b5a
Get rid of duplicate handlers (ZEND_ADD_SPEC_TMP_TMP and ZEND_ADD_SPEC_VAR_VAR are absolutely the same).
2014-12-03 18:02:02 +03:00
Dmitry Stogov
5dd427eac2
Use zend_string* for op_array->arg_info[]->name and op_array->arg_info[]->class_name. For internal functions we still use char*.
2014-12-03 16:56:09 +03:00
Dmitry Stogov
631f05f71e
Improved POST INC/DEC
2014-12-03 02:47:03 +03:00
Dmitry Stogov
60dbf7b541
Fixed "finally" handling (the bug was introduced by recent removing of EX(delayed_exception))
2014-12-02 16:05:30 +03:00
Dmitry Stogov
2d39d033e3
Avoid useless dereferences
2014-11-28 19:45:39 +03:00
Dmitry Stogov
38d70aec3e
Removed useless check
2014-11-28 16:50:35 +03:00
Dmitry Stogov
1da14c9f81
Pack EX(frame_info) into EX(This).u1.v.reserved. Rename "frame"kind" into "call_kind" and VM_FRAME_... into ZEND_CALL_...
2014-11-28 10:33:03 +03:00
Dmitry Stogov
11384ba77b
Pack EX(num_args) into EX(This).u2.num_args
2014-11-28 10:28:49 +03:00
Dmitry Stogov
9a36cb1a07
Get rid of EX(scope). In most cases we use EG(scope) anyway. EX(scope) was used to switch EG(scope) back after call, but it's possibleto use EX(func)->common.scope instead.
2014-11-28 10:21:18 +03:00
Dmitry Stogov
216ef32173
Changed "finally" handling. Removed EX(fast_ret) and EX(delayed_exception). Allocate and use additional IS_TMP_VAR slot on VM stack instead.
2014-11-27 09:56:43 +03:00
Dmitry Stogov
303d73ecd2
Reimplemented silence operator (@) handling on exceptions. Now each silence region is stored in op_array->brk_cont_array. On exception ZEND_HANDLE_EXCEPTION handler traverse this array and restore original EG(error_reporting) if exception occured inside a "silence" region.
2014-11-26 22:44:58 +03:00
Dmitry Stogov
1c569b41d5
Merge branch 'PHP-5.6'
...
* PHP-5.6:
Better fix for bug #68446
2014-11-25 18:12:30 +03:00
Dmitry Stogov
e116595e63
Better fix for bug #68446
2014-11-25 18:09:08 +03:00
Dmitry Stogov
83ce1d9a78
Revert "Merge remote-tracking branch 'origin/PHP-5.6'"
...
This reverts commit 38229d13d1
, reversing
changes made to 77f172725a
.
2014-11-25 15:40:08 +03:00
Bob Weinand
aba95c2399
Revert "Fix bug #68446 (bug with constant defaults and type hints)"
...
This reverts commit 5ef138b0c7
.
2014-11-25 12:24:29 +01:00
Dmitry Stogov
a271c7a5cf
Use specialized destructors when types of zvals are known.
2014-11-25 01:22:59 +03:00
Dmitry Stogov
e45dbba560
Micro optimization
2014-11-24 15:46:34 +03:00
Bob Weinand
38229d13d1
Merge remote-tracking branch 'origin/PHP-5.6'
...
Conflicts:
Zend/zend_compile.c
Zend/zend_execute.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
2014-11-23 23:50:47 +01:00
Bob Weinand
5ef138b0c7
Fix bug #68446 (bug with constant defaults and type hints)
2014-11-23 21:10:41 +01:00
Dmitry Stogov
03815693ec
Fixed typo
2014-11-20 10:13:08 +03:00
Dmitry Stogov
e20a727430
SEND_VAR_NO_REF optimization
2014-11-18 14:37:36 +03:00
Dmitry Stogov
c746dcd7fd
Get rid of zend_free_op structure (use zval* instead).
...
Get rid of useless TSRMLS arguments.
2014-11-18 09:05:48 +03:00
Dmitry Stogov
1f432c85b0
Micro optimization
2014-11-13 17:36:08 +03:00
Xinchen Hui
84cd04fca0
A better fix(do the convertion in compile time)
2014-11-10 23:35:45 +08:00
Xinchen Hui
249e3de5da
Fixed segfault in bug62500.phpt
2014-11-10 17:54:18 +08:00
Dmitry Stogov
75041379a6
Improved object property access.
2014-11-06 14:50:03 +03:00
Andrea Faulds
faa4c6155e
Respect flags when fetching class by name
2014-11-04 00:15:26 +00:00
Xinchen Hui
fced6e6148
Save memory allocating
2014-10-30 16:55:40 +08:00
Xinchen Hui
af22cd665c
Fixed memory leak in ZEND_JMPZ_EX (op1 and result may share same slot)
2014-10-30 16:00:08 +08:00
Dmitry Stogov
6e396961c5
Fixed "instanceof" with undefined classes
2014-10-23 14:50:57 +04:00
Dmitry Stogov
4fd435abab
Embed FETCH_CLASS <string> into the following NEW
2014-10-23 11:52:34 +04:00
Dmitry Stogov
8dedd863bc
Get rid of ZEND_FETCH_MAKE_REF
2014-10-22 21:45:02 +04:00
Dmitry Stogov
534d854fb2
Embed FETCH_CLASS <string> into the following INSTANCEOF
2014-10-22 17:23:43 +04:00
Dmitry Stogov
779ca61e32
Don't use opline->extended_value for FETCH_CLASS flags where it's unnecessary
2014-10-22 17:22:21 +04:00
Dmitry Stogov
36fa572aaa
ZEND_RECV didn't really use opline->extended_value for FETCH_CLASS flags
2014-10-22 15:22:30 +04:00
Dmitry Stogov
fe8577efb1
Optimized ASSIGN_DIM and related opcodes
2014-10-21 19:30:43 +04:00
Dmitry Stogov
33645f4f55
micro optimization
2014-10-21 16:18:06 +04:00
Dmitry Stogov
5d9792de9a
Avoid "goto"
2014-10-21 11:43:13 +04:00
Dmitry Stogov
089f496799
Moved proxy object support in ASSIGN_ADD (and family) from VM to slow paths of corresponding operators
2014-10-21 03:24:20 +04:00
Dmitry Stogov
ae127faf5b
Simplification
2014-10-21 00:56:48 +04:00
Dmitry Stogov
176b8d7ca3
Micro optimizations for isset/empty
2014-10-17 00:17:13 +04:00
Dmitry Stogov
ed18d67c5e
Fixed bug #68215 (Behavior of foreach has changed)
2014-10-15 17:02:54 +04:00
Nikita Popov
5d94ba6ec3
More fixes for array/object casts with temporary variables
2014-10-13 15:31:59 +02:00
Nikita Popov
e62edf2e58
Fix array/object cast of refcounted tmp var
2014-10-13 15:31:59 +02:00
Nikita Popov
2622cfc2fb
Deref right value for compound assign ops
...
Currently we do not support IS_REFERENCE operands for most of our
*_function's (should we?), so we need to deref here.
2014-10-13 15:31:59 +02:00
Nikita Popov
b7e139a59c
Fix incdec of referenced properties
...
I thought these SEPARATE_ZVAL_IF_NOT_REF usages were safe at first,
because incdec op supports reference variables. However this
violates the constraint that IS_TMP_VAR variables may not be
references (which is an issue if you use the result of the incdec
op).
Still need to fix the cases where read_property/write_property is
used.
2014-10-12 20:55:52 +02:00
Dmitry Stogov
af3354dc43
Improved specialisation $this variable accessed through IS_UNUSED operand must be IS_OBJECT, so we don't have to check for its type or perform dereference.
2014-10-10 16:36:12 +04:00
Dmitry Stogov
2c434470a6
Help to CPU branch predictor
2014-10-09 23:58:41 +04:00
Nikita Popov
c061c82945
Remove Z_OBJ_CLASS_NAME_P
...
Doesn't make much sense anymore, now that get_class_entry is
gone.
2014-10-09 20:48:27 +02:00
Nikita Popov
e5e9d8346f
Remove zend_get_class_entry function
2014-10-09 14:17:30 +02:00
Nikita Popov
ee5b30fa19
Remove support for classes without class entries
...
get_class_entry must be non-NULL and return non-NULL.
2014-10-09 13:58:14 +02:00
Nikita Popov
e919caca86
Fix bug #68191 : Broken reference across objects
2014-10-09 12:05:56 +02:00
Dmitry Stogov
fe501914f0
Micro optimization
2014-10-07 23:48:55 +04:00
Dmitry Stogov
2ea97c6f5a
Improved return by reference handling
2014-10-07 22:38:37 +04:00
Dmitry Stogov
67be34ec95
Remove useless parts of EX(old_error_reporting)
2014-10-07 17:54:24 +04:00
Dmitry Stogov
33e137d409
Merged EX(frame_kind) and EX(flags) into single word
2014-10-07 17:12:12 +04:00
Nikita Popov
e24c24c108
Fix bug #68162 : isset($$varname) always true
2014-10-06 20:39:00 +02:00
Nikita Popov
390900cbcb
Fix isset/unset on by-ref names as well
2014-10-06 18:56:23 +02:00
Tjerk Meesters
82523c0752
Merge branch 'pr/647'
...
* pr/647: (33 commits)
zend_uint -> uint32_t
Fix nesting for *non*-compile-time-resolveable functions See a1a4ba9511 (commitcomment-7414223)
Add tests for calls to nested, *non*-compile-time-resolveable functions See a1a4ba9511 (commitcomment-7414362)
Make list of opcodes used for nesting calculation consistent with `zend_do_convert_call_user_func()` in Zend/zend_compile.c
Rewrite code to use ZEND_VM_JMP() instead of repeated ZEND_VM_INC_OPCODE() calls
QA: Simplify code to find matching ZEND_DO_FCALL_BY_NAME CG(context).nested_calls is stored inside the initializer's result.num and inside the finalizer's op2.num, by comparing these we don't need to count manually, and are thus safer from future expansion with specialized opcodes e.g.
Fix expected fatal error, now is catchable fatal
Adjust expected fatal error message Now also includes "on [TYPE]" after merge from master
Check for memory leaks when not using return value
Adjust expected fatal error message Now also includes "on [TYPE]" after merge from master
Add tests with arrays as parameters
Handle ZEND_NEW nesting
Also verify nesting with dynamically called static methods
Handle ZEND_INIT_NS_FCALL_BY_NAME nesting
QA: Refactor: Split tests a bit to make them more comprehendable
Support nested static calls
Handle ZEND_EXT_FCALL_END, skipping if necessary Verified with running tests with new "-e" run-tests arg: $ make test TESTS=Zend/tests/*-on-non-objects-*phpt TEST_PHP_ARGS=-e # Tests passed : 11 (100.0%)
Add support for PHP's 'extended information for debugger/profiler' mode
Verify non-CV-operands also work See discussion https://github.com/php/php-src/pull/647#issuecomment-48050551
Only allocate NULL return value if it's actually used
...
Conflicts:
ext/date/tests/bug67118.phpt
2014-10-06 05:52:43 +08:00
Dmitry Stogov
7c7b9184b1
Fixed list() behavior inconsistency (string handling is disabled for all cases, ArrayAccess objects handling is enabled for all cases, ZEND_FETCH_DIM_TMP_VAR opcode is renamed into ZEND_FETCH_LIST, ZEND_FETCH_ADD_LOCK flag is removed).
2014-10-05 13:02:58 +04:00
Dmitry Stogov
2e1b8ba4b7
Moved checks and error reporting related to static methods from DO_FCALL inti INTI_FCALL* opcodes that may really deal with static methods. (In some rare cases it may lead to different order of warning messages).
2014-10-04 14:55:44 +04:00
Nikita Popov
e7623f470f
Fix bug #68133 and bug #68135
2014-10-03 21:06:26 +02:00
Dmitry Stogov
bd9a234645
Replaced EG(This) and EX(object) with EX(This).
...
Internal functions now recieves zend_execute_data as the first argument.
2014-10-03 19:32:46 +04:00
Dmitry Stogov
5c63a4f72b
Micro optimization for the most frequency case
2014-10-03 12:18:15 +04:00
Dmitry Stogov
8857af8494
Use inline finction for OBJ_RELEASE() macro
2014-10-01 16:35:56 +04:00
Dmitry Stogov
9f7564b12b
Removed zend_execute_data->prev_nested_call. Reuse prev_execute_data instead.
2014-10-01 10:46:13 +04:00
Nikita Popov
67a11b61cd
Drop unused INIT_STRING opcode
...
INIT_STRING has been implemented as an UNUSED op1 to ADD_* for
some time now.
2014-09-29 22:59:57 +02:00
Nikita Popov
290d71de75
Drop unused RAISE_ABSTRACT_ERROR opcode
...
Abstract methods are being prevented from being called in DO_FCALL
etc.
2014-09-29 22:50:56 +02:00
Andrea Faulds
2d069f640e
Merge branch 'coalesce_operator'
...
* coalesce_operator:
Extended coalesce operator test case for ordering/short-circuiting
Ensure not evaluated twice
Added test
Initial coalesce operator implementation
2014-09-28 00:07:04 +01:00
Timm Friebe
0a9e207a77
zend_uint -> uint32_t
2014-09-25 21:42:19 +02:00
Timm Friebe
e83580c1f0
Merge branch 'master' into catchable-fatals/methods-on-non-objects
2014-09-25 19:45:05 +02:00
Dmitry Stogov
1833ab0230
Use macro
2014-09-25 17:00:17 +04:00
Dmitry Stogov
8b034ec69a
Optimized (PRE|POST)_(INC|DEC) handlers. Moved proxy object handling into helper function.
2014-09-25 13:42:46 +04:00
Dmitry Stogov
8ea2409e44
Fixed immutable arrays support
2014-09-24 15:39:54 +04:00
Dmitry Stogov
73275a55f5
Avoid double checks
2014-09-24 12:20:46 +04:00
Dmitry Stogov
d429e87d18
Removed useless helper
2014-09-23 23:26:39 +04:00
Dmitry Stogov
06103d65b1
Use zval_ptr_dtor_nogc() to free IS_TMP_VAR operands.
...
Removed ZEND_SWITCH_FREE opcode (ZEND_FREE used instead).
2014-09-23 17:21:29 +04:00
Dmitry Stogov
826abe9d62
Specialization (only IS_VAR ad IS_CV operands may be references)
2014-09-22 16:17:35 +04:00
Dmitry Stogov
a057f060e8
Optimized unset()
2014-09-22 14:41:44 +04:00
Dmitry Stogov
2c8ac3a252
Replace IS_OP?_TMP_FREE() with more clear (OP?_TYPE == IS_TMP_VAR)
2014-09-22 12:47:10 +04:00
Nikita Popov
98891ee118
Simplify foreach flags
...
* FE_RESET_VARIABLE and FE_RESET_REFERENCE were always set
together.
* In some places the code checked FE_FETCH_BYREF instead of
FE_RESET_REFERENCE and relied on them having the same value.
* Now the FE_RESET_* flags are dropped and everything uses
FE_FETCH_BYREF
2014-09-20 12:56:05 +02:00
Nikita Popov
1027f0d978
Fix leak in foreach with by-ref iteration of ref array
2014-09-20 12:46:05 +02:00
Dmitry Stogov
bccc653185
Avoid double IS_INTERNED() check
2014-09-19 17:32:50 +04:00
Dmitry Stogov
551ee4165b
Use runtime-cache to avoid hash lookups in BIND_GLOBAL instruction
2014-09-17 00:52:45 +04:00
Anatol Belski
65c401672e
redo the fix with cast to size_t
2014-09-16 21:17:22 +02:00
Nikita Popov
69e7c9d89c
Initial coalesce operator implementation
2014-09-16 19:14:46 +01:00
Dmitry Stogov
ca37c02520
code optimization
2014-09-16 13:52:50 +04:00
Dmitry Stogov
d17487f827
We don't have to check for undefined CV if we fetch it for isset() operation
2014-09-16 09:15:47 +04:00
Nikita Popov
079409bbc2
Switch (un)mangle property name to size_t and zend_string
...
Also use the _ex variants where possible.
2014-09-16 00:31:27 +02:00
Dmitry Stogov
6991780793
Optimized FE_RESET and FE_FETCH
2014-09-16 01:34:27 +04:00
Anatol Belski
ea94210e8c
fix most of signed/unsigned warnings in vm def
2014-09-15 19:46:24 +02:00
Dmitry Stogov
8527657ca6
Fixed refcounting for references
2014-09-11 19:12:12 +04:00
Dmitry Stogov
b8c36e199e
Simplify ASSIGN code
2014-09-11 17:00:06 +04:00
Dmitry Stogov
82096dc151
Removed ZEND_QM_ASSIGN_VAR and ZEND_JMP_SET_VAR opcodes (in PHPNG they did exacly the same as ZEND_QM_ASSIGN and ZEND_JMP_SET)
2014-09-11 12:29:54 +04:00
Dmitry Stogov
e85545eca5
Removed IS_STR_OFFSET type and corresponding macros. Optimized string offset handling in ASSIGN_DIM opcode.
2014-09-08 15:46:45 +04:00
Anatol Belski
cfa2b3bf63
fixed string index handling with references
2014-09-07 13:34:18 +02:00
Anatol Belski
acad6f4700
fix 64 bit string index usage
2014-09-07 00:55:36 +02:00
Dmitry Stogov
9a958a086d
Simplify BEGIN_SILENCE/END_SILENCE to not modify ini entry value back and force
2014-09-03 15:17:50 +04:00
Dmitry Stogov
b0f0211b1a
Revert "Fixed memory leaks"
...
This reverts commit 0940e54ffc
.
2014-09-03 02:38:04 +04:00
Dmitry Stogov
0940e54ffc
Fixed memory leaks
2014-09-03 02:07:38 +04:00
Dmitry Stogov
f0ad7472b0
Avoid memory allocation/deallocation in BEGIN_SILENCE/END_SILENCE opcode handlers.
2014-09-02 22:13:24 +04:00
Dmitry Stogov
88d7ca44f6
Refactored INI subsystem to use zend_string* instead of char*
2014-09-01 20:57:33 +04:00
Dmitry Stogov
319ce224d2
LOAD_REGS() is not used anymore
2014-08-28 10:55:16 +04:00
Dmitry Stogov
f2b0370193
Use 'const' qualifier for pointrs to code used at run-time (the code must not be changed)
2014-08-28 02:44:06 +04:00
Dmitry Stogov
b1f53ca415
Use efree_size() instead of efree() where posible
2014-08-27 20:49:56 +04:00
Dmitry Stogov
8ec40397cd
Cleanup IS_VAR handling
2014-08-27 19:10:29 +04:00
Tjerk Meesters
a79b933384
Fixed corruption of execute_data when ZEND_STRLEN has to cast an object to string.
2014-08-27 23:00:11 +08:00
Nikita Popov
d2a3bf9daf
Fix compiler warnings
2014-08-25 23:08:01 +02:00
Nikita Popov
899a1ed59a
Merge branch 'ast'
...
Conflicts:
Zend/zend_compile.c
2014-08-25 22:04:33 +02:00
Nikita Popov
6db293d5e0
Merge remote-tracking branch 'php-src/master' into ast
...
Conflicts:
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_globals.h
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
Zend/zend_types.h
2014-08-25 21:52:18 +02:00
Anatol Belski
af59e92b24
master renames phase 7
2014-08-25 21:51:49 +02:00
Anatol Belski
6f9f0bf205
master renames phase 2
2014-08-25 19:28:33 +02:00
Anatol Belski
c3e3c98ec6
master renames phase 1
2014-08-25 19:24:55 +02:00
Anatol Belski
6d54e89916
Merge remote-tracking branch 'php/master'
2014-08-20 21:29:49 +02:00
Dmitry Stogov
9507aa99fc
Fixed immutable array support
2014-08-20 21:42:49 +04:00
Anatol Belski
66e7090e61
Merge remote-tracking branch 'php/master'
2014-08-20 18:19:37 +02:00
Dmitry Stogov
04aa96d28d
Removed a hack that allowed passing of function return value by reference depending on value of reference-counter (Fixed Zend/tests/bug35393.phpt test failure)
2014-08-20 15:04:40 +04:00
Anatol Belski
07359785c3
Merge remote-tracking branch 'php/master'
2014-08-20 08:48:43 +02:00
Dmitry Stogov
8ea7e4e4e2
fixed memory leak
2014-08-20 10:43:37 +04:00
Anatol Belski
53a8d8e627
Merge remote-tracking branch 'php/master'
2014-08-20 00:34:17 +02:00
Dmitry Stogov
14439b79b4
Fixed referenced value separation
2014-08-20 00:00:59 +04:00
Anatol Belski
c586133d07
rename zval_get_long and fixes to some string functions
2014-08-18 08:39:39 +02:00
Timm Friebe
3db67313c9
Fix nesting for *non*-compile-time-resolveable functions
...
See a1a4ba9511 (commitcomment-7414223)
2014-08-16 22:03:56 +02:00
Nikita Popov
71675a4bf8
Merge remote-tracking branch 'php-src/phpng' into ast
...
Conflicts:
Zend/zend_ast.c
Zend/zend_compile.c
Zend/zend_language_parser.y
Incomplete merge!
2014-08-16 21:55:08 +02:00
Timm Friebe
a1a4ba9511
Make list of opcodes used for nesting calculation consistent
...
with `zend_do_convert_call_user_func()` in Zend/zend_compile.c
2014-08-16 17:47:21 +02:00
Timm Friebe
c3d214aa08
MFH
2014-08-16 17:38:20 +02:00
Anatol Belski
864172d9a4
further fixes to ext/standard and zend
2014-08-16 17:31:40 +02:00
Anatol Belski
8ee2a4a9b5
first shot on merging the core fro the int64 branch
2014-08-16 11:16:11 +02:00
Dmitry Stogov
773d80c6df
Fixed support for references
2014-08-14 22:44:25 +04:00
krakjoe
dc70139d85
update zend_make_printable_zval to take TSRM context
2014-08-11 06:09:46 +01:00
Dmitry Stogov
e677e8cc87
Fixed ext/wddx/tests/bug48562.phpt
2014-08-05 23:48:27 +04:00
Dmitry Stogov
ce1af1e47b
Fixed bug #67725 (now we create immutable arrays only in SHM)
2014-08-05 15:38:43 +04:00
Bob Weinand
d5ddd2dbb2
Disable restrictions regarding arrays in constants at run-time.
...
For the discussion around it, see the thread on the mailing list:
http://www.mail-archive.com/internals@lists.php.net/msg68245.html
2014-07-30 17:57:07 +02:00
Dmitry Stogov
70fb0e7519
Fixed incinsitency in passing arguments by reference to call_user_func()
2014-07-29 20:27:48 +04:00
Dmitry Stogov
507e3b9193
fixed support for references
2014-07-29 15:29:22 +04:00
Dmitry Stogov
ea1d5dcacb
Removed second zval_copy_ctor()
2014-07-24 01:16:00 +04:00
Dmitry Stogov
c49a06168e
Fixed support for constant arrays in context of "const" statement (Zend/tests/constant_expressions_arrays.phpt failed when opcache.protect_memort was set)
2014-07-23 22:47:58 +04:00
Nikita Popov
7892b89465
Implement ZEND_TYPE_CHECK optimization
2014-07-22 23:15:47 +02:00
Nikita Popov
d4d4b69e72
Merge branch 'phpng' into ast
...
Conflicts:
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Some of dmitry's optimizations are not merged in yet!
2014-07-22 18:24:58 +02:00
Dmitry Stogov
f163f625e8
fixed "isset($array[true]);"
2014-07-22 18:40:29 +04:00
Dmitry Stogov
f2a2fccece
Merge branch 'master' into phpng
...
* master:
fix nmake snap when ext name is different in target dll
force atoll macro usage on windows
Enable $ replacement in exif, ldap, pdo_pgsql and tidy
See bug #67635
NEWS
NEWS
improve previous, add message during configure
Fixed bug #67635 php links to systemd libraries without using pkg-config
Improve fix for #66608
Fixed segfault with empty break
New added opcodes don't need to be resloved
Update NEWS
Update NEWS
Update NEWS
Fixed bug #66827 Session raises E_NOTICE when session name variable is array
implemented copy libs of core exts in phpize mode
fix copy the ext dll into the prefix path in phpize mode
fix default prefix in phpize mode
fix file with zero size usage in phpize mode
Conflicts:
Zend/zend_opcode.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/session/session.c
2014-07-22 15:42:17 +04:00
Dmitry Stogov
821b8bbb39
Fixed support for executor override
2014-07-22 11:24:16 +04:00
Xinchen Hui
1c0e22f50c
Merge branch 'PHP-5.6'
2014-07-19 17:19:57 +08:00
Xinchen Hui
1d2f232bd2
Merge branch 'PHP-5.5' into PHP-5.6
2014-07-19 17:19:39 +08:00
Xinchen Hui
8ff00e6e85
Improve fix for #66608
2014-07-19 17:19:01 +08:00
Xinchen Hui
110bf9c720
Merge remote-tracking branch 'origin/master' into phpng
...
Conflicts:
Zend/zend_compile.h
ext/openssl/xp_ssl.c
2014-07-18 16:25:43 +08:00
Xinchen Hui
f6f621ef69
Merge branch 'PHP-5.6'
2014-07-18 15:51:24 +08:00
Xinchen Hui
550b3e4306
Merge branch 'PHP-5.5' into PHP-5.6
...
Conflicts:
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
2014-07-18 15:48:56 +08:00
Xinchen Hui
de433d4c47
Fixed bug #66608 (Incorrect behavior with nested "finally" blocks)
2014-07-18 15:45:31 +08:00
Dmitry Stogov
2febfbab8e
Micro optimization for the main interpreter loop
2014-07-17 11:18:44 +04:00
Dmitry Stogov
af7cb16907
Implemented builtin instruction for strlen()
2014-07-14 15:43:11 +04:00
Dmitry Stogov
7dfb4f6b38
Implemented builtin instruction for type check functions - is_*()
2014-07-14 10:33:11 +04:00
Timm Friebe
a49ca6fde8
Rewrite code to use ZEND_VM_JMP() instead of repeated ZEND_VM_INC_OPCODE() calls
2014-07-12 16:40:27 +02:00
Dmitry Stogov
6c8db864e0
Implemented builtin instruction for strlen()
2014-07-11 18:52:27 +04:00
Dmitry Stogov
de306e7088
Implement call_user_func() and call_user_func_array() using special opcodes.
...
In some rare cases it leads to insignificant changes in error messages.
2014-07-11 00:32:18 +04:00
Dmitry Stogov
d81b287ce1
Fixed delayed closure destruction and reference support
2014-07-10 18:36:11 +04:00
Dmitry Stogov
19729aa7fe
Use data stored in current call frame instead of EG() if possible
2014-07-09 17:07:41 +04:00
Dmitry Stogov
9d6e45a0ee
Changed zend_make_printable_zval() to return "use_copy" instead of additional reference argument.
...
Improved branch prediction.
2014-07-09 16:05:55 +04:00
Dmitry Stogov
1dd07d6bf4
Partial fix that allows internal constructors to set $this to null.
...
The address of $this passed to drectly called internal constructor in execute_data->return_value.
Internal constructors should use ZEND_CTOR_MAKE_NULL() macro (insted of previous ZEND_NULL(EG(This))) to do the work.
This patch doesn't fix the problem for indirectly called constructors. e.g. parant::__construct().
2014-07-09 11:57:42 +04:00
Dmitry Stogov
0abd626269
code cleanup
2014-07-08 13:24:23 +04:00
Dmitry Stogov
b36aaea6ed
ZEND_SEND_VAR and ZEND_SEND_VAL specialization
2014-07-08 02:13:53 +04:00
Dmitry Stogov
2ed8a17045
Refactored run_time_cache usage in object handlers
2014-07-07 20:54:31 +04:00
Dmitry Stogov
7ce2d59ad2
Merge branch 'call-frame' into phpng
...
* call-frame:
Simplify call-frame handling
Removed EG(active_symbol_table) and use corresponding value from EG(current_execute_data)
Use values from current_execute_data instead of globals where possible
Removed EG(called_scope) and use corresponding value from EG(current_execute_data)
Removed EG(in_execution). If EG(currentent_execute_data) is not NULL we are executing something.
Removed EG(opline_ptr) and use corresponding value from EG(current_execute_data)
Removed EG(active_op_array) and use corresponding value from EG(current_execute_data)
Uinified call frame handling for user and internal functions. Now EG(current_execute_data) always point to the call frame of the currently executed function.
Fixed cleanup of incompleytely passed parameters
Prohibited parameter redefinition
Fixed support for extra arguments in conjunction with variadiv argument. Use compile time flags to check if we call constructor and result of ZEND_NEW is used or not.
Fixed uninitialized variables
Optimization
Changed zend_execute_data layout to reduce memory overhead
Help C compilet to do the better job optimizing target code
Use fast comparison for (func->type == ZEND_USER_FUNCTION || func->type == ZEND_EVAL_CODE)
Keep extra args in the same VM stack segment (after all CV and TMP vars)
Refactoring: merge call_frame and end_execute_data into single data structure. Keep only single copy of each argument on VM stack (previously ZE kept two copies of each arguments for user functions)
Refactoring: use call_frames instead of call_slots
Conflicts:
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
2014-07-07 16:19:24 +04:00
Dmitry Stogov
5aa91be509
Simplify call-frame handling
2014-07-07 15:50:44 +04:00
Timm Friebe
dacd4c84cb
QA: Simplify code to find matching ZEND_DO_FCALL_BY_NAME
...
CG(context).nested_calls is stored inside the initializer's result.num
and inside the finalizer's op2.num, by comparing these we don't need
to count manually, and are thus safer from future expansion with
specialized opcodes e.g.
2014-07-06 18:58:37 +02:00
Timm Friebe
a1554ca634
Merge in changes from master
...
Now also includes "on [TYPE]" in "Call to a member function" error
2014-07-06 17:07:01 +02:00
Timm Friebe
7e2e4ebc69
Handle ZEND_NEW nesting
2014-07-06 15:17:16 +02:00
Timm Friebe
9dbc91f2ff
Handle ZEND_INIT_NS_FCALL_BY_NAME nesting
2014-07-06 15:10:50 +02:00
Timm Friebe
ff66e59731
Support nested static calls
2014-07-06 14:58:44 +02:00
Timm Friebe
df908275f6
Handle ZEND_EXT_FCALL_END, skipping if necessary
...
Verified with running tests with new "-e" run-tests arg:
$ make test TESTS=Zend/tests/*-on-non-objects-*phpt TEST_PHP_ARGS=-e
# Tests passed : 11 (100.0%)
$ make test TESTS=Zend/tests/*-on-non-objects-*phpt
# Tests passed : 11 (100.0%)
Before, this would cause a SEGV. Thanks @nikic for raising this concern
2014-07-06 14:48:42 +02:00
Timm Friebe
dc68aa32bc
Only allocate NULL return value if it's actually used
2014-07-06 12:50:32 +02:00
Timm Friebe
a782f697df
Also handle nested function calls via variable
2014-07-06 12:44:02 +02:00
Timm Friebe
abd42ea4c2
QA: Simplify code to initialize a NULL value
...
See https://github.com/php/php-src/pull/647#discussion_r14560540
2014-07-06 12:38:29 +02:00
Timm Friebe
2758824940
Remove return
statement which would break goto and switch VMs
...
See https://github.com/php/php-src/pull/647#discussion_r14560483
2014-07-06 12:31:20 +02:00
Timm Friebe
17b3791a01
Handle nesting correctly
...
See feedback by @nikic, https://github.com/php/php-src/pull/647#issuecomment-48050551
2014-07-06 12:27:04 +02:00
Nikita Popov
439a95908b
Fix leak when generator return value is not used
2014-07-05 15:07:25 +02:00
Nikita Popov
2d4c962c61
Fix ZTS build
2014-07-05 14:12:20 +02:00
Dmitry Stogov
6bf24f4dd0
Removed EG(active_symbol_table) and use corresponding value from EG(current_execute_data)
2014-07-04 18:03:45 +04:00
Dmitry Stogov
d2890963e4
Use values from current_execute_data instead of globals where possible
2014-07-04 17:03:44 +04:00
Dmitry Stogov
c4d99ec982
Removed EG(called_scope) and use corresponding value from EG(current_execute_data)
2014-07-03 02:34:43 +04:00
Dmitry Stogov
0a77dcd4b9
Removed EG(in_execution). If EG(currentent_execute_data) is not NULL we are executing something.
2014-07-03 01:02:25 +04:00
Dmitry Stogov
63c057e331
Removed EG(opline_ptr) and use corresponding value from EG(current_execute_data)
2014-07-02 23:29:53 +04:00
Dmitry Stogov
4b09dd69e6
Removed EG(active_op_array) and use corresponding value from EG(current_execute_data)
2014-07-02 22:03:21 +04:00
Dmitry Stogov
412ad4b254
Uinified call frame handling for user and internal functions.
...
Now EG(current_execute_data) always point to the call frame of the currently executed function.
2014-07-02 22:01:25 +04:00
Dmitry Stogov
8c9b3e664c
Merge branch 'PHP-5.6'
...
* PHP-5.6:
Fixed possible crash because of race conditions on modifying constants in shared memory
2014-07-01 00:17:55 +04:00
Dmitry Stogov
2330be5641
Fixed possible crash because of race conditions on modifying constants in shared memory
2014-07-01 00:13:34 +04:00
Dmitry Stogov
b7715c7e8a
Refactored parameter passing mechanism.
...
In PHP-5.6 and below each argument passed to user function was copies on VM stack twice.
Now we always have ZEND_INIT_FCALL (or simular) opcode that pushes "call frame" on top of VM stack.
"Call frame" is actually the same zend_execute_data structure.
All the following ZEND_SEND instructions push arguments on top of the stack in a way that they directly comes into corresponding CV variables of the called frame. Extra arguments are copied at the end of stack frame (after all CV and TMP variables) on function enterance.
There are two minor incompatibilities:
1) It's not allowed to decalre functions redefining arguments e.g. "function foo($a,$a) {}".
2) func_get_arg() and func_get args() return the current value of argument and not the original value that was sent.
2014-06-30 15:43:45 +04:00
Dmitry Stogov
b4a7a1bacc
Fixed cleanup of incompleytely passed parameters
2014-06-30 15:41:16 +04:00
Dmitry Stogov
3f0ee308a0
Fixed support for extra arguments in conjunction with variadiv argument.
...
Use compile time flags to check if we call constructor and result of ZEND_NEW is used or not.
2014-06-30 14:17:17 +04:00
Dmitry Stogov
a3c8fbdd12
Fixed uninitialized variables
2014-06-27 21:13:05 +04:00
Dmitry Stogov
31087ee8b0
Optimization
2014-06-27 20:22:17 +04:00
Dmitry Stogov
032f33591a
Keep extra args in the same VM stack segment (after all CV and TMP vars)
2014-06-27 12:25:36 +04:00
Dmitry Stogov
c69781393c
Refactoring: merge call_frame and end_execute_data into single data structure. Keep only single copy of each argument on VM stack (previously ZE kept two copies of each arguments for user functions)
2014-06-26 23:51:14 +04:00
Dmitry Stogov
43477bc7a2
Refactoring: use call_frames instead of call_slots
2014-06-24 02:17:16 +04:00
Dmitry Stogov
909acec231
Avoid useles constants update
2014-06-16 23:32:58 +04:00
Dmitry Stogov
3b2fb7abc5
Fixed support for references
2014-06-16 13:08:48 +04:00
Dmitry Stogov
83817ddb1c
Fixed reference counting
2014-06-12 13:01:44 +04:00
Dmitry Stogov
dd1c68e67f
Merge branch 'master' into phpng
...
* master: (77 commits)
NEWS entry for Fix potential segfault in dns_get_record()
NEWS entry for "Fix potential segfault in dns_get_record()"
NEWS entry for Fix potential segfault in dns_get_record(
Fix potential segfault in dns_get_record()
Revert "Add optional second arg to unserialize()"
5.5.15 now
update NEWS
Fix bug #66127 (Segmentation fault with ArrayObject unset)
5.4.31 next
Add NEWS. This doesn't need UPGRADING (or an RFC), IMO.
Fix broken test.
Add a mime type map generation script and update the header.
Move the mime type map out of php_cli_server.c for easier generation.
Replace the CLI server's linear search for extensions with a hash table.
fix test
Remove unused included file
NEWS
NEWS
NEWS
Fixed Bug #67413 fileinfo: cdf_read_property_info insufficient boundary chec
...
Conflicts:
Zend/zend_closures.c
Zend/zend_execute.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/spl/spl_array.c
ext/standard/basic_functions.c
ext/standard/dns.c
ext/standard/var.c
2014-06-12 05:07:33 +04:00
Dmitry Stogov
593b125eb9
Fixed reference handling
2014-06-12 03:14:57 +04:00
Dmitry Stogov
14e6ee7f42
Use absolute addresses as branch targets for NEW, FE_RESET and FE_FETCH
2014-06-11 11:39:42 +04:00
Dmitry Stogov
371345bed6
Avoid reallocation
2014-06-09 17:36:37 +04:00
Stanislav Malyshev
9fceb05fcf
Merge branch 'PHP-5.6'
...
* PHP-5.6:
Bug 64744 Show the type of the non-object for more descriptive errors
2014-06-08 19:18:09 -07:00
Boro Sitnikovski
cfccdc6362
Bug 64744
...
Show the type of the non-object for more descriptive errors
2014-06-08 19:14:58 -07:00
Stanislav Malyshev
a17734fb04
Merge branch 'PHP-5.6'
...
* PHP-5.6:
Fix bug 666222
Fix bug 666222
2014-06-08 19:02:51 -07:00
Stanislav Malyshev
8f527fbf14
Merge branch 'PHP-5.5' into PHP-5.6
...
* PHP-5.5:
Fix bug 666222
Fix bug 666222
2014-06-08 19:02:24 -07:00
Levi Morrison
f47976dd9b
Fix bug 666222
...
This also adds some smaller, isolated tests related to bug 66622.
2014-06-08 18:59:44 -07:00
Dmitry Stogov
e499c3d259
Introduced new BIND_GLOBAL instraction instead of FETCH_W+ASSIGN_REF pair that caused a lot of useles checks
2014-06-06 15:04:30 +04:00
Dmitry Stogov
730beec16e
Simplify code
2014-06-05 18:42:17 +04:00
Dmitry Stogov
c1965f58d4
Use reference counting instead of zval duplication
2014-06-05 16:04:11 +04:00
Dmitry Stogov
3f6f0d5a70
Simplified and optimized ZEND_HANDLE_NUMERIC()
2014-06-03 13:10:42 +04:00
Dmitry Stogov
bc2ba841f9
Optimized conditions order
2014-06-03 09:45:09 +04:00
Dmitry Stogov
30c05577f7
Optimized conditions order
2014-06-03 03:54:03 +04:00
Dmitry Stogov
af78ea1d97
Avoid copying of immutable arrays
2014-06-03 02:43:53 +04:00
Dmitry Stogov
0427ae08fb
cleanup
2014-06-03 00:36:31 +04:00
Nikita Popov
8515b96e53
Handle FUNC_ARG fetches on temporaries
2014-05-31 20:15:55 +02:00
Nikita Popov
96b32ec532
Support isset() on temporaries
2014-05-31 20:05:03 +02:00
Nikita Popov
f0ac7f7d7b
Properly handle property read on const/tmp
2014-05-31 17:51:22 +02:00
Nikita Popov
c53a7ea4e5
Property handle calls on [] and '' consts/tmps
2014-05-31 17:37:30 +02:00
Nikita Popov
64e4c9eff1
Support directly calling closure
2014-05-31 17:18:37 +02:00
Dmitry Stogov
b3b616cf7e
Introduced immutable arrays. They don't need to be copyed and may be used directly from SHM.
2014-05-29 18:21:56 +04:00
Nikita Popov
47e85b1b35
Improve class constant fetch fix
...
Dereference the cached constant for Test::TEST as well (and not just
self::TEST).
Also improve the phpt file to test this case as well - previously
this only manifested with opcache enabled, due to literal sharing.
Additionally the Z_TYPE_P != IS_REFERENCE assertion is now moved
into the TMP_VAR fetching code (as it applies to more than just
property assignments.)
2014-05-29 11:17:33 +02:00
Nikita Popov
d9a35c7e97
Fix class constant fetching
...
If a class is extended after the constant fetch has been cached
the cached value will be turned into a reference. On the next
fetch the polymorphic cache will return this reference, which
will be directly returned. The object assignment code then
dereferences this result and performs a shallow copy, which is
invalid for references. This subsequently leads to the constant
value being prematurely freed.
This is fixed by dereferencing the value returned from the
polymorphic cache. Furthermore the incorrect dereference from
in the object assignment code is replaced with an assertion that
we're dealing with a non-reference, so ensure that this kind of
problem cannot go unnoticed in the future.
2014-05-29 00:15:50 +02:00
Dmitry Stogov
40256e0f9c
Use specialized functions instead of macros
2014-05-26 17:16:16 +04:00
Xinchen Hui
066c1d5451
This seems better
2014-05-26 12:05:21 +08:00
Xinchen Hui
02fde346f8
Save one zval copy
2014-05-26 11:49:43 +08:00
Dmitry Stogov
0c6a6f0fba
Re-applyed Bob's patch with minor fixes
2014-05-07 15:03:56 +04:00
Dmitry Stogov
4ecc527976
Reverted Bob's patch (it breaks many tests when run with opcache and needs to be fixed first).
2014-05-07 03:26:13 +04:00
Nikita Popov
80f8d20b72
Remove dead code from ZEND_THROW
...
The IS_CONST case always throws an E_ERROR two lines above that,
so no need to handle it further.
2014-05-06 20:02:26 +02:00
Nikita Popov
767b5eea7e
Fix throw by reference
...
Reported by Timm Friebe
2014-05-06 20:01:19 +02:00
Bob Weinand
f3c1881f1d
Re-added fix for bug #66015 and adapted for phpng branch
2014-05-06 14:59:03 +02:00
Dmitry Stogov
28a8135331
Restored original EG(scope) behavior when call object methods
2014-05-06 02:04:05 +04:00
Nikita Popov
2c24cdb4a3
Comment out cast_object for IS_NULL
2014-05-01 00:25:23 +02:00
Dmitry Stogov
52e79186b2
JMPZ/JMPNZ/JMPZNZ optimization
2014-05-01 01:24:38 +04:00
Dmitry Stogov
17d027ed47
Split IS_BOOL into IS_FALSE and IS_TRUE
2014-04-30 18:32:42 +04:00
Dmitry Stogov
6a911e833f
Optimized JMPZNZ to avoid multiplication at runtime (may be it makes sense to use relative addresses everywere it'll lead to Position Independent Code)
2014-04-30 11:23:19 +04:00
Nikita Popov
4cd97b3ebd
Fix by-reference argument unpacking
2014-04-26 10:40:12 +02:00
Nikita Popov
4c16b777fe
Uhm, do we really need to support that?
2014-04-25 23:21:05 +02:00
Nikita Popov
9263d18bd9
Optimize ZEND_CAST to avoid zval copies
...
The scalar type casts IS_NULL, IS_BOOL, IS_LONG, IS_DOUBLE and
IS_STRING will no longer require a copy when casting.
A copy is now only made when casting to IS_ARRAY and IS_OBJECT, if
the type doesn't already match.
I tweaked the reference handling for the type-already-correct case
to DEREF the zval after that check. References require a copy anyway,
so they can go through the slow codepath.
2014-04-25 23:21:05 +02:00
Dmitry Stogov
f9927a6c97
Merge mainstream 'master' branch into refactoring
...
During merge I had to revert:
Nikita's patch for php_splice() (it probably needs to be applyed again)
Bob Weinand's patches related to constant expression handling (we need to review them carefully)
I also reverted all our attempts to support sapi/phpdbg (we didn't test it anyway)
Conflicts:
Zend/zend.h
Zend/zend_API.c
Zend/zend_ast.c
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_constants.c
Zend/zend_exceptions.c
Zend/zend_execute.c
Zend/zend_execute.h
Zend/zend_execute_API.c
Zend/zend_hash.c
Zend/zend_highlight.c
Zend/zend_language_parser.y
Zend/zend_language_scanner.c
Zend/zend_language_scanner_defs.h
Zend/zend_variables.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
ext/date/php_date.c
ext/dom/documenttype.c
ext/hash/hash.c
ext/iconv/iconv.c
ext/mbstring/tests/zend_multibyte-10.phpt
ext/mbstring/tests/zend_multibyte-11.phpt
ext/mbstring/tests/zend_multibyte-12.phpt
ext/mysql/php_mysql.c
ext/mysqli/mysqli.c
ext/mysqlnd/mysqlnd_reverse_api.c
ext/mysqlnd/php_mysqlnd.c
ext/opcache/ZendAccelerator.c
ext/opcache/zend_accelerator_util_funcs.c
ext/opcache/zend_persist.c
ext/opcache/zend_persist_calc.c
ext/pcre/php_pcre.c
ext/pdo/pdo_dbh.c
ext/pdo/pdo_stmt.c
ext/pdo_pgsql/pgsql_driver.c
ext/pgsql/pgsql.c
ext/reflection/php_reflection.c
ext/session/session.c
ext/spl/spl_array.c
ext/spl/spl_observer.c
ext/standard/array.c
ext/standard/basic_functions.c
ext/standard/html.c
ext/standard/mail.c
ext/standard/php_array.h
ext/standard/proc_open.c
ext/standard/streamsfuncs.c
ext/standard/user_filters.c
ext/standard/var_unserializer.c
ext/standard/var_unserializer.re
main/php_variables.c
sapi/phpdbg/phpdbg.c
sapi/phpdbg/phpdbg_bp.c
sapi/phpdbg/phpdbg_frame.c
sapi/phpdbg/phpdbg_help.c
sapi/phpdbg/phpdbg_list.c
sapi/phpdbg/phpdbg_print.c
sapi/phpdbg/phpdbg_prompt.c
2014-04-26 00:32:51 +04:00
Dmitry Stogov
65e2ed6e50
Redesigned zend_execute_data layout now EX(object), EX(scope) and EX(called_scope) arr properties of the current function execution co
...
ntext. They are set during zend_execute_data initialization and never changed.
2014-04-24 15:53:20 +04:00
Dmitry Stogov
7e424f5a95
Use symbolic names instead of magic constants + optimization
2014-04-23 02:47:41 +04:00
Nikita Popov
9c70603f4a
Initialize hash as unpacked if it contains string keys
2014-04-22 21:33:49 +02:00
Nikita Popov
3d3a55cbcb
Pass expected array size hint in INIT_ARRAY
...
To avoid unnecessary rehashes
2014-04-22 18:57:03 +02:00
Dmitry Stogov
5864ce8a44
Fixed compilation warnings
2014-04-22 17:46:34 +04:00
Dmitry Stogov
e295518bf3
Fixed typo
2014-04-22 13:11:07 +04:00
Dmitry Stogov
32e6e89887
Optimized ZEND_SEND_REF
2014-04-22 13:10:53 +04:00
Dmitry Stogov
5d479ef693
ZEND_SEND_* optimization
2014-04-22 12:33:00 +04:00
Dmitry Stogov
ff6dc3e1f2
zend_isset_isempty_dim_prop_obj_handler() split into separate handlers. (Actually, it shared near nothing)
2014-04-22 00:32:29 +04:00
Dmitry Stogov
b9d45cc0a9
Handle references in "slow path"
2014-04-21 23:30:19 +04:00
Dmitry Stogov
8ad8254a16
Merge branch 'refactoring2' of github.com:zendtech/php into refactoring2
2014-04-21 21:39:15 +04:00
Dmitry Stogov
4533269839
Fast path for pre/post inc/dec
2014-04-21 21:38:44 +04:00
Nikita Popov
bda96e3c58
Use zval_get_string in print_zval and propagate TSRMLS
2014-04-21 17:55:58 +02:00
Dmitry Stogov
3c42593735
Removed duplicate code
2014-04-21 15:17:48 +04:00
Dmitry Stogov
e9f4d822b0
Avoid useles copy ctor
2014-04-21 13:19:52 +04:00
Timm Friebe
f5efee1d22
Regenerate
2014-04-19 14:01:38 +02:00
Dmitry Stogov
54d9ad53f4
More ZEND_HASH_FOREACH_* related changes
2014-04-19 00:08:14 +04:00
Dmitry Stogov
ea2e1bb1eb
Optimized zend_leave_helper()
2014-04-18 13:46:36 +04:00
Dmitry Stogov
e7b3b1132a
Fixed support for references
2014-04-17 17:21:59 +04:00
Dmitry Stogov
3cca67f740
Use local variables instead of opline operands to access cache_slots
2014-04-17 16:10:16 +04:00
Dmitry Stogov
e96073b1e4
Moved zend_literal->cache_slot right into zval.
...
It should be accessed using Z_CACHE_SLOT() macro.
zend_literal structure is removed.
API functions that accepted pointer to zend_literal now accept pointer to zval or cache_slot directly.
Calls of such functiond that now accept cache_slot need to be changed to pass -1 instead of NULL.
2014-04-17 15:40:45 +04:00
Nikita Popov
f98937fa80
Don't copy in ZEND_CAST if type is already correct
2014-04-16 22:39:50 +02:00
Dmitry Stogov
533a8b65f8
Fixed typo
2014-04-16 16:35:41 +04:00
Dmitry Stogov
e99e6958bc
Cleanup
2014-04-16 01:45:40 +04:00
Dmitry Stogov
f9b26bc39a
Cleanup (2-nd round)
2014-04-15 21:56:30 +04:00
Dmitry Stogov
93d3a613d8
Fixed support for references
2014-04-15 11:13:23 +04:00
Xinchen Hui
a0690ff288
Fixed zend_object_get_t in simpleXML
2014-04-15 11:05:03 +08:00
Dmitry Stogov
460120c887
Fixed reference counting
2014-04-15 01:16:09 +04:00
Dmitry Stogov
5dc52e4880
Fixed interface constants inheritance.
...
Now we use IS_REFERENCE for inhereted class constants.
I might miss some edje cases.
2014-04-14 13:24:43 +04:00
Nikita Popov
4fc3d2d104
Copy varname before unset
...
Otherwise we get issues when the varname variable coincides with
the variable that is deleted.
2014-04-13 23:07:10 +02:00
Bob Weinand
ccf863c8ce
Merge branch 'PHP-5.6'
2014-04-11 19:35:11 +02:00
Bob Weinand
35b895fdf0
Removed useless void* parameter and replaced with zend_bool on zval_update_constant* functions
2014-04-11 19:18:58 +02:00
Bob Weinand
38ec4d20bf
Merge branch 'PHP-5.6'
2014-04-11 18:24:41 +02:00
Bob Weinand
ee2a7c7d41
Fixed disallowal of array usage in constants at run-time
...
Added at the same time the possibility of array dereferencing
to complete the set of features (useful application of arrays in constants)
2014-04-11 18:21:46 +02:00
Bob Weinand
53e71e47b9
Merge branch 'PHP-5.6'
2014-04-11 16:21:15 +02:00
Bob Weinand
ad05d3898e
Updated zend_vm_execute.h
2014-04-11 16:18:42 +02:00
Dmitry Stogov
e27eca90a5
for some reason gcc -O2 compiled the previous code in unexpected way
2014-04-11 18:16:03 +04:00
Dmitry Stogov
b6af031e52
Fixed support for references
2014-04-11 15:05:12 +04:00
Dmitry Stogov
ec4314f818
Fixed reference counting
2014-04-11 12:43:22 +04:00
Dmitry Stogov
aeb64f5447
Fixed support for references
2014-04-11 11:15:31 +04:00
Dmitry Stogov
abbb1c0f00
Unset CV before calling zval_ptr_dtor(), because its destructor may bailout and stay CV value in inconsistet state
2014-04-09 10:47:24 +04:00
Dmitry Stogov
0e7d30e8d3
Optimized ASSIGN_OP
2014-04-08 02:25:49 +04:00
Dmitry Stogov
f3c57716f7
Optimized ZEND_FETCH_R and family
2014-04-08 00:38:54 +04:00
Dmitry Stogov
3d17219cd8
Refactored zend_hash_* iteration API zend_hash_fove_forward_ex(ht, pos) and family require second argument to be real pointer.
...
&(ht)->nInternalPointer should be passed instead of NULL.
zend_hash_update_current_key() may work only with internal pointer.
2014-04-07 23:14:17 +04:00
Dmitry Stogov
bf35b22af5
Optimized ISSET_ISEMPTY_DIM_OBJ
2014-04-07 14:56:34 +04:00
Dmitry Stogov
8b2bb30137
Use macros
2014-04-07 10:57:58 +04:00
Dmitry Stogov
a94923d5cb
Avoid double zval copying in ZEND_SEND_VAL and zend_send_by_var_helper
2014-04-05 02:14:17 +04:00
Dmitry Stogov
a80e945835
Optimized ZEND_FETCH_DIM_*
2014-04-05 01:56:51 +04:00
Dmitry Stogov
c11dc75b4e
Refactored IS_INDIRECT IS_VAR passing between opcodes to avoid reference counting
2014-04-04 19:01:53 +04:00
Dmitry Stogov
cea26aa2eb
Tergets of ASSIGN and ASSIGN_REF don't have to be initialized
2014-04-04 15:22:41 +04:00
Dmitry Stogov
eaeb3c39b4
Optimized RECV_* opcodes
2014-04-04 14:36:34 +04:00
Dmitry Stogov
3bc8810b1e
Constant duplication optimization
...
Argument receiving optimization
2014-04-04 03:55:27 +04:00
Dmitry Stogov
58f0f2503c
Various VM optimizations
2014-04-04 02:52:53 +04:00
Dmitry Stogov
58871730c8
ASSIGN_REF optimization
2014-04-03 16:53:30 +04:00
Dmitry Stogov
76cc99fe60
Refactored ZVAL flags usage to simplify various checks (e.g. Z_REFCOUNTED(), candidate for GC, etc)
2014-04-03 15:26:23 +04:00
Dmitry Stogov
d8099d0468
Changed data layout to allow more efficient operations
2014-04-02 14:34:44 +04:00
Dmitry Stogov
5c912a805b
Use "fast" comparison function
2014-04-02 00:48:26 +04:00
Dmitry Stogov
ea85451b65
Refactored data structures to keep zend_object* instead of a whole zval in some places
2014-03-28 02:11:22 +04:00
Dmitry Stogov
68385716a4
Fixed support for references & cleanup
2014-03-27 18:14:57 +04:00
Dmitry Stogov
9a8fbdf2f4
Use CV variable offset instead of CV variable number
2014-03-27 16:00:25 +04:00
Dmitry Stogov
d83d34ba6d
Cleanup
2014-03-27 14:55:52 +04:00
Dmitry Stogov
c6cba55454
Use ZVAL_DEREF() macro
2014-03-27 13:39:09 +04:00
Dmitry Stogov
54d559d893
Replaced (Z_TYPE(x) == IS_REFERENCE) with (Z_ISREF(x))
2014-03-27 11:50:45 +04:00
Dmitry Stogov
92aef5279a
Fixed support for references
2014-03-27 00:05:06 +04:00
Dmitry Stogov
de6a76d16e
fixed support for references
2014-03-26 22:06:44 +04:00
Dmitry Stogov
887189ca31
Refactored IS_INDIRECT usage for CV and object properties to support HashTable resizing
2014-03-26 18:07:31 +04:00
Dmitry Stogov
c36294c4da
Cleanup
2014-03-21 21:48:38 +04:00
Dmitry Stogov
a3abf6f291
Fixed refcounting
2014-03-21 15:33:08 +04:00
Dmitry Stogov
d735434e47
Fixed refcounting
2014-03-21 12:07:27 +04:00
Dmitry Stogov
6186bc6dff
Fixed iterator dtor
2014-03-20 23:28:24 +04:00
Dmitry Stogov
3c0feb51bc
Fixed assignment of "new" by reference
2014-03-19 23:51:28 +04:00
Dmitry Stogov
b7938ab1bd
Refactored GC (incomplete)
2014-03-19 17:00:28 +04:00
Dmitry Stogov
aa5f55306b
Refactored EG(active_symbol_table) to be zend_array* instead of HashTable*
2014-03-17 23:15:22 +04:00
Dmitry Stogov
b8089696c4
Fixed support for references
2014-03-13 22:56:18 +04:00
Dmitry Stogov
c1236214fe
REFERENCE is always REFCOUNTED
2014-03-13 22:07:37 +04:00
Dmitry Stogov
25d55d16fc
Fixed foreach (now we store HashPointer in additional IS_TMP_VAR slot(s))
2014-03-13 17:01:28 +04:00