Commit graph

1961 commits

Author SHA1 Message Date
Xinchen Hui
563659822d Merge branch 'PHP-7.0' 2016-01-02 17:56:54 +08:00
Xinchen Hui
97a9470d97 bump year which is missed in rev 49493a2 2016-01-02 17:56:11 +08:00
Derick Rethans
5362f0ad7f MFH: Fix lineno for finally FAST_CALL and JMP 2015-12-31 09:46:43 +00:00
Nikita Popov
b3afeeabef Fix lineno for finally FAST_CALL and JMP 2015-12-30 23:49:07 +01:00
Nikita Popov
65e456f364 Introduce BIND_LEXICAL
This opcodes inserts a local CV into the closure static variable
table. This replaces the previous mechanism of having static
variables marked as LEXICAL, which perform a symtable lookup
during copying.

This means a) functions which contain closures no longer have to
rebuild their symtable (better performance) and b) we can now track
used variables in SSA.
2015-12-29 23:14:53 +01:00
Nikita Popov
4440436821 Forbid use() of auto-globals
We don't correctly support it, it doesn't make sense and it's also
forbidden for parameters.
2015-12-29 11:20:44 +01:00
Julien Pauli
7a2f60d3c7 Merge branch 'PHP-7.0'
* PHP-7.0:
  Remove mentions of "type hint" and "typehint"
2015-12-24 15:19:54 +01:00
Levi Morrison
2a7eeff33e Remove mentions of "type hint" and "typehint" 2015-12-24 15:19:31 +01:00
Dmitry Stogov
aa4a83fec7 Fixed bug #71196 (Memory leak with out-of-order live ranges) 2015-12-23 01:47:38 +03:00
Nikita Popov
88eae43ff9 Remove uses of VARs in extended_value
The DECLARE_(ANON_)INHERITED_CLASS(_DELAYED) opcodes were
referencing the parent ce VAR through extended_value. This is
hacky and we can't track the def-use chain in SSA.

To avoid this, the layout of declaration opcodes is changed
as follows: op1 points to the lcname and rtd_key literals, in
that order. (For anon/lambda declarations only one of lcname or
rtd_key is present.) This frees up op2, which is now used to
reference the parent ce VAR in inheriting declarations. The
jmp offset for anon class declarations is moved frop op2 to
extended_value.

The changes were applied both to class and function declarations
to keep everything symmetric.
2015-12-21 14:44:42 +01:00
Andrea Faulds
5d0dfda60c Merge branch 'PHP-7.0' 2015-12-19 02:35:19 +00:00
Andrea Faulds
42c8f5e91d Fix bug #70804
This follows on from a4648ded43 and
4e01269082.
Both -(+0.0) and +(-0.0) behaved incorrectly for the same reason.
2015-12-19 02:25:44 +00:00
Andrea Faulds
8d355bff85 Merge branch 'PHP-7.0' 2015-12-17 22:40:55 +00:00
Andrea Faulds
a4648ded43 Fix bug #52355 2015-12-17 22:39:29 +00:00
Nikita Popov
56f1106162 Use FETCH_CLASS_EXCEPTION for instanceof
This does not collide with NO_AUTOLOAD -- missing classes will be
silenced, but invalid use of self etc will result in an exception
instead of a fatal error.
2015-12-14 17:50:20 +01:00
Nikita Popov
0919178963 Add result op for ASSERT_CHECK to fix SSA
Otherwise one source of the phi node at the join point will be
borked.

I'm marking the ASSERT_CHECK result as unused in pass2, which is
a bit ugly.
2015-12-14 12:31:00 +01:00
Xinchen Hui
0d8f5a43d3 Merge branch 'PHP-7.0'
Conflicts:
	NEWS
2015-12-11 09:13:26 -08:00
Xinchen Hui
778e5f3da5 Fixed bug #71092 (Segmentation fault with return type hinting) 2015-12-11 09:11:28 -08:00
Nikita Popov
591fe26d5d Remove BP_VAR_REF
The distinction between BP_VAR_REF and BP_VAR_W is no longer
revelant, since we dropped support for =& new.
2015-12-11 15:56:52 +01:00
Nikita Popov
04e3d82b55 Make duplicate class constant error for internal class
And drop two duplicate constant declarations from intl. These
were leaking previously.
2015-12-10 22:22:49 +01:00
Nikita Popov
8e5e3301a1 Make ZEND_CLONE return a TMP_VAR
As the return value can't be reference and it's unlikely to be
unused.

Also remove some unnecessary checks for ce==NULL. A ce is required
nowadays.
2015-12-10 22:16:25 +01:00
Nikita Popov
f1278edefc Drop two compiler TODOs
Call-time pass by reference is now a parse error.
There is no benefit in dropping implementing_class currently.
2015-12-10 19:04:59 +01:00
Nikita Popov
c8a64e289c Reintroduce use of FETCH_GLOBAL_LOCK
Just found this old AST todo...

It no longer makes sense as an optimization due to the introduction
of BIND_GLOBAL, however it ensures that the global variable name is
not evaluated twice, which is presumably something we wish to
guarantee.
2015-12-10 19:04:59 +01:00
Nikita Popov
3fa86105f7 Remove FETCH_STATIC_MEMBER flag 2015-12-10 18:25:29 +01:00
Nikita Popov
3d4a2d2002 Merge branch 'PHP-7.0'
Conflicts:
	Zend/zend_vm_def.h
	Zend/zend_vm_execute.h
2015-12-10 18:24:29 +01:00
Nikita Popov
37f3425263 Fix Foo::${42} and similar
Fixes segfault on direct use, segfault on opcache evaluated use,
leak on temporary use.

Fixes analogeous segfault for ${42} on opcache eval as well.
2015-12-10 18:14:40 +01:00
Dmitry Stogov
5ee7b7d01a Don't create live-range across NOPs and some other instructions 2015-12-09 05:15:58 +03:00
Dmitry Stogov
c1803bf652 Avoid construction of empty live-ranges because of OP_DATA instruction 2015-12-08 18:10:07 +03:00
Dmitry Stogov
a75c195000 Implemented the RFC Support Class Constant Visibility.
Squashed commit of the following:

commit f11ca0e7a5
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Dec 8 12:38:42 2015 +0300

    Fixed test expectation

commit 211f873f54
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Tue Dec 8 12:28:38 2015 +0300

    Embed zend_class_constant.flags into zend_class_constants.value.u2.access_flags

commit 51deab84b2
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Mon Dec 7 11:18:55 2015 +0300

    Fixed issues found by Nikita

commit 544dbd5b47
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Sat Dec 5 02:41:05 2015 +0300

    Refactored immplementation of https://wiki.php.net/rfc/class_const_visibility
    @reeze created an RFC here and I emailed internals here and didn't get any responses positive/negative.
2015-12-08 12:40:42 +03:00
Xinchen Hui
5c707a6cf8 Merge branch 'PHP-7.0' 2015-11-28 23:44:06 -08:00
Xinchen Hui
1f65006fce Fixed bug #70931 (Two errors messages are in conflict) 2015-11-28 23:43:41 -08:00
Nikita Popov
95283a0504 Merge branch 'PHP-7.0' 2015-11-26 16:57:11 +01:00
Nikita Popov
99dd7ee80b Forbid namespace\int type hint as well 2015-11-26 16:56:08 +01:00
Xinchen Hui
06bcaf98c5 Merge branch 'PHP-7.0' 2015-11-25 19:11:40 +08:00
Xinchen Hui
3cdbe347ae Always lower name 2015-11-25 19:11:22 +08:00
Xinchen Hui
05738eb71a Revert "Improved fix for Fully qualified (leading backslash) type names must fail"
This reverts commit 00865ae22f.
2015-11-25 19:06:42 +08:00
Xinchen Hui
c6b08e99fe Merge branch 'PHP-7.0' 2015-11-25 11:41:01 +08:00
Xinchen Hui
00865ae22f Improved fix for Fully qualified (leading backslash) type names must fail
it now all fails with COMPILE_ERROR instead of syntax error for T_ARRAY
but COMPILE_ERROR for int
2015-11-25 11:27:32 +08:00
Bob Weinand
569763cb1a Fix scalar type names with leading backslash 2015-11-24 21:39:06 +01:00
Xinchen Hui
42252f409b Merge branch 'PHP-7.0' 2015-11-23 18:33:21 +08:00
Xinchen Hui
51ccc88b87 Port fix to 7.0 2015-11-23 18:31:56 +08:00
Dmitry Stogov
84610b1f39 Don't keep wrong jump target in last CATCH. 2015-11-19 00:47:08 +03:00
Andrea Faulds
366ba41334 Add void return type 2015-11-18 17:30:49 +00:00
Xinchen Hui
36d25a287b Merge branch 'PHP-7.0' 2015-11-13 21:25:06 +08:00
Xinchen Hui
25de928df7 Fixed bug #70912 (Null ptr dereference instantiating class with invalid array property) 2015-11-13 21:24:42 +08:00
Dmitry Stogov
3a5fa926bf Squashed commit of the following:
commit afe963e6cc289696e60c6c679796ba2197c52b3b
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Nov 13 15:32:29 2015 +0300

    Added news entry

commit a126b891c97848dd7ef8f1abf716328c46e0f19c
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Fri Nov 13 15:29:21 2015 +0300

    VERIFY_RETURN_TYPE doesn't have to cleanup operand on exception, bacause now, live temporary variables are released by exception unwinder.

commit 0db475e98786e6bcaa8401ee3e0b33743b9a2f2b
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Thu Nov 12 22:55:39 2015 +0300

    Fixed copy/paste

commit 0ac73fe7174bec9de9a610319a98b259bea67f7f
Author: Dmitry Stogov <dmitry@zend.com>
Date:   Wed Nov 11 16:11:50 2015 +0300

    Fixed bug #62210 (Exceptions can leak temporary variables)
2015-11-13 15:35:07 +03:00
Dmitry Stogov
998204ef2d Separate common part of compile_file() and compile_string() into zend_compile() 2015-11-12 16:59:44 +03:00
Dmitry Stogov
948b7f5421 Changed ZEND_FREE.op2.num and ZEND_FE_FREE.op2.num back to use live_range_offset (try_catch_offset does't work) 2015-11-11 11:12:44 +03:00
Dmitry Stogov
baf97b1fcc We don't nees zend_op_array->brk_cont_array at run-time anymore.
Move zend_op_array->brk_cont_array into CG(context).brk_cont_array.
Use more compact zend_op_array->live_range instead of zend_op_array->brk_cont_array.
Semantic is kept unchanged.
2015-11-10 21:48:03 +03:00
Dmitry Stogov
71092b7c2b Make FE_FETCH and following assignments to be a part of a loop. 2015-11-10 20:11:05 +03:00