Commit Graph

9475 Commits

Author SHA1 Message Date
Dmitry Stogov
75b5dc6369 Reorder fields for better alignment on both 32-bit and 64-bit systems 2014-10-07 18:12:09 +04:00
Dmitry Stogov
67be34ec95 Remove useless parts of EX(old_error_reporting) 2014-10-07 17:54:24 +04:00
Dmitry Stogov
33e137d409 Merged EX(frame_kind) and EX(flags) into single word 2014-10-07 17:12:12 +04:00
Nikita Popov
e24c24c108 Fix bug #68162: isset($$varname) always true 2014-10-06 20:39:00 +02:00
Nikita Popov
2a0c4edfda Drop convert_to usage in zend_exceptions
To make everything work correctly with refs.

I'm unsure whether the GET_PROPERTY_SILENT distinction is really
necessary, because the choice seemed pretty random, but kept it
around.
2014-10-06 20:14:30 +02:00
Nikita Popov
390900cbcb Fix isset/unset on by-ref names as well 2014-10-06 18:56:23 +02:00
Nikita Popov
03c726d728 Fix bug #68163 2014-10-06 18:45:08 +02:00
Anatol Belski
741bf0ee96 fix the empty_strings SAPI shutdown leak in TS build
still the NTS variant is somewhat different as it needs
zend_new_interned_string_int because the normal callbacks might
be not initialized, but at least no leaks anymore and some more
structure
2014-10-06 15:48:55 +02:00
Dmitry Stogov
cc7c14cb76 Use fastcall calling convention for heap functions 2014-10-06 16:32:15 +04:00
Anatol Belski
72b34e1372 fix leaking the empty_string in TS builds 2014-10-06 13:38:13 +02:00
Timm Friebe
43f3d250f4 Add tests verifying calls work inside echo, concatenation and array access 2014-10-06 06:08:02 +08:00
Tjerk Meesters
82523c0752 Merge branch 'pr/647'
* pr/647: (33 commits)
  zend_uint -> uint32_t
  Fix nesting for *non*-compile-time-resolveable functions See a1a4ba9511 (commitcomment-7414223)
  Add tests for calls to nested, *non*-compile-time-resolveable functions See a1a4ba9511 (commitcomment-7414362)
  Make list of opcodes used for nesting calculation consistent   with `zend_do_convert_call_user_func()` in Zend/zend_compile.c
  Rewrite code to use ZEND_VM_JMP() instead of repeated ZEND_VM_INC_OPCODE() calls
  QA: Simplify code to find matching ZEND_DO_FCALL_BY_NAME CG(context).nested_calls is stored inside the initializer's result.num and inside the finalizer's op2.num, by comparing these we don't need to count manually, and are thus safer from future expansion with specialized opcodes e.g.
  Fix expected fatal error, now is catchable fatal
  Adjust expected fatal error message Now also includes "on [TYPE]" after merge from master
  Check for memory leaks when not using return value
  Adjust expected fatal error message Now also includes "on [TYPE]" after merge from master
  Add tests with arrays as parameters
  Handle ZEND_NEW nesting
  Also verify nesting with dynamically called static methods
  Handle ZEND_INIT_NS_FCALL_BY_NAME nesting
  QA: Refactor: Split tests a bit to make them more comprehendable
  Support nested static calls
  Handle ZEND_EXT_FCALL_END, skipping if necessary Verified with running tests with new "-e" run-tests arg: $ make test TESTS=Zend/tests/*-on-non-objects-*phpt TEST_PHP_ARGS=-e # Tests passed    :   11 (100.0%)
  Add support for PHP's 'extended information for debugger/profiler' mode
  Verify non-CV-operands also work See discussion https://github.com/php/php-src/pull/647#issuecomment-48050551
  Only allocate NULL return value if it's actually used
  ...

Conflicts:
	ext/date/tests/bug67118.phpt
2014-10-06 05:52:43 +08:00
Nikita Popov
58f389772f Fix $this CV init for include/eval
Fixes bug #68148
2014-10-05 23:38:59 +02: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
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
Nikita Popov
292421d3a1 Fix unused variable warning 2014-10-05 21:58:38 +02:00
Nikita Popov
e756333bbb Remove <% and <script language="php"> tags
As per https://wiki.php.net/rfc/remove_alternative_php_tags.

Removes:
 * <% opening tag
 * %> closing tag
 * <%= short opening tag
 * /<script\s+language\s*=\s*(php|"php"|'php')\s*>/i opening tag
 * /</script>/i closing tag
 * asp_tags ini directive
2014-10-05 21:57:05 +02:00
Dmitry Stogov
7c7b9184b1 Fixed list() behavior inconsistency (string handling is disabled for all cases, ArrayAccess objects handling is enabled for all cases, ZEND_FETCH_DIM_TMP_VAR opcode is renamed into ZEND_FETCH_LIST, ZEND_FETCH_ADD_LOCK flag is removed). 2014-10-05 13:02:58 +04:00
Dmitry Stogov
2e1b8ba4b7 Moved checks and error reporting related to static methods from DO_FCALL inti INTI_FCALL* opcodes that may really deal with static methods. (In some rare cases it may lead to different order of warning messages). 2014-10-04 14:55:44 +04:00
Nikita Popov
f1e21c4979 Fix test gc_029_zts.phpt
In ZTS the default properties are duplicated (instead of copied),
so the array has one lower RC than on NTS and as such gets destroyed
during GC, increasing the cycle count by 3. PHP 5.6 didn't always
copy default properties on ZTS, which is where the difference comes
from.
2014-10-04 00:37:15 +02:00
Nikita Popov
b68886f7b5 Mark test for full GC root buffer as XFAIL 2014-10-03 22:02:02 +02:00
Nikita Popov
443374675e Merge branch 'PHP-5.6'
Conflicts:
	Zend/zend_object_handlers.c
2014-10-03 21:30:06 +02:00
Nikita Popov
8617f2fa8d Merge branch 'PHP-5.5' into PHP-5.6 2014-10-03 21:27:07 +02:00
Nikita Popov
93288d0095 Fix bug #68188 2014-10-03 21:26:39 +02:00
Nikita Popov
e7623f470f Fix bug #68133 and bug #68135 2014-10-03 21:06:26 +02:00
Anatol Belski
647ebe6bf2 remove misprint parentheses 2014-10-03 19:23:33 +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
5e39d0c19c And this one... 2014-10-03 19:07:02 +08:00
Xinchen Hui
aa5f937958 It should be in extern c 2014-10-03 18:35:57 +08: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
5c63a4f72b Micro optimization for the most frequency case 2014-10-03 12:18:15 +04:00
Nikita Popov
51c90e999f Fix ZTS build 2014-10-02 21:58:29 +02:00
Anatol Belski
c41fbcfb4c improved file size computation in stat()
On 32 bit it's still overwlowing, so nothing is changed there. But
the usage of LARGE_INTEGER instead of bit shifting is a better way
to go.
2014-10-02 12:18:02 +02:00
Dmitry Stogov
ccb24caa6d Fixed incorrect compilation 2014-10-02 13:37:44 +04:00
Dmitry Stogov
c4419e7a5b Expose zend_throw_exception_internal() 2014-10-01 16:37:21 +04:00
Dmitry Stogov
8857af8494 Use inline finction for OBJ_RELEASE() macro 2014-10-01 16:35:56 +04:00
Dmitry Stogov
9f7564b12b Removed zend_execute_data->prev_nested_call. Reuse prev_execute_data instead. 2014-10-01 10:46:13 +04:00
Dmitry Stogov
63dc9bbc02 Micro optimization 2014-09-30 15:19:51 +04:00
Nikita Popov
67a11b61cd Drop unused INIT_STRING opcode
INIT_STRING has been implemented as an UNUSED op1 to ADD_* for
some time now.
2014-09-29 22:59:57 +02:00
Nikita Popov
290d71de75 Drop unused RAISE_ABSTRACT_ERROR opcode
Abstract methods are being prevented from being called in DO_FCALL
etc.
2014-09-29 22:50:56 +02:00
Nikita Popov
ab288b01d5 CT substitute unqualified true/false/null in namespaces
Substituation now always happens on the resolved name and
unqualified usages of true/false/null in namespaced code are
substituted as well.
2014-09-29 21:18:12 +02:00
Nikita Popov
142a01db92 Fix a couple compile warnings 2014-09-29 20:57:17 +02:00
Dmitry Stogov
e15be6c8cd Use more readable inline functions 2014-09-29 19:41:00 +04:00
Xinchen Hui
f248b17e07 Fixed segfault 2014-09-29 12:06:56 +08:00
Timm Friebe
e14b7f629b Fix segmentation fault in debug_backtrace() 2014-09-28 20:58:55 +02:00
Anatol Belski
4b3e198023 removed *.dsw and *.dsp files 2014-09-28 19:02:09 +02:00
Nikita Popov
877eb02fd6 Update operand types for coalesce operator 2014-09-28 12:20:04 +02:00
Andrea Faulds
2d069f640e Merge branch 'coalesce_operator'
* coalesce_operator:
  Extended coalesce operator test case for ordering/short-circuiting
  Ensure not evaluated twice
  Added test
  Initial coalesce operator implementation
2014-09-28 00:07:04 +01:00
vagrant
5c6ca24dc0 Merge branch 'master' into catchable-fatals/methods-on-non-objects 2014-09-27 17:49:54 +00:00
Timm Friebe
0a9e207a77 zend_uint -> uint32_t 2014-09-25 21:42:19 +02:00
Anatol Belski
c1e92d9fed fix C89 compat 2014-09-25 20:28:34 +02:00
Timm Friebe
e83580c1f0 Merge branch 'master' into catchable-fatals/methods-on-non-objects 2014-09-25 19:45:05 +02:00
krakjoe
eabad90acb fix indentation 2014-09-25 16:31:39 +01:00
krakjoe
abdc8c3061 fix zts build 2014-09-25 16:15:02 +01:00
Dmitry Stogov
1833ab0230 Use macro 2014-09-25 17:00:17 +04:00
Dmitry Stogov
8b034ec69a Optimized (PRE|POST)_(INC|DEC) handlers. Moved proxy object handling into helper function. 2014-09-25 13:42:46 +04:00
Dmitry Stogov
6a09bdff6a Fixed C++ incompatibility 2014-09-24 20:31:22 +04:00
Dmitry Stogov
8ea2409e44 Fixed immutable arrays support 2014-09-24 15:39:54 +04:00
Nikita Popov
c45924b954 Remove dead code 2014-09-24 12:06:19 +02:00
Nikita Popov
1664e70ade Test use($this) being an error 2014-09-24 12:06:19 +02:00
Nikita Popov
3e042e1f83 Move list() condition into assign_znode
The condition in compile_foreach was using ->attr instead of ->kind
and as such never passed. It only worked because assign_znode already
supported this case by indirecting via zend_compile_assign. Now it
implements it with a direct call.
2014-09-24 12:06:18 +02:00
Dmitry Stogov
73275a55f5 Avoid double checks 2014-09-24 12:20:46 +04:00
Dmitry Stogov
58a41cf795 Make QM_ASSIGN, JMP_SET and CAST return IS_TMP_VAR. 2014-09-24 01:57:40 +04:00
Dmitry Stogov
e8612b72ee Merge branch 'master' of git.php.net:php-src
* 'master' of git.php.net:php-src:
  Drop unused result argument
  Fix ct binding for cuf/cufa functions
  Fix detection of write to built-in function for references
  Test use of string names with \ prefix
  Add zend_add_literal_string
  Drop dead code
2014-09-23 23:27:20 +04:00
Dmitry Stogov
d429e87d18 Removed useless helper 2014-09-23 23:26:39 +04:00
Nikita Popov
4a221bd881 Drop unused result argument 2014-09-23 21:04:30 +02:00
Nikita Popov
67a5ca6697 Fix ct binding for cuf/cufa functions
It was checking against the wrong AST kind, so the binding was
never actually done.
2014-09-23 21:02:32 +02:00
Nikita Popov
9070eb38e9 Fix detection of write to built-in function for references 2014-09-23 20:42:22 +02:00
Nikita Popov
231dcc94e8 Test use of string names with \ prefix
And drop piece of dead code
2014-09-23 20:36:00 +02:00
Nikita Popov
182ddfeaf2 Add zend_add_literal_string
And simplify additional of special literals based on it.
2014-09-23 20:21:28 +02:00
Nikita Popov
4571271de1 Drop dead code 2014-09-23 19:32:02 +02: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
7cef08c5d1 Allocate copies of internal functions inherited in user classes at CG(arena), instead of permanent heap (malloc). 2014-09-23 12:35:42 +04:00
Xinchen Hui
e029042c36 It is not likely a string 2014-09-23 13:50:00 +08:00
Xinchen Hui
22fbfdfb8e Simply make_printable_zval
it's possible to remove make_printable_zval at all
but it will be a API break
2014-09-23 12:56:59 +08:00
Nikita Popov
75533c9b23 Test a few more error conditions in the compiler 2014-09-23 00:57:00 +02:00
Nikita Popov
51119054ff Test error conditions for ct class const refs
And fix a bug found while doing so...
2014-09-23 00:40:17 +02:00
Nikita Popov
c0c431b702 Test some additional cases for constexpr evaluation 2014-09-23 00:31:38 +02:00
Nikita Popov
982f02afe6 Remove zend_dynamic_array
This was introduced back in 2000 to test a new hashtable
implementation and is no longer used.
2014-09-22 23:45:13 +02:00
Nikita Popov
02bb637bb8 Remove static allocator
We didn't even compile this file anymore
2014-09-22 23:45:13 +02:00
Nikita Popov
f30f28ec47 Fix list() destructuring to special variables 2014-09-22 18:34:40 +02:00
Dmitry Stogov
0c0d43bd4e Avoid useless reference counting 2014-09-22 17:52:38 +04:00
Dmitry Stogov
826abe9d62 Specialization (only IS_VAR ad IS_CV operands may be references) 2014-09-22 16:17:35 +04:00
Dmitry Stogov
a057f060e8 Optimized unset() 2014-09-22 14:41:44 +04:00
Dmitry Stogov
9c0fa4106c Make error paths to be UNEXPECTED 2014-09-22 13:18:49 +04:00
Dmitry Stogov
2c8ac3a252 Replace IS_OP?_TMP_FREE() with more clear (OP?_TYPE == IS_TMP_VAR) 2014-09-22 12:47:10 +04:00
Anatol Belski
065edced71 added a comment 2014-09-22 09:41:56 +02:00
Anatol Belski
dc7a66a1c4 fix the REPARSE_DATA_BUFFER struct def 2014-09-22 09:41:54 +02:00
Nikita Popov
7d4c81d8d9 Fix two memory errors by interning earlier 2014-09-21 23:56:09 +02:00
Nikita Popov
a770d29df7 Add smart_str_append for appending zend_strings
Also replaces usages in Zend/ and ext/standard
2014-09-21 20:58:31 +02:00
Nikita Popov
2a7de9fdbb Rename smart_str_append to smart_str_append_smart_str
It's used only rarely and I'm running out of append names...
2014-09-21 20:49:39 +02:00
Nikita Popov
e0df8cc810 Use smart_str for exception stack traces 2014-09-21 20:49:39 +02:00
Nikita Popov
e26a688871 Use smart_str in get_function_declaration
Instead of custom smart string implementation
2014-09-21 20:49:39 +02:00
Nikita Popov
e33f3d3b7c Move smart_str implementation into Zend/
So we can use it there as well...

For now I've retained the zend_smart_str_public.h header, though
it would probably be better to just move that one struct into
zend_types.h.
2014-09-21 20:49:39 +02:00
Andrea Faulds
12b15e5ca4 Merge branch 'master' into integer_semantics 2014-09-21 00:29:48 +01:00
Nikita Popov
6219a4e844 Merge branch 'PHP-5.6'
Conflicts:
	Zend/zend_compile.c
2014-09-20 21:58:06 +02:00
Nikita Popov
308c0a727e Merge branch 'PHP-5.5' into PHP-5.6 2014-09-20 21:47:59 +02:00
Nikita Popov
5e977e69e1 Fixed bug #67633 2014-09-20 21:46:25 +02:00
Anatol Belski
2fc1a1dce5 fixed copying of the struct as it's not being modified
in the subsequent function call
2014-09-20 20:58:00 +02:00