Xinchen Hui
b9e44888c0
Merge branch 'PHP-5.5' into PHP-5.6
2014-11-10 13:47:14 +08:00
Xinchen Hui
ab84939254
Fixed bug #68370 ("unset($this)" can make the program crash)
2014-11-10 13:46:47 +08:00
Anatol Belski
89ed34e3e9
fix datatype mismatches
2014-10-24 20:50:09 +02:00
Anatol Belski
7959e3faf2
fix datatype mismatches for strings from userspace
2014-10-22 17:56:17 +02:00
Nikita Popov
43f1c94dda
Review a few more SEPARATE_ZVAL_IF_NOT_REF usages
2014-10-09 12:51:05 +02:00
Dmitry Stogov
33e137d409
Merged EX(frame_kind) and EX(flags) into single word
2014-10-07 17:12:12 +04:00
Nikita Popov
9bc14f9632
Fix dynamic calls to static methods with fci->object
...
func may already be freed at the time the static flag was checked.
2014-10-05 23:11:17 +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
9f7564b12b
Removed zend_execute_data->prev_nested_call. Reuse prev_execute_data instead.
2014-10-01 10:46:13 +04:00
Dmitry Stogov
bccc653185
Avoid double IS_INTERNED() check
2014-09-19 17:32:50 +04:00
Dmitry Stogov
3bc8a958c5
Fixed useless or duplicated IS_INTERNED() checks
2014-09-19 15:41:01 +04:00
Anatol Belski
e940fc268a
fix signed/unsigned mismatch
2014-09-15 19:46:25 +02:00
Anatol Belski
f595ed4b8c
fix initializer struct
2014-09-15 11:30:26 +02:00
Stanislav Malyshev
d5b0606a62
Reintroduce fix from pull #770 in a PHP 7 way
2014-09-01 15:41:27 -07:00
Stanislav Malyshev
1ff1a0dde2
Revert "Merge branch 'PHP-5.6'"
...
This reverts commit aaf5689f4d
, reversing
changes made to 481bf25b6a
.
2014-09-01 14:35:04 -07:00
Stanislav Malyshev
aaf5689f4d
Merge branch 'PHP-5.6'
...
* PHP-5.6:
update NEWS
Only destruct if EG(active) in zend_shutdown(). (bug #65463 , #66036 )
Fix typo from commit 32314f6b6
Fix destruction order in zend_shutdown (bug #65463 , #66036 )
Conflicts:
Zend/zend_compile.h
Zend/zend_execute_API.c
2014-09-01 12:22:41 -07:00
Stanislav Malyshev
57f82819e9
Merge branch 'PHP-5.5' into PHP-5.6
...
* PHP-5.5:
update NEWS
Only destruct if EG(active) in zend_shutdown(). (bug #65463 , #66036 )
Fix typo from commit 32314f6b6
Fix destruction order in zend_shutdown (bug #65463 , #66036 )
2014-09-01 12:20:34 -07:00
Stanislav Malyshev
4b9fcc01d4
Merge branch 'PHP-5.4' into PHP-5.5
...
* PHP-5.4:
update NEWS
Only destruct if EG(active) in zend_shutdown(). (bug #65463 , #66036 )
Fix typo from commit 32314f6b6
Fix destruction order in zend_shutdown (bug #65463 , #66036 )
2014-09-01 12:15:54 -07:00
Stanislav Malyshev
197095c29e
Merge branch 'pull-request/770' into PHP-5.4
...
* pull-request/770:
Only destruct if EG(active) in zend_shutdown(). (bug #65463 , #66036 )
Fix typo from commit 32314f6b6
Fix destruction order in zend_shutdown (bug #65463 , #66036 )
2014-09-01 12:11:42 -07:00
Nikita Popov
b73bea9cc8
Combine foreach copy / switch cond stacks
...
Now one common stack to handle both, which stores znodes instead of
full oplines (foreach copy stack) or switch entries (switch cond
stack).
Also removed EG(start_op) while at it.
2014-08-29 21:53:09 +02:00
Dmitry Stogov
b1f53ca415
Use efree_size() instead of efree() where posible
2014-08-27 20:49:56 +04:00
Nikita Popov
59848e3fbb
Remove ZEND_ACC_INTERACTIVE and CG(interactive)
...
As far as I can discern these are leftovers of the interactive
shell implementation that was used before PHP 5.4. Now the readline
ext makes use of normal eval calls for this.
So, dropping these until there is evidence to the contrary, as they
currently wouldn't work anyway.
2014-08-25 23:46:43 +02:00
Nikita Popov
d2a3bf9daf
Fix compiler warnings
2014-08-25 23:08:01 +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
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
97c5172ac7
Merge remote-tracking branch 'php/master'
...
Conflicts:
ext/date/lib/parse_date.c
2014-08-19 08:27:43 +02:00
Nikita Popov
ced6d3068a
Merge branch 'master' into ast
2014-08-18 18:16:11 +02:00
Nikita Popov
26a9dc3e04
Fix bug #67858 : Leak when $php_errormsg already set
2014-08-18 18:14:19 +02:00
Nikita Popov
904a83a137
Merge remote-tracking branch 'php-src/master' into ast
...
Conflicts:
ext/opcache/Optimizer/optimize_func_calls.c
2014-08-16 22:31:13 +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
Anatol Belski
5bb25776a0
further fixes on core
2014-08-16 15:34:04 +02:00
Anatol Belski
8ee2a4a9b5
first shot on merging the core fro the int64 branch
2014-08-16 11:16:11 +02:00
Xinchen Hui
d7f12b9b9c
Fixed initializing
2014-08-15 13:52:52 +08:00
Keyur Govande
5e338836ff
Fix typo from commit 32314f6b6
2014-08-14 01:14:11 +00:00
Keyur Govande
32314f6b67
Fix destruction order in zend_shutdown (bug #65463 , #66036 )
...
If Apache or a similar SAPI receives a signal during PHP processing
it calls zend_shutdown() without calling shutdown_executor().
#65463 : If a module like Gearman or Memcached is loaded,
in the unfixed version it is unloaded by zend_destroy_modules() before the
CG(CLASS_TABLE) is destructed. When CG(CLASS_TABLE) is destructed,
any pointers to methods (specifically around destruction) in the unloaded
module's .so are now dangling and the process segfaults.
#66036 : Any subclasses of an internal class like ArrayObject need
to be destructed in order: subclass first and then the internal class. In the
unfixed version zend_shutdown() clears the CG(CLASS_TABLE) from the head
of the list onwards, so internal classes are destructed first and user-defined
classes last. Internal classes are alloc/deallocated with malloc/free while
user-defined classes with emalloc/efree. If there's shared data between them
then efree() could be called instead of free() leading to a seg-fault.
2014-08-14 00:55:14 +00:00
Dmitry Stogov
c201ba8fff
execute_data->return_value should be initialized when call internal constructors
2014-07-31 10:51:49 +04:00
Nikita Popov
55f53e29a0
zend_get_class_fetch_type works on zend_string
2014-07-28 15:39:43 +02:00
Nikita Popov
edd9fcab1e
Fix leaks
...
Must find a good way to handle constant expressions...
2014-07-26 18:08:31 +02: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
21acbd5b75
Avoid useless check
2014-07-07 21:33:53 +04:00
Dmitry Stogov
5aa91be509
Simplify call-frame handling
2014-07-07 15:50:44 +04: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
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
d6bd21eab2
Use fast comparison for (func->type == ZEND_USER_FUNCTION || func->type == ZEND_EVAL_CODE)
2014-06-27 13:02:49 +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
bbc508dea5
Fixed string deallocation and code cleanup
2014-06-23 17:01:59 +04:00
Dmitry Stogov
bd10db271c
Use new zend_hash iteration API
2014-06-16 21:11:52 +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
Xinchen Hui
ebe6854dbc
Merge branch 'PHP-5.5' into PHP-5.6
...
Conflicts:
Zend/zend_execute_API.c
2014-06-10 21:58:16 +08:00
Xinchen Hui
e8699d75da
Remove unused included file
2014-06-10 21:56:30 +08:00
Xinchen Hui
3c69140a90
Remove unused codes
2014-06-10 21:53:46 +08:00
Dmitry Stogov
9a9bb8877e
Improved ZTS support
2014-06-09 21:29:20 +04:00
Nikita Popov
411a8757ad
Initialize GC_TYPE_INFO for EG(symbol_table)
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
b5f90e5103
Save some unnecessary zval copying
2014-05-26 17:25:57 +08:00
Xinchen Hui
bd4b9837e9
Improve call_user_function performance
...
params are all zval * now, and retval will be initialized in
zend_call_function.
maybe we can make call_user_function as a macro proxy to
call_user_function_ex later.
2014-05-26 17:16:22 +08:00
Xinchen Hui
0175d994c0
Fixed apply_func_arg_t, and it's better not using cast (compiler friendly)
2014-05-25 19:56:51 +08:00
Xinchen Hui
00e69ba164
typo
2014-05-24 21:45:07 +08:00
Xinchen Hui
b87cff66b8
fci->retval is always set
2014-05-24 21:37:15 +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
Bob Weinand
f3c1881f1d
Re-added fix for bug #66015 and adapted for phpng branch
2014-05-06 14:59:03 +02:00
Dmitry Stogov
1fa4dcac87
Added comment with problem description and two soltions
2014-05-06 04:35:29 +04:00
Nikita Popov
5a03efe279
Don't allocate zend_stack elements individually
...
Instead allocate a vector of elements. Size must now be specified
on initialization rather than on push.
2014-05-01 09:08:29 +02: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
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
4e7cbf3f58
Use appropriate macros
2014-04-25 11:54:10 +04:00
Dmitry Stogov
df7ca608ce
Optimized constant lookup
2014-04-25 00:56:15 +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
1f181c0f4c
Chiper __autoload() function caching
2014-04-22 01:41:40 +04:00
Dmitry Stogov
72c287bd23
Combine HashTable.flags and HashTable.nApplyCount into single 32-bit word
2014-04-21 18:25:34 +04:00
Dmitry Stogov
f71da39210
Use ZEND_HASH_FOEACH_* instead of zend_hash_apply_*
2014-04-21 13:55:25 +04:00
Dmitry Stogov
ea2e1bb1eb
Optimized zend_leave_helper()
2014-04-18 13:46:36 +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
Dmitry Stogov
fb4e0a6364
Removed invalid STR_RELEASE()
2014-04-16 12:28:20 +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
050d7e38ad
Cleanup (1-st round)
2014-04-15 15:40:40 +04: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
9663193bbc
Merge branch 'PHP-5.6'
2014-04-11 10:11:58 +02:00
Bob Weinand
f614fc6898
Fix bug #66015 by reverting "Removed operations on constant arrays."
2014-04-11 10:08:44 +02:00
Dmitry Stogov
91ed685e26
Close all files and resources before before destroying object storage, because resources may point to objects. (THIS CHANGE MAY BE DANGEROUS)
2014-04-11 02:22:00 +04:00
Dmitry Stogov
7402af380b
Fixed destruction of objects and iterators on unclean request shutdown and GC (few cases are still unfixed).
...
Now we destroy objects it two steps. At first - object properties of all objects and only then the objects their selves.
2014-04-09 01:50:15 +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
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
6b2ed577fd
Avoid unnecessry reallocations
2014-04-01 22:36:17 +04:00
Dmitry Stogov
70b7950a75
Exclude interned flags from constant flags
2014-04-01 14:20:10 +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
9a8fbdf2f4
Use CV variable offset instead of CV variable number
2014-03-27 16:00:25 +04:00
Dmitry Stogov
c6cba55454
Use ZVAL_DEREF() macro
2014-03-27 13:39:09 +04:00
Dmitry Stogov
f53c31265f
Fixed symbol table detaching
2014-03-27 00:04:50 +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
ef6919e6f2
Fixed static data cleanup
2014-03-21 13:51:18 +04:00
Dmitry Stogov
6123deb30f
Fixed refcounting (proper fix)
2014-03-21 01:08:26 +04:00
Dmitry Stogov
cce7d5a1ec
Fixed refcounting
2014-03-21 00:34:26 +04:00
Dmitry Stogov
36cd92a7d3
Fixed passing argument by refefence from internal functions
2014-03-20 17:03:32 +04:00
Dmitry Stogov
da9a2872b0
Fixed cleanup on request shutdown
2014-03-18 14:52:54 +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
d708d3c596
Fixed passing arguments by reference from internal functions
2014-03-11 22:33:28 +04:00
Xinchen Hui
53e312c663
Review ended
...
Revert "An demo(for review) to show how to fix the problem(symbol table resize)"
This reverts commit 60c354510b
.
2014-03-11 14:23:14 +08:00
Xinchen Hui
60c354510b
An demo(for review) to show how to fix the problem(symbol table resize)
2014-03-10 16:25:05 +08:00
Xinchen Hui
80625f20e5
Revert "An demo(for review) to show how to fix the problem we meet"
...
This reverts commit 4aeae15706
.
2014-03-10 16:24:35 +08:00
Xinchen Hui
4aeae15706
An demo(for review) to show how to fix the problem we meet
2014-03-10 11:29:28 +08:00
Xinchen Hui
4b40e40ad0
Fixed memleak while sending IS_REFERENCE
2014-03-09 11:48:09 +08:00
Dmitry Stogov
6b303a6bd6
Fixed refcounting
2014-03-07 01:33:33 +04:00
Dmitry Stogov
8d2fb9d479
Internal functions may return (e.g. on wrong arguments) keeping the original return_value. So we have to initialize return_value as IS_NULL.
2014-03-06 13:32:43 +04:00
Dmitry Stogov
f3b4b16883
Fixed passing reference by value in call_user_func()
2014-03-06 01:04:28 +04:00
Dmitry Stogov
018be97c0d
Fixed support for undefined constants in RECV_INIT
2014-03-06 00:15:56 +04:00
Dmitry Stogov
84c092f6d6
Fixed by reference parameter passing from internal functions
2014-03-05 16:17:00 +04:00
Dmitry Stogov
3733737328
Handle interned strings as non-refcounted scalars
2014-03-05 13:55:56 +04:00
Dmitry Stogov
19670c2bbc
Fixied calling object closures from internal functions
2014-03-05 01:54:21 +04:00
Dmitry Stogov
3810b4ab4a
Fixed constant expressions in array indeces handling
2014-02-27 16:41:41 +04:00
Dmitry Stogov
3696e038e5
Various fixes related to read_property(), read_dimension() and iterators refactoring
2014-02-27 16:07:36 +04:00
Dmitry Stogov
78fc6b3570
Fixed refcounting
2014-02-26 01:09:34 +04:00
Dmitry Stogov
77abd35b78
Fixed memory leak
2014-02-25 16:20:42 +04:00
Dmitry Stogov
639e4e1afa
Changes zend_is_callable() to use zend_string* instead of char*
2014-02-25 16:03:34 +04:00
Xinchen Hui
499b553c18
Fixed NULL pointer dereference
2014-02-25 18:14:22 +08:00
Dmitry Stogov
789eb6dfc3
Fixed create_function()
2014-02-24 16:35:55 +04:00
Dmitry Stogov
595fc4d901
More constant related fixes
2014-02-24 15:49:15 +04:00
Dmitry Stogov
abb57cc1c2
Merge branch 'refactoring2' of github.com:zend-dev/php into refactoring2
2014-02-24 15:25:43 +04:00
Dmitry Stogov
f4c2810ab4
fixed support for constant expressions
2014-02-24 15:25:24 +04:00
Xinchen Hui
479b82c0d4
Fixed invalid write in vsprintf tests
2014-02-24 17:26:09 +08:00
Dmitry Stogov
23c9d3eb01
Fixed zend_rebuild_symbol_table() using IS_INDIRECT
2014-02-24 11:31:46 +04:00
Dmitry Stogov
008a42e7c8
Fixed error messages
2014-02-21 20:53:09 +04:00
Dmitry Stogov
52bd62eca8
Fixed assertions
2014-02-21 20:35:40 +04:00
Xinchen Hui
76c28f878a
Fixed missed REFCOUNTED checking
2014-02-21 22:39:27 +08:00
Dmitry Stogov
8bae1daa0c
Use better data structures (incomplete)
2014-02-19 14:35:28 +04:00
Dmitry Stogov
9067dbcd0d
Use better data structures (incomplete)
2014-02-19 12:03:01 +04:00
Dmitry Stogov
557994d50d
Use better data structures (incomplete)
2014-02-19 01:12:05 +04:00
Dmitry Stogov
9e6c0c6a89
Use better data structures (incomplete)
2014-02-18 17:31:27 +04:00
Dmitry Stogov
5de7115679
Use better data structures (incomplete; able to run bench.php)
2014-02-18 16:27:38 +04:00
Dmitry Stogov
a0fe8e5a91
Use better data structures (incomplete)
2014-02-18 01:41:23 +04:00
Dmitry Stogov
2b9b9afa7a
Use better data structures (incomplete)
2014-02-17 17:59:18 +04:00
Dmitry Stogov
17bf59f895
Use better data structures (incomplete)
2014-02-14 17:48:45 +04:00
Dmitry Stogov
686a078258
Use better data structures (incomplete)
2014-02-14 14:55:48 +04:00
Dmitry Stogov
be82a07776
Use better data structures (incomplete)
2014-02-12 18:08:11 +04:00
Dmitry Stogov
4e66abad54
Use better data structures (incomplete) - refactored return_value handling
2014-02-12 14:29:51 +04:00
Dmitry Stogov
f4cfaf36e2
Use better data structures (incomplete)
2014-02-10 10:04:30 +04:00
Xinchen Hui
0f53e37494
Merge branch 'PHP-5.6'
2014-01-03 11:09:07 +08:00
Xinchen Hui
c081ce628f
Bump year
2014-01-03 11:08:10 +08:00
Xinchen Hui
47c9027772
Bump year
2014-01-03 11:06:16 +08:00
Xinchen Hui
c0d060f5c0
Bump year
2014-01-03 11:04:26 +08:00
Kalle Sommer Nielsen
d14670ccdb
Eliminate another TSRMLS_FETCH() in i_zend_is_true()
...
# Affected extensions have all been updated, ext/opcache and ext/zip
# both have macros for cross version compatibility
2013-12-18 07:25:05 +01:00
Dmitry Stogov
5a87b7ff39
Fixed bug #66252 (Problems in AST evaluation invalidating valid parent:: reference. Constant expessions have to be evaluated in context of defining class).
2013-12-10 14:19:17 +04:00
Dmitry Stogov
2cb0e1e4c1
Merge branch 'PHP-5.5' into PHP-5.6
...
* PHP-5.5:
Added validation of class names in the autoload process
Conflicts:
NEWS
2013-11-29 12:55:11 +04:00
Dmitry Stogov
967abd6153
Merge branch 'PHP-5.4' into PHP-5.5
...
* PHP-5.4:
Added validation of class names in the autoload process
2013-11-29 12:54:22 +04:00
Dmitry Stogov
2d31eadbbf
Added validation of class names in the autoload process
2013-11-29 12:53:02 +04:00
Dmitry Stogov
9647c61dc1
Constant expressions refactoring
2013-11-06 22:21:07 +04:00
Bob Weinand
b45043a1b7
converted several switches to ifs and made more opcache friendly
2013-11-01 16:16:58 +01:00
Bob Weinand
b56c1ca95e
Fatal error about self referencing constants fixed
2013-10-31 19:05:29 +01:00
Bob Weinand
466c5dd1fe
Fixed mem leaks, added tests and ternary operator
2013-10-31 18:21:37 +01:00
Bob Weinand
2361745806
Working commit for constant scalar expressions (with constants).
...
Tests will follow.
2013-10-31 08:57:12 +01:00
Nikita Popov
bdfa03d79d
Save a TSRMLS_FETCH() for zval_ptr_dtor in executor
...
This gives me about 9% improvement on Zend/bench.php for a zts build.
2013-09-14 23:02:26 +02:00
Nikita Popov
96b1c2145c
Provide more macros for handling of interned strings
...
* str_erealloc behaves like erealloc for normal strings, but will
use emalloc+memcpy for interned strings.
* str_estrndup behaves like estrndup for normal strings, but will
not copy interned strings.
* str_strndup behaves like zend_strndup for normal strings, but
will not copy interned strings.
* str_efree_rel behaves like efree_rel for normal strings, but
will not free interned strings.
* str_hash will return INTERNED_HASH for interned strings and
compute it using zend_hash_func for normal strings.
2013-09-13 19:42:10 +02:00
Nikita Popov
0856714576
Always pass return_value_ptr to internal functions
...
Previous some places passed return_value_ptr only if the function
returned by reference. Now return_value_ptr is always set, even
for functions returning by-value.
This allows you to return zvals without copying their contents. For
this purpose two new macros RETVAL_ZVAL_FAST and RETURN_ZVAL_FAST
are added:
RETVAL_ZVAL_FAST(zv); /* Analog to RETVAL_ZVAL(zv, 1, 0) */
RETURN_ZVAL_FAST(zv); /* Analog to RETURN_ZVAL(zv, 1, 0) */
These macros behave similarly to the non-FAST versions with
copy=1 and dtor=0, with the difference that the FAST versions
will try return the zval without copying by utilizing return_value_ptr.
2013-08-31 13:16:41 +02:00
Stanislav Malyshev
c793a65690
Merge branch 'PHP-5.4' into PHP-5.5
...
* PHP-5.4:
non living code related typo fixes
Conflicts:
Zend/zend_compile.c
2013-08-04 16:06:24 -07:00
Veres Lajos
8d86597d73
non living code related typo fixes
2013-08-04 16:05:36 -07:00
Xinchen Hui
e89537f2a3
Merge branch 'PHP-5.4' into PHP-5.5
2013-06-05 17:30:09 +08:00
Xinchen Hui
f597f5561e
Merge branch 'PHP-5.3' into PHP-5.4
2013-06-05 17:26:10 +08:00
Xinchen Hui
3c87945c95
Fixed bug #64960 (Segfault in gc_zval_possible_root)
2013-06-05 17:25:00 +08:00
Dmitry Stogov
6e8aa09696
Merge branch 'PHP-5.4' into PHP-5.5
...
* PHP-5.4:
Fixed bug #64529 (Ran out of opcode space)
Conflicts:
NEWS
Zend/zend_execute_API.c
Zend/zend_language_scanner.c
Zend/zend_language_scanner_defs.h
2013-03-28 00:08:11 +04:00
Dmitry Stogov
85e5e60777
Fixed bug #64529 (Ran out of opcode space)
2013-03-28 00:03:40 +04:00
Xinchen Hui
a666285bc2
Happy New Year
2013-01-01 16:37:09 +08:00
Xinchen Hui
0a7395e009
Happy New Year
2013-01-01 16:28:54 +08:00
Xinchen Hui
831fbcf385
Happy New Year
2013-01-01 16:23:31 +08:00
Dmitry Stogov
438cd86378
Removed unnecessary checks
2012-12-13 17:29:30 +04:00
Dmitry Stogov
ff1e1d7a8e
Removed redundand checks from release build
2012-12-13 14:46:44 +04:00
Dmitry Stogov
7651d64556
Optimized access to temporary and compiled VM variables
2012-12-04 10:14:39 +04:00
Dmitry Stogov
70f83f35d0
. The VM stacks for passing function arguments and syntaticaly nested calls were merged into a single stack. The stack size needed for op_array execution is calculated at compile time and preallocated at once. As result all the stack push operatins don't require checks for stack overflow any more.
...
. Generators implementation was improved using the new VM stack. Now it's a bit more clear and faster.
2012-11-30 13:39:23 +04:00
Stanislav Malyshev
531e2533dd
Use zend_execute_internal always to call internal functions
2012-10-05 08:14:20 +02:00
Stanislav Malyshev
bda93f5405
use zend_execute_internal
2012-10-04 22:43:13 -07:00
Nikita Popov
526db7db14
Replace code with zend_clean_and_cache_symbol_table() call
...
I replaced other instances of this code with the function call, but missed
this one.
2012-09-16 21:54:48 +02:00
Nikita Popov
c9709bfbd7
Remove asterix modifier (*) for generators
...
Generators are now automatically detected by the presence of a `yield`
expression in their body.
This removes the ZEND_SUSPEND_AND_RETURN_GENERATOR opcode. Instead
additional checks for ZEND_ACC_GENERATOR are added to the fcall_common
helper and zend_call_function.
This also adds a new function zend_generator_create_zval, which handles
the actual creation of the generator zval from an op array.
I feel like I should deglobalize the zend_create_execute_data_from_op_array
code a bit. It currently changes EG(current_execute_data) and
EG(opline_ptr) which is somewhat confusing (given the name).
2012-07-20 16:09:06 +02:00
Xinchen Hui
eac33b454c
Typo when merging from trunk
2012-03-11 15:31:19 +00:00
Xinchen Hui
a38ffd5705
Fixed bug #61273 (call_user_func_array with more than 16333 arguments leaks / crashes)
2012-03-11 15:28:31 +00:00
Xinchen Hui
b7ae5e0d86
Fixed bug #61273 (call_user_func_array with more than 16333 arguments leaks / crashes)
2012-03-11 15:28:31 +00:00
Xinchen Hui
7536bf963d
Fixed bug #61273 (call_user_func_array with more than 16333 arguments leaks / crashes)
2012-03-11 15:28:31 +00:00
Xinchen Hui
5f99d789b5
MFH: Fixed bug #60978 (exit code incorrect)
2012-03-02 03:25:41 +00:00
Xinchen Hui
27df8b6ff0
Revert -r319102 and -r322922 in 5.4 branch since they introduce #60978
...
Fixed #60978 in trunk without reverting previous fix
#see http://news.php.net/php.internals/57789
2012-02-08 03:03:05 +00:00
Xinchen Hui
ff63c09e6f
Revert -r319102 and -r322922 in 5.4 branch since they introduce #60978
...
Fixed #60978 in trunk without reverting previous fix
#see http://news.php.net/php.internals/57789
2012-02-08 03:03:05 +00:00
Derick Rethans
33863b2cf8
- Reinstated correct return values after David's fix for #60218 .
2012-01-29 15:25:40 +00:00
Derick Rethans
2c1285a573
- Reinstated correct return values after David's fix for #60218 .
2012-01-29 15:25:40 +00:00
Dmitry Stogov
b515bfbdfb
Improved traits implementation. Now to support __CLASS__ constant in traits php doesn't have to copy the complete compiled method, but can reuse the same code. The resolution of __CLASS__ constants in methods defined in traits are delayed till run-time. This approach also made possible to use __CLASS__ constant as default value for traits properties and method arguments.
2012-01-17 08:09:13 +00:00
Dmitry Stogov
032d140fd6
Improved traits implementation. Now to support __CLASS__ constant in traits php doesn't have to copy the complete compiled method, but can reuse the same code. The resolution of __CLASS__ constants in methods defined in traits are delayed till run-time. This approach also made possible to use __CLASS__ constant as default value for traits properties and method arguments.
2012-01-17 08:09:13 +00:00
Felipe Pena
e4ca0ed09f
- Year++
2012-01-01 13:15:04 +00:00
Felipe Pena
8775a37559
- Year++
2012-01-01 13:15:04 +00:00
Felipe Pena
4e19825281
- Year++
2012-01-01 13:15:04 +00:00
Dmitry Stogov
f7278c161f
Fixed bug #60138 (GC crash with referenced array in RecursiveArrayIterator)
2011-11-18 12:43:53 +00:00
David Soria Parra
ce06b4397c
Fix #60218 (instantiating unknown class leads to memory leak in cli)
2011-11-12 17:05:08 +00:00
David Soria Parra
c4d5231a36
Fix #60218 (instantiating unknown class leads to memory leak in cli)
2011-11-12 17:05:08 +00:00
Arnaud Le Blanc
ea5a61e39b
Improved ternary operator performance when returning arrays
2011-10-18 19:42:42 +00:00
Arnaud Le Blanc
07b7ba8b40
Improved ternary operator performance when returning arrays
2011-10-18 19:42:42 +00:00
Dmitry Stogov
4a25a7740d
Fixed ZE specific compile warnings (Bug #55629 )
2011-09-13 13:29:35 +00:00
Dmitry Stogov
e43ff1359e
Fixed ZE specific compile warnings (Bug #55629 )
2011-09-13 13:29:35 +00:00
Pierre Joye
d566f0c88e
- fix build when no zend signal support
2011-09-08 09:17:21 +00:00
Pierre Joye
f20e705760
- fix build when no zend signal support
2011-09-08 09:17:21 +00:00
Rasmus Lerdorf
ca2234d18c
Make timeouts work again for shutdown functions.
...
Fixes the faling lang/045 test
2011-09-07 18:48:17 +00:00
Rasmus Lerdorf
2af36bd041
Make timeouts work again for shutdown functions.
...
Fixes the faling lang/045 test
2011-09-07 18:48:17 +00:00
Rasmus Lerdorf
80931fee0c
Since we have fci_cache = &fci_cache_local inside that block
...
and fci_cache is then later used outside the block, fci_cache_local
can't be block-scoped here
2011-08-07 00:50:46 +00:00
Rasmus Lerdorf
c44c0490d5
Since we have fci_cache = &fci_cache_local inside that block
...
and fci_cache is then later used outside the block, fci_cache_local
can't be block-scoped here
2011-08-07 00:50:46 +00:00
Ilia Alshanetsky
34d93f0c06
Zend Signal Handling
2011-06-22 14:23:21 +00:00
Ilia Alshanetsky
939875133a
Zend Signal Handling (see RFC: https://wiki.php.net/rfc/zendsignals )
...
This needs to go into 5.4 as well, but will wait for Pierre to review win32 situation
# Patch by Lucas Nealan, Arnaud Le Blanc, Brian Shire & Ilia Alshanetsky
2011-06-02 21:16:50 +00:00
Dmitry Stogov
5dcdf5c467
Fixed bug #54367 (Use of closure causes problem in ArrayAccess)
2011-05-11 06:58:33 +00:00
Dmitry Stogov
92e5b10c41
Fixed bug #54268 (Double free when destroy_zend_class fails)
2011-04-15 12:43:20 +00:00
Dmitry Stogov
50ce16deff
Fixed bug #54268 (Double free when destroy_zend_class fails)
2011-04-15 12:43:20 +00:00
Felipe Pena
927bf09c29
- Year++
2011-01-01 02:19:59 +00:00
Felipe Pena
0203cc3d44
- Year++
2011-01-01 02:17:06 +00:00
Dmitry Stogov
b88f7753a1
Fixed bug #52939 (zend_call_function does not respect ZEND_SEND_PREFER_REF)
2010-10-13 08:51:39 +00:00
Dmitry Stogov
f4173a8ece
Fixed bug #52939 (zend_call_function does not respect ZEND_SEND_PREFER_REF)
2010-10-13 08:51:39 +00:00
Dmitry Stogov
d3b6fbe39b
Fixed bug #52940 (call_user_func_array still allows call-time pass-by-reference). (cataphract@php.net)
2010-10-01 11:53:04 +00:00
Dmitry Stogov
f2df6a4a3e
- Improved memory usage
...
. zend_function.pass_rest_by_reference is replaced by
ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags
. zend_function.return_reference is replaced by ZEND_ACC_RETURN_REFERENCE
in zend_function.fn_flags
. zend_arg_info.required_num_args removed. it was needed only for internal
functions. Now the first arg_info for internal function (which has special
meaning) is represented by zend_internal_function_info structure.
. zend_op_array.size, size_var, size_literal, current_brk_cont,
backpatch_count moved into CG(context), because they are used only during
compilation.
. zend_op_array.start_op is moved into EG(start_op), because it's used
only for 'interactive' execution of single top-level op-array.
. zend_op_array.done_pass_two is replaced by ZEND_ACC_DONE_PASS_TWO in
zend_op_array.fn_flags.
. op_array.vars array is trimmed (reallocated) during pass_two.
. zend_class_entry.constants_updated is replaced by
ZEND_ACC_CONSTANTS_UPDATED in zend_class_entry.ce_flags
. the size of zend_class_entry is reduced by sharing the same memory space
by different information for internal and user classes.
See zend_class_inttry.info union.
2010-09-15 07:38:52 +00:00
Dmitry Stogov
f0c8366a9e
- use interned strings for auto globals
...
- $GLOBALS became a JIT autoglobal, so it's initialized only if used (this may affect opcode caches)
2010-07-08 14:05:11 +00:00
Dmitry Stogov
1a1178a685
eliminated unnecessary iterations during request startup/shutdown
2010-07-06 11:40:17 +00:00
Felipe Pena
c4be9c3890
- Fixed bug #51905 (ReflectionParameter fails if default value is an array with an access to self::)
2010-05-26 00:00:58 +00:00
Felipe Pena
79d2aaf0f1
- Fixed bug #51905 (ReflectionParameter fails if default value is an array with an access to self::)
2010-05-26 00:00:58 +00:00
Dmitry Stogov
3c179430ec
Fixed crash in Zend/tests/unset_cv09.phpt
2010-04-26 13:51:46 +00:00
Antony Dovgal
a9a55f77c0
fix WS
2010-04-23 09:11:44 +00:00
Dmitry Stogov
f06d839e59
Use fast class fetch function
2010-04-23 08:56:03 +00:00
Stefan Marr
cd6415f1a9
Implemented Traits for PHP as proposed in the RFC [TRAITS]
...
# RFC http://wiki.php.net/rfc/horizontalreuse#traits_-_reuse_of_behavior
# Ok, here we go, I guess that will result in more discussion, which is fine
# by me. But now, the patch is here, and properly archived.
#
# See below a list of notes to the patch, it also includes a list of
# points which should be fixed
#
# Internals of the Traits Patch
# -----------------------------
#
# Open TODOs
# """"""""""
#
# - Reflection API
# - support for traits for internal classes
# - currently destroy_zend_class does not handle that case
#
# Introduced Structures
# """""""""""""""""""""
#
# Data structures to encode the composition information specified in the
# source:
# - zend_trait_method_reference
# - zend_trait_precedence
# - zend_trait_alias
#
# Changes
# """""""
#
# zend_class_entry
# - uses NULL terminated lists of pointers for
# - trait_aliases
# - trait_precedences
# - do you prefer an explicit counter?
# - the information is only necessary during class composition
# but might be interesting for reflection
# - did not want to blow up class further with not really necessary length counters
#
# added keywords
# - trait
# - insteadof
#
# Added opcodes
# ZEND_ADD_TRAIT
# - similar to ZEND_ADD_INTERFACE
# - adds the trait to the list of traits of a class, no actual composition done
# ZEND_BIND_TRAITS
# - emitted in zend_do_end_class_declaration
# - concludes the class definition and will initiate the trait composition
# when the class definition is encountered during runtime
#
# Added Flags
# ZEND_ACC_TRAIT = 0x120
# ZEND_ACC_IMPLEMENT_TRAITS = 0x400000
# ZEND_FETCH_CLASS_TRAIT = 14
#
# zend_vm_execute.h
# - not sure whether the handler initialization (ZEND_ADD_TRAIT_SPEC_HANDLER,
# ZEND_BIND_TRAITS_SPEC_HANDLER) is correct, maybe it should be more selective
#
# zend_compile.c
# - refactored do_inherit_method_check
# split into do_inherit_method_check and do_inheritance_check_on_method
# - added helper functions use a '_' as prefix and are not mentioned in the
# headers
# - _copy_functions
# prepare hash-maps of functions which should be merged into a class
# here the aliases are handled
# - _merge_functions
# builds a hash-table of the methods which need to be added to a class
# does the conflict detection
# - reused php_runkit_function_copy_ctor
# - it is not identical with the original code anymore, needed to update it
# think I fixed some bugs, not sure whether all have been reported back to runkit
# - has to be renamed, left the name for the moment, to make its origin obvious
# - here might be optimization potential
# - not sure whether everything needs to be copied
# - copying the literals might be broken
# - added it since the literals array is freed by efree and gave problems
# with doubled frees
# - all immutable parts of the zend_op array should not be copied
# - am not sure which parts are immutable
# - and not sure how to avoid doubled frees on the same arrays on shutdown
# - _merge_functions_to_class
# does the final merging with the target class to handle inherited
# and overridden methods
# - small helper for NULL terminated lists
# zend_init_list, zend_add_to_list
#
# zend_language_parser.y
# - reused class definition for traits
# - there should be something with regard to properties
# - if they get explicitly defined, it might be worthwhile to
# check that there are no collisions with other traits in a composition
# (however, I would not introduce elaborate language features to control that
# but a notice for such conflicts might be nice to the developers)
2010-04-22 22:05:56 +00:00
Dmitry Stogov
453b49ed20
Added a number of small performance tweaks and optimizations
...
. ZEND_RECV now always has IS_CV as its result
. ZEND_CATCH now has to be used only with constant class names
. ZEND_FETCH_DIM_? may fetch array and dimension operans in a different order
2010-04-20 11:16:39 +00:00
Dmitry Stogov
dd5c478be6
Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed.
2010-04-20 11:05:54 +00:00
Dmitry Stogov
94dd83722b
Changed the structure of op_array.opcodes. The constant values are moved from opcode operands into a separate literal table
2010-04-20 10:57:45 +00:00
Stanislav Malyshev
cf4ea31bff
fix #51394 - try harder to find script lineno when exception happens
2010-04-01 19:36:56 +00:00
Stanislav Malyshev
a3857fd963
fix #51394 - try harder to find script lineno when exception happens
2010-04-01 19:36:56 +00:00
Felipe Pena
c302509726
- Fixed bug #50731 (Inconsistent namespaces sent to functions registered with spl_autoload_register)
2010-03-03 00:15:34 +00:00
Pierre Joye
5eb4db5e8f
- Ensure that stderr output are not buffered, portability for tests
2010-01-25 14:47:19 +00:00
Sebastian Bergmann
d2281d1dff
sed -i "s#1998-2009#1998-2010#g" **/*.c **/*.h **/*.php
2010-01-05 20:46:53 +00:00
Stanislav Malyshev
fc1e17ee76
fix regression bug #50394 : Reference argument converted to value in __call
2009-12-18 19:12:11 +00:00
Dmitry Stogov
10b30b51bc
Fixed unnecessary invokation of setitimer when timeouts have been disabled (Arvind Srinivasan)
2009-11-05 09:33:19 +00:00
Moriyoshi Koizumi
b91e3db105
- WS fix (spaces to tabs)
2009-09-15 00:09:13 +00:00
Stanislav Malyshev
d6ba6c69fb
fix crash when unexpectedly passed by-ref parameter is modified
2009-08-18 20:51:49 +00:00
Stanislav Malyshev
9fd8469e94
fix for bug #49000
2009-07-30 05:01:53 +00:00
Matt Wilmas
d55300298e
MFH: Added zend_eval_stringl and made create_function(), etc. binary-safe
2009-06-05 18:50:32 +00:00
Matt Wilmas
b907aa4331
MFH:
...
Restored double->long conversion behavior to that of PHP 5.2 (on most platforms) and prior:
* Out-of-range numbers overflow/preserve least significant bits (no LONG_MAX/MIN limit)
* See bug #42868 (presumably-rare platform with different results in 5.2)
* On 32-bit platforms with 64-bit long type, a zend_long64 cast has been added,
otherwise it's the same as 5.2
* Use this conversion method everywhere instead of some plain (long) casts
Added 'L' parameter parsing specifier to ensure a LONG_MAX/MIN limit:
* Essentially what 5.3's new conversion was doing in most cases
* Functions with "limit" or "length" type params could be updated to use this,
and prevent confusing overflow behavior with huge numbers (*also* in 5.2)
- See bug #47854 , for example; or even #42868 again
# Test updates coming
2009-06-04 18:20:45 +00:00
Dmitry Stogov
c8e5bc5988
Calculate hash value once
2009-04-08 13:17:58 +00:00
Matt Wilmas
021e5d168f
MFH: Removed extra space from eval string
2009-03-19 18:34:16 +00:00
Dmitry Stogov
c6e55db534
Forgotten include
2009-03-18 10:41:39 +00:00
Dmitry Stogov
31c0af245e
Fixed floating point mathematic speed degradation (Christian)
2009-03-18 10:18:10 +00:00
Felipe Pena
2bc612bc0c
- Fixed typo
2009-03-05 16:49:47 +00:00
Felipe Pena
c43b935b65
- MFH: Fixed bug #47572 (zval_update_constant_ex: Segmentation fault)
2009-03-05 16:25:43 +00:00