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