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
Anatol Belski
d36bf0e8ee
fix TS build
2014-11-25 17:58:20 +01: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
3727e26456
Improved zend_hash_clean() and added new optimized zend_symtable_clean()
2014-11-25 14:17:21 +03:00
Dmitry Stogov
85d04a48d9
Improved assignment to object property
2014-11-24 23:19:24 +03:00
Dmitry Stogov
42d33a9fc6
Reuse zend_assign_to_variable() in zend_std_write_property()
2014-11-24 20:33:27 +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
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
54fa424751
Micro optimization
2014-11-17 08:36:14 +03:00
Dmitry Stogov
75041379a6
Improved object property access.
2014-11-06 14:50:03 +03:00
Dmitry Stogov
8dedd863bc
Get rid of ZEND_FETCH_MAKE_REF
2014-10-22 21:45:02 +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
Anatol Belski
66e47446e4
fix signed/unsigned mismatch warning
2014-10-13 18:43:13 +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
0390cde428
Improved VM stack primitives for fast paths. Slow paths are not inlined anymore.
2014-10-09 20:29:02 +04:00
Dmitry Stogov
7fd3375fb5
Exposed zend_clean_and_cache_symbol_table() and fixed incorrect efree()
2014-10-08 16:08:26 +04:00
Dmitry Stogov
fe501914f0
Micro optimization
2014-10-07 23:48:55 +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
58f389772f
Fix $this CV init for include/eval
...
Fixes bug #68148
2014-10-05 23:38:59 +02:00
Nikita Popov
fb34cd90f8
Fix $arr =& $arr[0]
...
value_ptr can be invalidated by the ptr_dtor, so backup the
zend_reference in an extra variable.
2014-10-05 22:58:40 +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
Xinchen Hui
f54f5368e4
Merge branch 'master' of https://git.php.net/repository/php-src
2014-10-03 18:35:18 +08:00
Xinchen Hui
54bad8bf57
Remove useless condition
2014-10-03 18:35:05 +08:00
Dmitry Stogov
e15be6c8cd
Use more readable inline functions
2014-09-29 19:41:00 +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
0c0d43bd4e
Avoid useless reference counting
2014-09-22 17:52:38 +04:00
Dmitry Stogov
9c0fa4106c
Make error paths to be UNEXPECTED
2014-09-22 13:18:49 +04:00
Nikita Popov
c343ca4efb
Split inheritance into separate file
...
This moves handling of inheritance and interface implementation
from zend_compile.c into a separate zend_inheritance.c file, as
this is not really related to compilation.
2014-09-19 19:54:37 +02:00
Dmitry Stogov
3bc8a958c5
Fixed useless or duplicated IS_INTERNED() checks
2014-09-19 15:41:01 +04:00
Dmitry Stogov
e3b3e68127
Optimized enterance into functions
2014-09-17 16:17:58 +04:00
Anatol Belski
71cc3991bf
cast the other way round, the sign check is already done before
2014-09-16 09:33:02 +02: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
Anatol Belski
836fd73cce
fix signed/unsigned mismatch
2014-09-15 12:58:45 +02:00
Dmitry Stogov
b8c36e199e
Simplify ASSIGN code
2014-09-11 17:00:06 +04:00
Dmitry Stogov
c07a0dbcb9
Don't miss warning messages
2014-09-10 13:02:01 +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
acad6f4700
fix 64 bit string index usage
2014-09-07 00:55:36 +02:00
Nikita Popov
6cceb54c09
Fix a number of format issues
2014-09-03 15:57:28 +02:00
Nikita Popov
9e75353184
Use zval_ptr_dtor_nogc to destroy literals
...
Also move the definition of zval_ptr_dtor_nogc to zend_variables.h
(from zend_execute.h/.c) as it's used in a few places.
2014-09-03 15:18:06 +02:00
Anatol Belski
d3fb1859f0
restore the old behavior for the assignment to string offset
2014-08-29 17:28:53 +02:00
Anatol Belski
898e1570a2
fixed trim() and strtok() to work with big strings
2014-08-28 21:59:00 +02: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
ee552b628c
Reorder fields for better nenory consumtion and data locality on 64-bit systems
2014-08-27 22:45:27 +04:00
Dmitry Stogov
8ec40397cd
Cleanup IS_VAR handling
2014-08-27 19:10:29 +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
Anatol Belski
4d997f63d9
master renames phase 3
2014-08-25 20:22: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
70de6180d5
fixes to %pd format usage
2014-08-24 02:35:34 +02:00
Anatol Belski
c586133d07
rename zval_get_long and fixes to some string functions
2014-08-18 08:39:39 +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
25bda5ae3c
Fixed assignment of reference to itself
2014-08-14 12:01:28 +04:00
Dmitry Stogov
4a3e501fb3
cleanup
2014-08-08 13:47:34 +04:00
Dmitry Stogov
7301994c28
Merge branch 'master' into phpng
...
* master: (46 commits)
PHP_INT_MIN and _MAX tests
NEWS and UPGRADING
Added PHP_INT_MIN
Fix wrong lenght size
Bug #51096 - Remove unnecessary ? for first/last day of
Moved streams related functions to xp_ssl.c
Remove duplicate NEWS
Update NEWS
Update NEWS
Update NEWS
BFN
BFN
Fixed bug #67715 (php-milter does not build and crashes randomly).
We need to turn off any strict mode here for this warning to show up
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
Revert "Fix bug #67064 in a BC safe way"
Updated NEWS for #67693
Updated NEWS for #67693
Fixed bug #67693 - incorrect push to the empty array
add missing entry to NEWS
...
Conflicts:
Zend/tests/errmsg_040.phpt
Zend/tests/ns_059.phpt
Zend/zend_language_parser.y
Zend/zend_vm_def.h
ext/openssl/openssl.c
ext/reflection/php_reflection.c
ext/session/session.c
ext/spl/spl_directory.c
ext/spl/spl_iterators.c
ext/sqlite3/sqlite3.c
ext/standard/array.c
2014-08-04 13:56:27 +04:00
Dmitry Stogov
cad6408a3f
Fixed Zend/tests/bug54265.phpt
2014-07-29 14:34:43 +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
19729aa7fe
Use data stored in current call frame instead of EG() if possible
2014-07-09 17:07:41 +04:00
Dmitry Stogov
d87140d8d8
Added missed warning (ext/spl/tests/iterator_035.phpt)
2014-07-09 13:30:47 +04:00
Xinchen Hui
549c5a5c1b
Mismatched folder marks
2014-07-08 17:53:13 +08:00
Dmitry Stogov
73679bf6db
Another fix for uninitialized execute_data->symbol_table
2014-07-08 12:17:52 +04:00
Dmitry Stogov
d9585f019f
Skip useless ZEND_RECV opcodes
2014-07-07 22:18:48 +04:00
Dmitry Stogov
7d0b21d3bc
Function can't be "interactive"
2014-07-07 21:33:09 +04:00
Dmitry Stogov
2ed8a17045
Refactored run_time_cache usage in object handlers
2014-07-07 20:54:31 +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
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
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
2330be5641
Fixed possible crash because of race conditions on modifying constants in shared memory
2014-07-01 00:13:34 +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
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
e1b18e59f7
Use arena allocator for zend_class_entry, zend_op_array and zend_property_info that live till the end of request
2014-06-18 02:47:01 +04:00
Dmitry Stogov
e181798405
Small call/return improvement
2014-06-16 13:25:23 +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
9f6db414f8
Improved assignment code
2014-06-11 15:11:29 +04:00
Dmitry Stogov
7bf4fa69be
Avoid extra function call on hot path
2014-06-09 15:41:29 +04:00
Nikita Popov
6d1885342c
Fix bug #67392 : dtrace breaks argument unpack
2014-06-06 17:09:49 +02: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
032bdbba73
Improved conditions order
2014-05-30 14:40:19 +04:00
Dmitry Stogov
984c8f87d2
Avoid useless duplication of immutable arrays
2014-05-30 11:12:24 +04: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
e34a6e9211
Use new zend_hash API
2014-05-27 00:38:58 +04:00
Dmitry Stogov
40256e0f9c
Use specialized functions instead of macros
2014-05-26 17:16:16 +04:00
Xinchen Hui
c2082ece52
Fixed apply_func_t (they should be broken before)
2014-05-25 18:32:35 +08:00
Nikita Popov
65f488ece3
Add STR_ALLOCA_* API, use in get_method and verify_arg
...
This avoid unnecessary allocations when using dynamic method
dispatch and class typehints.
Probably there are other places where this should be done as well,
those just stood out for my usage.
2014-05-03 10:43:45 +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
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
5864ce8a44
Fixed compilation warnings
2014-04-22 17:46:34 +04:00
Dmitry Stogov
fd24614cd9
Inline simple function
2014-04-21 15:18:05 +04:00
Dmitry Stogov
ea2e1bb1eb
Optimized zend_leave_helper()
2014-04-18 13:46:36 +04:00
Dmitry Stogov
5c02e0fc5f
Cache op_array->run_time_cache in zend_execute_data for faster access
2014-04-17 16:36:04 +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
6976eb2919
Fixed support for unspecialized and GOTO and SWITCH executor
2014-04-17 02:12:06 +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
Nikita Popov
2c6ee5dcb5
Fix argument unpacking
2014-04-11 19:53:14 +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
Nikita Popov
f449b04713
Fix some ZTS issues and leaks
2014-04-10 13:50:25 +02:00
Dmitry Stogov
29f068779f
Fixed ext/spl/tests/iterator_035.phpt
2014-04-09 23:49:58 +04:00
Dmitry Stogov
8732f5e5d7
Removed useless code
2014-04-09 17:55:40 +04:00
Dmitry Stogov
3d0b32b3db
IS_CONST can't be a reference
2014-04-08 00:52:07 +04:00
Dmitry Stogov
f3c57716f7
Optimized ZEND_FETCH_R and family
2014-04-08 00:38:54 +04:00
Dmitry Stogov
df7293b072
don't use memset() for array of zval initialization
2014-04-07 12:14:44 +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
eaeb3c39b4
Optimized RECV_* opcodes
2014-04-04 14:36:34 +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
8dedaf8512
Use interned strings for one character strings
2014-04-01 18:06:50 +04:00
Dmitry Stogov
a25a1ba0ef
STR_DUP() doesn't duplicate interned strings anymore. In case new string is required STR_INIT() or STR_ALLOC() should be used.
2014-04-01 16:31:03 +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
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
36f24c512e
Inlined "slow" CV lookup code (now it's cheap)
...
Removed expectations for undefined CV acess for BP_VAR_W and BP_VAR_IS modes
2014-03-27 11:19:34 +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
130e48d375
Typo
2014-03-21 16:37:53 +04:00
Dmitry Stogov
37db857734
Fixed CV IS_INDIRECT support
2014-03-21 15:43:53 +04:00
Dmitry Stogov
2f4e8aa5d7
Fixed refcounting
2014-03-21 11:33:20 +04:00
Dmitry Stogov
e884d5d8e3
Fixed assignment reference to itself
2014-03-19 22:43:06 +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
918866da5f
Fixed autoconversion from reference to ordinal value
2014-03-13 14:24:08 +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
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