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
Dmitry Stogov
e0dd8a4f4b
Fixed IS_INDIRECT handling when assign array element by reference.
...
This might cause passing invalid pointer if the array could be resized before IS_INDIRECT usage.
Now we use IS_REFERENCE instead of IS_INDIRECT.
The following test crashed before:
<?php $a = array(0,1,2,3,4,5,6,7); $a[8] = &$a[7]; ?>
2014-03-13 00:30:53 +04:00
Dmitry Stogov
72f738c368
Fixed reference afto conversion
2014-03-12 12:07:03 +04:00
Dmitry Stogov
8863df3653
Fixed reference handling
2014-03-11 14:49:25 +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
6c557d867c
Fixed ref hanlding in ADD_ARRAY_ELEMENT (by ext/standard/tests/array/bug30074.phpt)
2014-03-09 19:45:45 +08:00
Dmitry Stogov
e9855b1992
Fixed pass by reference special cases
2014-03-07 16:45:32 +04:00
Dmitry Stogov
03c7ab5a95
Fixed return by reference
2014-03-07 12:25:55 +04:00
Dmitry Stogov
70260d133e
Fixed memory leak
2014-03-07 00:26:21 +04:00
Dmitry Stogov
9ed631a4d0
Fixed ArrayAccess behavior
2014-03-06 17:59:17 +04:00
Dmitry Stogov
60eac8b860
Fixed string offset handling
2014-03-06 16:00:38 +04:00
Xinchen Hui
b212461297
IS_REFERENCE is unfrequent
2014-03-06 18:23:16 +08:00
Dmitry Stogov
076da5a372
Fixed IS_REFERENCE support
2014-03-06 13:59:15 +04:00
Dmitry Stogov
9727b47418
Fixed ArrayAccess handling
2014-03-06 13:11:23 +04:00
Dmitry Stogov
018be97c0d
Fixed support for undefined constants in RECV_INIT
2014-03-06 00:15:56 +04:00
Dmitry Stogov
712dd6c68e
Fixed "foreach ($reference as $val)"
2014-03-05 23:22:50 +04:00
Dmitry Stogov
c5af715f2b
Fixed hidden property handling
2014-03-05 17:57:21 +04:00
Dmitry Stogov
28aacbfe15
It's not possible to create reference to string-offset
2014-03-05 17:32:23 +04:00
Dmitry Stogov
b763baff97
Temporary fix for lazy symbol table initialization called from zemd_error(), that converts CV variables into IS_INDIRECT
2014-03-05 15:33:31 +04:00
Dmitry Stogov
3733737328
Handle interned strings as non-refcounted scalars
2014-03-05 13:55:56 +04:00
Dmitry Stogov
6b8c46dc76
Fixed passing by reference
2014-03-04 23:54:05 +04:00
Dmitry Stogov
8b82b3e735
Fixed return of references by value
2014-03-04 17:38:19 +04:00
Dmitry Stogov
38151a38ec
Fixed dereferencing of value returned from function (foo()[1] = ...)
2014-03-04 17:23:23 +04:00
Dmitry Stogov
dbb6837627
EG(error_zval) must be passed as IS_INDIRECT
2014-03-04 16:32:40 +04:00
Dmitry Stogov
1be0df935f
Fixed destruction of VM handler operands (FREE_OP1 and family)
2014-03-04 12:27:50 +04:00
Dmitry Stogov
53128644f3
Redesigned SRR_OFFSET handling
2014-02-28 17:39:08 +04:00
Dmitry Stogov
a18a95f70a
Fixed support for references
2014-02-28 15:58:11 +04:00
Dmitry Stogov
17a009ddce
Fixed isset($str[$double])
2014-02-28 13:04:46 +04:00
Dmitry Stogov
3ed445f749
Fixed IS_REFERENCE support
2014-02-28 12:54:38 +04:00
Dmitry Stogov
6f578b57bc
Fixed FETCH_OBJ_UNSET, FETCH_DIM_UNSET
2014-02-28 00:09:43 +04:00
Dmitry Stogov
3960b0acc4
Temporarry commented
2014-02-27 23:50:43 +04:00
Dmitry Stogov
10fd93343e
Fixed reference counting
2014-02-27 23:25:41 +04:00
Dmitry Stogov
e43d0d1717
fixed refcounting in "$a->magic_prop += 2"
2014-02-27 23:18:37 +04:00
Dmitry Stogov
1c3ba95bb5
Refactored read_property() and read_dimension() handlers
2014-02-27 15:40:13 +04:00
Dmitry Stogov
ee3254a2e8
Temporary refcounting fix
2014-02-27 13:06:11 +04:00
Dmitry Stogov
1493b30501
Temporarry refcounting fix
2014-02-27 12:53:40 +04:00
Dmitry Stogov
054917619a
Fixed empty()
2014-02-27 12:48:53 +04:00
Nikita Popov
bfd967c11f
Merge branch 'PHP-5.6'
2014-02-26 16:42:55 +01:00
Nikita Popov
95c73f99d3
Don't add num_additional_args in SEND opcodes
...
Now that trailing positional args are disallowed,
num_additional_args will always be zero in SEND opcodes (and
FUNC_ARG fetches).
2014-02-26 16:40:25 +01:00
Dmitry Stogov
60eadc80b8
Fixed return anf yield by reference
2014-02-26 18:07:16 +04:00
Dmitry Stogov
0bde8c9857
Fixed argument unpacking
2014-02-26 16:17:28 +04:00
Dmitry Stogov
6829be6c26
ifixed foreach() by reference
2014-02-26 15:38:58 +04:00
Dmitry Stogov
ff1778a89f
Temorary fix for implicit IS_CV conversion into IS_INDIRECTR
2014-02-26 15:17:08 +04:00
Dmitry Stogov
495551aa8c
Fixed iterators API. zend_iterator_init() has to be used in each get_iterator() callback.
2014-02-26 15:01:08 +04:00
Dmitry Stogov
d062fb3344
Generator related fixes
2014-02-26 13:58:59 +04:00
Dmitry Stogov
f0e9a108a7
Fixed support for references
2014-02-25 23:26:04 +04:00
Dmitry Stogov
4fd84823f6
Fixed foreach() over object properties
2014-02-25 17:56:03 +04:00
Dmitry Stogov
cabfbf7128
Fixed IS_REFERENCE handling
2014-02-25 13:47:33 +04:00
Dmitry Stogov
4e63cf9b16
Fixed POST_INC/POST_DEC
2014-02-25 13:20:43 +04:00
Dmitry Stogov
fea971e1e4
Better IS_REFERENCE handling
2014-02-25 00:17:13 +04:00
Dmitry Stogov
e9cde67d47
Fixed double free
2014-02-24 18:00:24 +04:00
Dmitry Stogov
a3448b7cfa
Support for IS_REFERENCE
2014-02-24 16:51:38 +04:00
Dmitry Stogov
074391de88
ZEND_CATCH support for IS_INDIRECT
2014-02-24 12:29:35 +04:00
Dmitry Stogov
f1dcbf4750
ASSIGN_REF related fixes
2014-02-24 12:15:11 +04:00
Dmitry Stogov
e43f57e215
Fixed ++/-- of references
2014-02-24 11:23:25 +04:00
Xinchen Hui
91e2a91396
Missing handling of IS_REF in ext/standard/tests/strings/bug47842.php
2014-02-23 19:36:38 +08:00
Dmitry Stogov
bc3fb147cf
Fixed char/zend_string mesh
2014-02-22 00:31:39 +04:00
Dmitry Stogov
c8663929a2
Fixed error messages
2014-02-21 20:44:26 +04:00
Dmitry Stogov
52bd62eca8
Fixed assertions
2014-02-21 20:35:40 +04:00
Dmitry Stogov
2520f0801d
Fix Z_COUNTED() -> Z_REFCOUNTED()
2014-02-21 19:19:52 +04:00
Xinchen Hui
013cc55395
Merge branch 'refactoring2' of github.com:zendtech/php into refactoring2
...
Conflicts:
Zend/zend_language_scanner.c
Zend/zend_language_scanner.l
2014-02-21 22:41:48 +08:00
Xinchen Hui
92450f9d6c
Fixed test tests/classes/__call_007.php
2014-02-21 21:47:41 +08:00
Dmitry Stogov
7113ae0b24
Fixed include_once() handling
2014-02-21 17:23:13 +04:00
Xinchen Hui
e193944b3e
Fixed segfault in ext/standard/tests/strings/addslashes_variation1.php
2014-02-21 16:56:23 +08:00
Xinchen Hui
b917458490
Fixed segfault (Zend/tests/026.phpt now pass)
2014-02-20 15:39:46 +08:00
Dmitry Stogov
ff61b46941
Use better data structures (incomplete)
2014-02-19 16:50:09 +04:00
Dmitry Stogov
a22d27a756
Use better data structures (incomplete)
2014-02-19 15:34:32 +04:00
Xinchen Hui
a28ce57bc5
Merge branch 'refactoring2' of github.com:zendtech/php into refactoring2
2014-02-19 18:42:22 +08:00
Xinchen Hui
75f583de91
Fixed memory leak (forgot to release the zval)
2014-02-19 18:41:50 +08:00
Dmitry Stogov
9187abfaef
Merge branch 'refactoring2' of github.com:zend-dev/php into refactoring2
2014-02-19 14:36:05 +04:00
Dmitry Stogov
8bae1daa0c
Use better data structures (incomplete)
2014-02-19 14:35:28 +04:00
Xinchen Hui
757facf6c1
Fixed segfault in BEGIN/END SILENT
2014-02-19 18:34:27 +08: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
bb58ea348c
Use better data structures (incomplete)
2014-02-18 18:10:54 +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
1c4f3d39a8
Use better data structures (incomplete)
2014-02-18 11:44:58 +04:00
Dmitry Stogov
a0fe8e5a91
Use better data structures (incomplete)
2014-02-18 01:41:23 +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
datibbaw
aff56f3c45
add T_POW (**) operator
...
Fixed recognition of the operator
Added opcode, still doing multiply instead of pow()
opcode now always returns int(42)
The right answer, but always a float
Yanked code from pow() implementation.
Should not handle negative long as exponent ourselves
Added test cases from pow()
Moved precedence higher than '~'
Added GMP operator overloading
Added ZEND_ASSIGN_POW (**=) operator.
Added pow() as a language construct.
Adjusted test cases for changed precedence.
Reduced pow() to shell function around ZEND_API pow_function()
Reduced test case to only contain edge cases
Added overloading test case
Moved unary minus above T_POW
Revert "Added pow() as a language construct."
Bad bad bad idea.
This reverts commit f60b98cf7a8371233d800a6faa286ddba4432d02.
Reverted unary minus behaviour due to previous revert.
Convert arrays to int(0)
Exponent with array as a base becomes int(0)
Rebase against master
Fixed tokenizer test case
2014-02-06 14:41:21 +01:00
Bob Weinand
44dcdd146d
Merge branch 'PHP-5.6'
2014-02-06 14:48:56 +01:00
Nikita Popov
89eab884d9
Merge branch 'PHP-5.6'
2014-01-18 14:44:57 +01:00
Nikita Popov
31a2ac470c
Fix argument unpacking across stack pages
...
If multiple unpacks were used (or mixed with normal arguments)
parts of the arguments could land on different stack pages. If
this occurs the arguments will now be copied to a new stack page.
The code used to do this is copied verbatim from the PHP 5.4 branch
and only modified to reduce the amount of inlined code.
2014-01-18 14:41:33 +01:00
Nikita Popov
4facc35413
Merge branch 'PHP-5.6'
2014-01-11 12:54:08 +01:00
Nikita Popov
2c47dfbaeb
Implement argument unpacking
...
RFC: https://wiki.php.net/rfc/argument_unpacking
2014-01-11 12:42:08 +01: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
krakjoe
8ce521a6a7
missing, apparently
2013-12-22 13:19:35 +00:00
Kalle Sommer Nielsen
aed4b086ac
Eliminate the TSRMLS_FETCH() calls in the ticks functions and hook
2013-12-18 09:32:26 +01:00
Kalle Sommer Nielsen
2eb9bd316d
Merge branch 'master' of https://git.php.net/push/php-src
2013-12-18 07:27:14 +01: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
Xinchen Hui
b331a219be
Use memcmp here is better
2013-12-17 15:37:10 +08:00
Xinchen Hui
794a888a48
Fixed bug #65784 (Segfault with finally).
2013-12-13 00:16:08 +08:00
Nikita Popov
e2a8d7dc17
Merge branch 'PHP-5.5' into PHP-5.6
2013-11-30 13:40:17 +01:00
Nikita Popov
9589cae8cb
Fixed bug #66041 : list() fails to unpack yielded ArrayAccess object
...
Yield return values now use IS_VAR rather than IS_TMP_VAR. This
fixes the issue with list() and should also be faster as it avoids
doing a zval copy.
2013-11-30 13:08:31 +01:00
Bob Weinand
d36cf90291
Merge branch 'const_scalar_exprs' into PHP-5.6
...
Conflicts:
Zend/zend_extensions.h
2013-11-28 13:41:42 +01:00
Dmitry Stogov
57c1335fec
Don't check argument types for internal functions without type hinting
2013-11-28 11:44:14 +04:00
Dmitry Stogov
43e3933fa3
Removed deprecated AI_SET_PTR()s
2013-11-27 20:30:35 +04:00
Dmitry Stogov
a908afeaa5
Merge branch 'PHP-5.5' into PHP-5.6
...
* PHP-5.5:
Fixed bug #65969 (Chain assignment with T_LIST failure)
Conflicts:
NEWS
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
2013-11-27 14:56:18 +04:00
Dmitry Stogov
92b76680e9
Merge branch 'PHP-5.4' into PHP-5.5
...
* PHP-5.4:
Fixed bug #65969 (Chain assignment with T_LIST failure)
Conflicts:
NEWS
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
2013-11-27 14:39:40 +04:00
Dmitry Stogov
16d59aa171
Fixed bug #65969 (Chain assignment with T_LIST failure)
2013-11-27 14:26:34 +04:00
Dmitry Stogov
9647c61dc1
Constant expressions refactoring
2013-11-06 22:21:07 +04:00
Dmitry Stogov
af600c240d
Merge branch 'const_scalar_exprs' of github.com:bwoebi/php-src into const_scalar_exprs
...
* 'const_scalar_exprs' of github.com:bwoebi/php-src:
Removed operations on constant arrays. They make no sense as constants are not allowed to be arrays. And as just properties are allowed to; no problem, we still don't need operations on any constant array.
Added a few more operators
Whitespace fix
converted several switches to ifs and made more opcache friendly
Fatal error about self referencing constants fixed
Fixed mem leaks, added tests and ternary operator
Working commit for constant scalar expressions (with constants). Tests will follow.
Conflicts:
Zend/Makefile.am
configure.in
win32/build/config.w32
2013-11-06 15:41:33 +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
2361745806
Working commit for constant scalar expressions (with constants).
...
Tests will follow.
2013-10-31 08:57:12 +01:00
Dmitry Stogov
3b2ca392f1
Removed unnecessary GC checks
2013-10-31 11:33:39 +04:00
Dmitry Stogov
592be912c2
Merge branch 'PHP-5.5'
...
* PHP-5.5:
Use zval* instead of zval**
Conflicts:
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
2013-10-28 15:23:10 +04:00
Dmitry Stogov
2d14cc2a49
Use zval* instead of zval**
2013-10-28 14:44:07 +04:00
Nikita Popov
ff46b6f633
Merge branch 'PHP-5.5'
2013-10-04 13:15:45 +02:00
Nikita Popov
536260f2c5
Fix bug #65821 : By-ref foreach on property access of string offset segfaults
...
This removes the now unnecessary ZEND_FETCH_ADD_LOCK on the
container of a property fetch of a by-reference foreach.
2013-10-04 13:13:46 +02:00
Nikita Popov
0d7a638866
Implement variadic function syntax
...
As per RFC: https://wiki.php.net/rfc/variadics
2013-09-26 18:39:17 +02: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
Gustavo André dos Santos Lopes
d515455589
Implement phase 1 of rfc/incompat_ctx
...
Just changing the error level of the message from E_STRICT to
E_DEPRECATED. This comes one version later than the timeline
mentioned in the RFC.
Oddly, there were no tests for this ‘feature’. I added a simple
one.
2013-09-02 01:53:06 +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
Anatol Belski
07fa043cc3
Merge branch 'PHP-5.5'
...
* PHP-5.5:
Suppress static analyzer warnings in specialized executor
Update NEWS
2013-08-23 17:45:45 +02:00
Anatol Belski
716fc80fda
Suppress static analyzer warnings in specialized executor
...
As things like if(0) will be removed by the compiler, no need
to see that tons of warnings with static analyzer enabled.
2013-08-23 17:41:07 +02:00
Xinchen Hui
b6fa0b40f7
Merge branch 'PHP-5.5'
2013-08-14 11:44:53 +08:00
Xinchen Hui
f3d18add08
Merge branch 'PHP-5.4' into PHP-5.5
2013-08-14 11:44:37 +08:00
Xinchen Hui
f4dc2240a0
Fixed #65431 (Discarded qualifiers from pointer target warnings when using --enable-dtrace) by Sixd
2013-08-14 11:42:39 +08:00
Dmitry Stogov
52dac3e8cd
Fixed bug #65382 (Segfault in closure_030.phpt)
2013-08-12 10:53:20 +04:00
Xinchen Hui
9b38673776
Merge branch 'PHP-5.5'
2013-08-06 15:39:46 +08:00
Xinchen Hui
aa042d0c35
Merge branch 'PHP-5.4' into PHP-5.5
2013-08-06 15:39:33 +08:00
Xinchen Hui
a831499b4a
Re-fix Bug #65372 (Segfault in gc_zval_possible_root when return reference fails)
...
Missed a zval_copy_ctor there
2013-08-06 15:37:20 +08:00
Xinchen Hui
78673d1bad
Merge branch 'PHP-5.5'
2013-08-02 18:39:58 +08:00