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
Dmitry Stogov
86a96f2cf1
Changed meaning of "op2" for ZEND_FREE, ZEND_FE_FREE, ZEND_FAST_CALL, ZEND_FAST_RET.
...
Previously it was an instruction number.
Now it's an index in op_array->try_cacth_array[].
2015-11-10 19:13:54 +03:00
Andrea Faulds
7bc6361294
Merge branch 'PHP-7.0'
2015-11-09 23:42:12 +00:00
Andrea Faulds
dae37661d9
Use ZEND_STRL macro for builtin_types
2015-11-09 11:15:58 +00:00
Dmitry Stogov
b009f84ec0
Removed incorrect "return" statement
2015-10-28 21:26:52 +03:00
Dmitry Stogov
eb7be5379d
Speed up fetching of class entries for self:: parent:: and static::
...
This is generalized solution for Bob's idea of speed up self::method() calls without ZEND_FETCH_CLASS.
At first, it adds few new opcodes to separate class related behaviour:
FETCH_STATIC_PROP_R
FETCH_STATIC_PROP_W
FETCH_STATIC_PROP_RW
FETCH_STATIC_PROP_FUNC_ARG
FETCH_STATIC_PROP_UNSET
FETCH_STATIC_PROP_IS
UNSET_STATIC_PROP
ISSET_ISEMPTY_STATIC_PROP
FETCH_CLASS_CONSTANT
At seconds, it enables IS_UNUSED operand to fetch (self, parent or static without separate FETCH_CLASS) for new opcodes and the following ones:
INIT_STATIC_METHOD_CALL
NEW
END_INSTANCEOF
Finaly, opcache optimizer had to be fixed to support new opcodes.
2015-10-28 21:26:52 +03:00
Nikita Popov
36cd300693
Merge branch 'PHP-7.0'
2015-10-24 23:19:36 +02:00
Nikita Popov
b9cc3176eb
Fix bug #70782
2015-10-24 23:19:02 +02:00
Levi Morrison
43a4336820
Refactor zend_mark_function_as_generator
2015-10-19 06:57:21 -07:00
Márcio Almada
ddb6d7801e
Fix bug #70650
2015-10-07 16:25:59 +02:00
Dmitry Stogov
e0b3b3c752
Revert "Fixed bug #70630 (Closure::call/bind() crash with ReflectionFunction->getClosure())"
...
This reverts commit 517b553625
.
2015-10-06 23:59:36 +03:00
Dmitry Stogov
3c0348056a
Revert "Speed up self::method() calls (no ZEND_FETCH_CLASS)"
...
This reverts commit 8c33bdb976
.
2015-10-06 23:48:08 +03:00
Dmitry Stogov
5a49ac77aa
Revert "Speed up self::$property access by 20%"
...
This reverts commit 0fbd3e5fe7
.
2015-10-06 23:48:04 +03:00
Bob Weinand
0fbd3e5fe7
Speed up self::$property access by 20%
2015-10-05 21:52:09 +02:00
Bob Weinand
8c33bdb976
Speed up self::method() calls (no ZEND_FETCH_CLASS)
2015-10-05 21:16:52 +02:00
Bob Weinand
517b553625
Fixed bug #70630 (Closure::call/bind() crash with ReflectionFunction->getClosure())
...
This additionally removes support for binding to an unknown (not in parent hierarchy) scope.
Removing support for cross-scope is necessary for certain compile-time assumptions (like class constants) to prevent unexpected results
2015-10-04 01:38:59 +02:00
Bob Weinand
6c61286da4
Do not include zend_verify_return_type in executable ops (phpdbg)
2015-10-02 12:37:39 +02:00
Xinchen Hui
45cb42f49f
Simply use 0/1 instead as dmitry suggested
2015-09-30 10:41:27 +08:00
Xinchen Hui
df2ff75116
Make ZEND_ECHO and removed ZEND_PRINT distinguishable
2015-09-29 21:50:15 +08:00
Anatol Belski
29bf529d88
fix warning
2015-09-24 16:33:53 +02:00
Joe Watkins
1a5d6acff6
ZEND_COMPILE_GUARDS compiler option
2015-09-23 15:33:57 +02:00
Xinchen Hui
4ddeeb49a5
Remove free_string_zval
2015-09-11 10:58:24 +08:00
Joe Watkins
784dd715e4
Fix mangled property names on anon classes
2015-08-18 16:37:38 +01:00
Bob Weinand
34834c58fa
Fixed bug #70293 (Crash with specific assertions and zend.assertions=-1)
2015-08-18 15:01:24 +02:00
Xinchen Hui
121409865b
use efree_size here
2015-08-12 11:15:09 +08:00
Bob Weinand
dbd8edbbd0
Fixed bug #70241 (Skipped assertions affect Generator returns)
2015-08-11 22:12:06 +02:00
Steven Hilder
7ecb761818
Allow property names from anonymous classes to be unmangled
2015-08-06 15:18:14 +00:00
Dmitry Stogov
58596897e9
Get rid of ZEND_FAST_CALL_UNBOUND
2015-08-04 08:35:40 +03:00
Dmitry Stogov
a16aa4c42c
Move most "finally" related code-generation from pass_two() to compiler.
2015-08-04 07:42:28 +03:00
Nikita Popov
743801054d
Try to fix finally issue
2015-08-04 07:42:28 +03:00
Hugh Davenport
2a1a8f9ea7
Fixed bug #70183 null pointer deref (segfault) in zend_eval_const_expr
2015-08-02 16:51:23 +02:00
Bob Weinand
ac87657d42
Implicit return should be always on the last line of a function
2015-07-31 02:44:42 +02:00
Bob Weinand
d45d5271f7
Fix bug #70164 (__COMPILER_HALT_OFFSET__ under namespace is not defined)
2015-07-29 19:18:29 +02:00
Julien Pauli
a28115ccdb
Fix for #70159 - Better magic constants substitution
2015-07-28 16:30:08 +02:00
Bob Weinand
33a91f57e9
Set CG(zend_lineno) to beginning for final class errors/ops
2015-07-28 00:57:49 +02:00
Bob Weinand
7ca85d8875
Fully fix typed generator returns
2015-07-24 22:04:05 +02:00
Nikita Popov
cff6cbc01f
Emit EXT_STMT for each statement
...
I'm excluding unticked statements for this (in 5.x they were included)
as this would just result in two consecutive EXT_STMTs.
Also add all class statements to unticked statements, these would
generate superfluous EXT_STMT/TICKS in the parent op_array.
2015-07-22 13:38:42 +02:00
Bob Weinand
2141ab9be5
Fix bug #70106 (Inheritance by anonymous class)
2015-07-21 20:34:06 +02:00
Bob Weinand
81a2c43d5e
Add an option to not generate INIT_FCALL ops for user functions too
2015-07-21 16:39:49 +02:00
Nikita Popov
c568ffe517
Ignore getcwd return in zend_compile
...
To do this move the php_ignore_value macro to ZEND_IGNORE_VALUE.
2015-07-16 22:48:56 +02:00
Xinchen Hui
4064ee3061
Fixed bug #70240 (Segfault when doing unset($var());)
2015-08-11 21:42:11 +08:00
Xinchen Hui
87a5f2c486
Fixed no return statement in function returning non-void
2015-08-10 21:48:17 +08:00
Bob Weinand
1003d01f3a
Fix __METHOD__ in functions nested into methods
2015-07-14 02:37:35 +02:00
Xinchen Hui
e63c756c09
Better implementation
2015-07-11 18:59:09 +08:00
Bob Weinand
0584df0ad9
hmm, we do not need the nop after compilation, so does not matter for opcache...
2015-07-10 23:35:05 +02:00
Bob Weinand
56800e470b
a: try { ... } ≠ try { a: ... }
2015-07-10 23:29:07 +02:00
Dmitry Stogov
ef1b588f6a
Resolve GOTO at compile time and replace it with sequnce of FREE/FE_FREE and JMP.
2015-07-10 04:44:21 +03:00
Dmitry Stogov
44f7348caa
Exception thrown by "return" statement (from TMP destructors) shouldn't be caught in the same function
2015-07-10 04:13:34 +03:00
Dmitry Stogov
549e8c4959
Squashed commit of the following:
...
commit 03cf871f1576f08b2348c141b209894a7bf17a86
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:31 2015 +0300
Revert "Fixed bug #62210 (Exceptions can leak temporary variables. As a part of the fix serious refactoring was done. op_array->brk_cont_array was removed, and replaced with more general and speed efficient op_array->T_liveliness. ZEND_GOTO opcode is always replaced by ZEND_JMP at compile time). (Bob, Dmitry, Laruence)"
This reverts commit 5ee8413259
.
commit 285a68227ce3d380e821a24fa389aa5239bd3fe1
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:26 2015 +0300
Revert "Tuned off dubugging of live ranges"
This reverts commit 404dc93d35
.
commit 93d9d11157301ee2ec99afb6f5744b126d17f637
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:17 2015 +0300
Revert "Remove loop_var_stack"
This reverts commit b3a4c05071
.
commit ede68ebbc284aec79e3f719f2c8dbf9da6907752
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:12 2015 +0300
Revert "ZEND_SEPARATE reuses temporaries"
This reverts commit 1852f538b9
.
commit 96d8995dc1f517fb01b481736273767509f76c47
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:10 2015 +0300
Revert "Add assertion in liveliness computation"
This reverts commit ed14019e8c
.
commit 0649d7bfef152e6cc8e67b922534e9946c634d9c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:07 2015 +0300
Revert "Fixed invalid live-range detection"
This reverts commit 54f367ee2a
.
commit dfe8f3851f6b04595eb089323e3492115a59363e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:04 2015 +0300
Revert "Add test guaranteeing that loop vars are only freed after potential return type exceptions"
This reverts commit f5db5a558d
.
commit 52a94aad6f48a199358cc07f7e4f56bb73050504
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:45:01 2015 +0300
Revert "Fixed exception habdling on "return" statement."
This reverts commit 17c5315bdf
.
commit 6e90ad7331901711e89c2ceb2bcab5023e5cee60
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:44:58 2015 +0300
Revert "Fix too early terminated temporary range with break/cont/goto"
This reverts commit cc876c04b4
.
commit 7b766e44b1970e4031f75109c302c07ead2c05cb
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 10 02:44:55 2015 +0300
Revert "Fixed exception catching on break/continue"
This reverts commit 8c3f701eeb
.
2015-07-10 03:31:52 +03:00
Nikita Popov
a49ce7bb91
Don't return T_ERROR from token_get_all()
...
This turned out to be rather inconvenient after all. Instead just
return the same output we did on PHP 5. If people want to have an
error, use TOKEN_PARSE.
2015-07-09 23:02:21 +02:00
Dmitry Stogov
8c3f701eeb
Fixed exception catching on break/continue
...
Fixed "finaly" handling on exception in "return" statement
2015-07-09 23:20:50 +03:00
Bob Weinand
cc876c04b4
Fix too early terminated temporary range with break/cont/goto
...
I have no crashing or leaking reproduce script, only valgrind invalid reads for that one; hence no phpt here
2015-07-09 20:07:57 +02:00
Dmitry Stogov
54f367ee2a
Fixed invalid live-range detection
2015-07-09 17:38:29 +03:00
Dmitry Stogov
301ee26568
Fixed situation, when CHECH_EXCEPTION() might change value of "opline" variable and the following "opline" useages would access elements of different opcode. That might lead to unpredictable behavior. (Only PHP-7 with GCC global register variables was affected).
...
CHECK_EXCEPTION() macro is removed. ZEND_VM_NEXT_OPCODE_CHECK_EXCEPTIO() should be used instead. It's equivalent to old CHECK_EXCEPTION() + ZEND_VM_NEXT_OPCODE().
As a side effect, this also slightly improved performnce of builds with GCC >= 4.8.
2015-07-08 18:33:58 +03:00
Nikita Popov
b3a4c05071
Remove loop_var_stack
...
Instead add a loop_var member to brk_cont_element. Now that
brk_cont is compile-time the distinction is no longer necessary.
Also drops brk_cont.start, check the loop_var op_type instead.
2015-07-07 20:55:12 +02:00
Kalle Sommer Nielsen
fe842a8510
fix C89 compat
2015-07-07 18:26:14 +02:00
Julien Pauli
dfb0c6363f
Merge branch 'PHP-5.6'
...
* PHP-5.6:
Fixed double ZEND_TICKS opcode generation for declare()
Conflicts:
Zend/zend_compile.c
2015-07-07 15:03:58 +02:00
Julien Pauli
c22da81b71
Fixed double ZEND_TICKS opcode generation for declare()
2015-07-07 14:56:05 +02:00
Dmitry Stogov
5ee8413259
Fixed bug #62210 (Exceptions can leak temporary variables. As a part of the fix serious refactoring was done. op_array->brk_cont_array was removed, and replaced with more general and speed efficient op_array->T_liveliness. ZEND_GOTO opcode is always replaced by ZEND_JMP at compile time). (Bob, Dmitry, Laruence)
...
Squashed commit of the following:
commit 38e22106d4
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 15:12:19 2015 +0300
Added NEWS entry
commit 0a355935bf
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 15:06:32 2015 +0300
Inline function, to eliminate repeatable checks
commit d937584f3a
Merge: 0341626
32677f5
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 14:35:49 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Fixed bug #70006 (cli - function with default arg = STDOUT crash output).
Fix x86 build
Fixed use after free on closure_call_leak_with_exception.phpt
Fixed test
commit 0341626ea9
Merge: 74869fa
dec35de
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 12:00:53 2015 +0300
Merge branch 'temporary_cleaning' of https://github.com/laruence/php-src into temporary_cleaning
* 'temporary_cleaning' of https://github.com/laruence/php-src :
Fixed checkpoint get
Fixed crash of invalid pointer derefer
cleanup
commit 74869fa673
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 11:45:34 2015 +0300
Fixed wrong GOTO resolution
commit dec35ded32
Author: Xinchen Hui <laruence@gmail.com>
Date: Tue Jul 7 15:58:49 2015 +0800
Fixed checkpoint get
commit b0f419540a
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 10:47:11 2015 +0300
Fixed crash of invalid pointer derefer (laruence)
commit 7a428d98ca
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 10:35:47 2015 +0300
Fixed identation
commit 9c3a4dce9c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 10:33:52 2015 +0300
Fixed invalid size
commit 653abc670b
Author: Xinchen Hui <laruence@gmail.com>
Date: Tue Jul 7 11:29:14 2015 +0800
Fixed crash of invalid pointer derefer
commit e04500ceda
Author: Xinchen Hui <laruence@gmail.com>
Date: Tue Jul 7 11:28:26 2015 +0800
cleanup
commit 34183e1687
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:49:46 2015 +0300
op_array->T_liveliness compression
commit 2f6ad84579
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:44:44 2015 +0300
White spaces
commit be83f115a3
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:42:26 2015 +0300
Identation
commit 1f5084b990
Merge: 91b620d
1adf3df
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:41:54 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Throw TypeError for invalid callback
Fix crash when exception occurs during nested rope
Fix crash when exception is thrown during ROPE_END
Small cleanup in ternary compilation
move the define to the right place
fix ext/ldap build
Rectify information about invalid shift warning being now ArithmeticError
commit 91b620d684
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:32:04 2015 +0300
Replace GOTO by FREE/FE_FREE and JMP at compile time
commit 7052e56979
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 02:25:08 2015 +0300
Use zend_regenerate_var_liveliness_info() to regenerate information after pass two.
commit ae72b0dc67
Merge: a81c4bb
a919fe8
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 21:02:34 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Do not display EXT_TYPE_UNUSED in phpdbg opcodes
Run debug build with opcache on travis
commit a81c4bb8c6
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 20:59:34 2015 +0300
Improved algorithm. It's actually the same algorithm with second loop removed and simpler temporary data structures. The only difference may be in "re-defined" vatriable handling. Now live-range in that case started from the seconnd definition (this must be more safe).
commit 9a16810f7a
Merge: bbfbe47
001ecd3
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 17:57:45 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Simplify TMP var number decoding (without HashTable)
commit bbfbe470c8
Merge: 0bda4ab
436b01e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 17:02:01 2015 +0300
Merge branch 'master' into temporary_cleaning
* master:
Avoid dangerous optimization
Fixed JMPZNZ instruction printing
Attempt at falling back on ldap_find_control for Mac OS
commit 0bda4abea7
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 16:05:33 2015 +0300
Fixed live-range construction for OP_DATA opcode
Added comments about algorithm assumtions
commit 521ad9df98
Merge: 4398dab
a09dcb0
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Mon Jul 6 14:54:15 2015 +0200
Merge branch 'master' of https://github.com/php/php-src into temporary_cleaning
commit 4398dab82f
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Mon Jul 6 13:51:27 2015 +0200
Add a few phpt tests related to temporary cleaning
commit 739656f83f
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 14:28:49 2015 +0300
Fixed Zend/tests/foreach_004.phpt failure (FE_FETCH shouldn't be included into TMP vatriablr live range)
commit 3df462a2bc
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 13:41:02 2015 +0300
Improve data layout (reduce the op_array structure size on 64-bit systems)
commit 883b73c56e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 13:28:45 2015 +0300
Removed op_array->brk_cont_array
commit ae5e58b598
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Mon Jul 6 04:22:58 2015 +0200
Fix bug with brk_cont variable free / free loop vars via temporary liveliness info
commit b4223ca627
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Mon Jul 6 04:07:07 2015 +0200
Fix bugs / cleanup fixes
commit ea33189d22
Author: Xinchen Hui <laruence@gmail.com>
Date: Sun Jul 5 20:58:38 2015 +0800
Removed useless TsTop
commit 1dbb007e4a
Merge: 550bbf8
3a8af24
Author: Xinchen Hui <laruence@gmail.com>
Date: Sat Jul 4 15:06:44 2015 +0800
Merge branch 'temporary_cleaning' of https://github.com/dstogov/php-src into temporary_cleaning
commit 3a8af24529
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 3 16:15:36 2015 +0300
More exceptions from regular liveliness analyses (with explanation in comments).
Mark old "unexplained" exceptions with ???.
commit ba721efa2c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 3 14:16:09 2015 +0300
Print list of live temp variables (at least for internal debugging)
commit 8d1f88fe91
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 3 13:31:56 2015 +0300
Use op_array->T_liveliness to free incomplete ropes and restore error_reporting level on exception
commit 80c1d0d779
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 3 11:05:39 2015 +0300
Don't keep empty T_liveliness
commit 501ae8aaac
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 2 22:31:48 2015 +0300
Reverted changes to Zend/zend_arena.h.
Reuse CG(arena) instead of creating a new one.
commit a4fce36907
Merge: 6ff7246
fd0fcce
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jul 2 22:01:42 2015 +0300
Merge branch 'temporary_cleaning' of github.com:bwoebi/php-src into temporary_cleaning
* 'temporary_cleaning' of github.com:bwoebi/php-src:
Fix remaining issues with compacted temporaries
Fix regression from last commit (+1 ?!)
Fix off-by-one (opcache may remove last ZEND_RETURN)
Speed algorithm up, more fail safety when reusing temporaries
Dumb bug in opcode.c (forgot to update Ts[i])
Fix opcache support
Exempt ROPE temporaries from freeing
Hmm, we need temporary info for all the opcodes
Add opcache support for cleaning in optimization step (Opcache seems to have a few unrelated issues which blow up together with that patch)
Add proper temporary cleaning upon frame abortion
Fix arena on small sizes (size < sizeof(zend_arena))
commit fd0fcce811
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Thu Jul 2 20:00:33 2015 +0200
Fix remaining issues with compacted temporaries
commit 427dc58bbb
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 22:49:12 2015 +0200
Fix regression from last commit (+1 ?!)
commit 1adcf56a6e
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 22:17:07 2015 +0200
Fix off-by-one (opcache may remove last ZEND_RETURN)
commit 25b231b784
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 20:59:24 2015 +0200
Speed algorithm up, more fail safety when reusing temporaries
commit 22d9d05350
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 16:48:46 2015 +0200
Dumb bug in opcode.c (forgot to update Ts[i])
commit 6538269bfa
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 13:05:52 2015 +0200
Fix opcache support
commit 333a7c4a88
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Sat Jun 27 22:40:21 2015 +0200
Exempt ROPE temporaries from freeing
commit 02585f7708
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Fri Jun 26 16:20:55 2015 +0200
Hmm, we need temporary info for all the opcodes
commit cbcaedbd78
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Fri Jun 26 01:04:09 2015 +0200
Add opcache support for cleaning in optimization step
(Opcache seems to have a few unrelated issues which blow up together with that patch)
commit fef649f406
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Fri Jun 26 01:02:27 2015 +0200
Add proper temporary cleaning upon frame abortion
commit 1cec2e7271
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Thu Jun 25 23:33:21 2015 +0200
Fix arena on small sizes (size < sizeof(zend_arena))
2015-07-07 15:41:12 +03:00
Nikita Popov
f3498783df
Small cleanup in ternary compilation
2015-07-06 20:15:45 +02:00
Anatol Belski
a97f764472
bring back the division by zero warning
2015-07-05 20:18:17 +02:00
Bob Weinand
56b6e0dd14
Fix use after free with opcache (interned strings)
2015-07-05 02:00:52 +02:00
Kalle Sommer Nielsen
ce2cd89258
Replace references to PHP_WIN32 and TSRM_WIN32 with ZEND_WIN32 in Zend/, this also fixes 1 instance of where fflush(stderr) was misplaced (zend_extensions.c)
2015-07-04 18:55:22 +02:00
Aaron Piotrowski
68baa539dc
Allow integer default for float type
2015-07-02 18:07:24 -05:00
Bob Weinand
06fcf94c45
CT eval ZEND_DIV in all cases (warning was removed)
2015-07-02 02:20:58 +02:00
Dmitry Stogov
7aa7627172
Use ZSTR_ API to access zend_string elements (this is just renaming without semantick changes).
2015-06-30 13:59:27 +03:00
Dmitry Stogov
4bd22cf1c1
Improved zend_string API (Francois Laupretre)
...
Squashed commit of the following:
commit d96eab8d79
Author: Francois Laupretre <francois@tekwire.net>
Date: Fri Jun 26 01:23:31 2015 +0200
Use the new 'ZSTR' macros in the rest of the code.
Does not change anything to the generated code (thanks to compat macros) but cleaner.
commit b352643910
Author: Francois Laupretre <francois@tekwire.net>
Date: Thu Jun 25 13:45:06 2015 +0200
Improve zend_string API
Add missing methods
2015-06-29 16:44:54 +03:00
Dmitry Stogov
642c379092
Prevent attempts of compile-time evaluation of invalid operators (e.g. division/modulo by zero and shift by negative number)
2015-06-29 12:58:07 +03:00
Dmitry Stogov
1bba4452e7
Reverted wrong fb08798c9f
2015-06-29 12:20:09 +03:00
Xinchen Hui
5ba28d76d2
Fixed segfault in wordpress (introduced in rev 4a4529adb0
)
2015-06-29 15:13:09 +08:00
Bob Weinand
fb08798c9f
Fix bug #69957 (Different ways of handling div/mod by zero)
2015-06-28 18:22:59 +02:00
Bob Weinand
4a4529adb0
Fix rope memory leaks upon exception
2015-06-28 15:42:15 +02:00
Bob Weinand
2894bc5bb8
Use ZEND_INIT_STATIC_METHOD_CALL for literals of form "classname::method"
2015-06-26 19:55:13 +02:00
Xinchen Hui
307c734bed
Better way to fix (Fix bug #69871 (short-circuiting failure with smart_branch))
2015-06-19 23:05:35 +08:00
Xinchen Hui
509d75527a
Fixed Conditional jump or move depends on uninitialised value(s)
...
reproduced by Bug #69868 's test script
2015-06-18 19:56:50 +08:00
Xinchen Hui
c58c5e779a
Fixed bug #69868 (Invalid read of size 1 in zend_compile_short_circuiting)
2015-06-18 19:53:26 +08:00
Dmitry Stogov
a524a375d9
Improved class type hints checks, by caching resolved class entries in run-time cache.
2015-06-17 12:07:43 +03:00
Nikita Popov
4448843b7c
Move check for CT div by zero into common function
2015-06-16 18:09:59 +02:00
Bob Weinand
52e9a772a3
Fully fixing all the affected const expr cases (see bug #69832 )
2015-06-16 16:53:30 +02:00
Bob Weinand
9db81340ba
Fix bug #69832 (Assertion failure)
2015-06-15 17:43:09 +02:00
Bob Weinand
37c91b8d03
Fix off by one in short_circuiting optimization
2015-06-14 17:47:35 +02:00
Xinchen Hui
f1ae57f155
Simplify the condition
2015-06-14 22:56:06 +08:00
Bob Weinand
7221bd682f
Revert "Revert "Expand optimizations regarding short-circuting a bit""
...
This reverts commit 3770a5ac66
.
Fixes the bug which probably made make install fail on travis
(It never happened to me that all tests passed, but make install failed...)
2015-06-14 15:46:11 +02:00
Xinchen Hui
3770a5ac66
Revert "Expand optimizations regarding short-circuting a bit"
...
This break the CI (build error)
This reverts commit 3cfa58367b
.
2015-06-14 14:27:48 +08:00
Bob Weinand
3cfa58367b
Expand optimizations regarding short-circuting a bit
2015-06-14 06:01:01 +02:00
Bob Weinand
f263932f38
Fix short-circuting (bug #69825 )
2015-06-14 02:00:55 +02:00
Xinchen Hui
20d85e4f02
typo
2015-06-13 10:56:30 +08:00
Xinchen Hui
829c7a1bb0
Merge branch 'master' of git.php.net:php-src
2015-06-13 10:51:15 +08:00
Xinchen Hui
d96dda8d49
Fixed Bug #69761 (Serialization of anonymous classes should be prevented)
...
And also cleanup anonymous class compiling, it make no sense prefix a
namespace to anonymous class name. and it is always lowcased and
interned string.
2015-06-13 10:49:20 +08:00
Bob Weinand
7c2a0157c7
Cache the class_name typehint key in arg_info
...
This leads to up to 2% improvement on one tested real world application by not having to always recalculate the lowercased string and its hash
2015-06-12 17:26:53 +02:00
Xinchen Hui
49a8f801c7
Fixed bug #69805 (null ptr deref and seg fault in zend_resolve_class_name)
2015-06-12 21:07:23 +08:00
Dmitry Stogov
be988aba36
Compile-time constant folding
2015-06-11 01:57:37 +03:00
Xinchen Hui
cea801cce2
Fixed bug #69767 (Default parameter value with wrong type segfaults)
2015-06-08 11:47:22 +08:00
Dmitry Stogov
adb5f93f85
Fixed bug #69755 (segfault in ZEND_CONCAT_SPEC_TMPVAR_CONST_HANDLER)
2015-06-04 09:38:22 +03:00
Bob Weinand
1d3f77d13d
Fix Bug #69754 (Compile failure with ::class in array)
2015-06-03 23:59:59 +02:00
Nikita Popov
402f697068
Remove zend_init_list
...
No longer used - zend_add_to_list already covers this.
Also marked zend_add_to_list as static and dropped it from the header.
2015-05-29 11:07:51 +02:00
Nikita Popov
21a29b4be3
Drop unnecessary checks for op_array->filename
...
We always require a filename.
2015-05-29 11:07:51 +02:00
Xinchen Hui
770a462943
implicit declaration of function ‘zend_multibyte_yyinput_again’
2015-05-26 10:36:52 +08:00
Bob Weinand
69b54ba926
Also unreserve T_CLASS
2015-05-25 22:58:30 +02:00
Bob Weinand
306a0f28d0
Merge branch 'master' of https://github.com/php/php-src
2015-05-25 19:00:53 +02:00
Dmitry Stogov
03f41f9b4d
Prevent op_array->this_var setting when method uses auto globals
2015-05-25 19:59:25 +03:00
Bob Weinand
886cbea94f
Merge context sensitive lexer RFC
2015-05-25 18:38:40 +02:00
Levi Morrison
e13803d15b
Inline zend_find_builtin_type
...
This function was used only inside of zend_find_builtin_type_by_name,
which is also used only one time.
2015-05-23 11:12:13 +02:00
Levi Morrison
e22ceb6e82
Remove duplication
2015-05-23 11:12:13 +02:00
Levi Morrison
339283c523
Rename some variables and functions
...
The way these are used have little to do with them being scalars;
they are just tuples with names, lengths and IS_* constants. We
will probably reuse these in the future with other types.
2015-05-23 11:12:12 +02:00
Nikita Popov
7a88d16cf3
Use ZEND_JMP instead of ZEND_BRK/ZEND_CONT
...
Emit necessary FREEs during compilation, convert to JMP during
pass_two (we may not know target opline beforehand).
2015-05-23 10:51:33 +02:00
Nikita Popov
9325ada725
Embed break/continue depth into opline
...
Previously a separate lval literal was used - this is probably a
leftover from the time where the break level could still be
specified dynamically.
2015-05-23 10:51:33 +02:00
Nikita Popov
3cbe3903fa
Move loop var stack management into begin/end loop
...
Also set start to -1 in begin_loop already, so the info that a
loop variable is not used is already available at compile-time.
2015-05-23 10:51:33 +02:00
Nikita Popov
d0e265392f
Drop FREE_ON_RETURN flag, check brk_cont->start instead
...
Start >= 0 already tells us whether or not the loop has a loop
variable, no need to add extra flags to opcodes.
Also added a test for a case where FREE_ON_RETURN is relevant,
we didn't seem to have any coverage for this.
2015-05-23 10:51:33 +02:00
Nikita Popov
3dba00bc31
Fix scope_is_known() for class constants
...
Here the active_op_array is still the surrounding file, but we
do know the scope.
2015-05-21 21:07:05 +02:00
Dmitry Stogov
d72a94468e
Merged FE_FETCH_R[W] with the following ASSIGN[_REF] when assigne to CV.
2015-05-13 12:55:42 +03:00
Nikita Popov
6ef8ae65a2
Allow self etc in eval / file scope
...
This fixes a regression from 16a9bc1ec2
.
Together with the recent closure related changes this should allow
all usages of self etc, while previously (in PHP 5) some things like
self::class did not work.
2015-05-07 15:38:16 +02:00
Nikita Popov
ab97606b8a
Fix compiler assumptions about self/etc wrt closures
...
* Don't throw an error if self/parent/static are used in a closure
(outside a class).
* Don't propagate self:: constants into closures
* Use runtime fetch for self::class in closures
Fixes bug #66811 .
2015-05-06 18:13:19 +02:00
Nikita Popov
dd1fdfb17c
Use ZEND_FETCH_CLASS_NAME for dynamic self::class etc
...
Extend the opcode to support getting the parent and static name and
then use it for dynamic ::class resolution.
2015-05-05 21:14:03 +02:00
John Boehr
56fdae9018
Fix uninitialized value with extension traits
2015-05-04 10:33:26 +08:00
Márcio Almada
110759386e
ext tokenizer port + cleanup unused lexer states
...
we basically added a mechanism to store the token stream during parsing
and exposed the entire parser stack on the tokenizer extension through
an opt in flag: token_get_all($src, TOKEN_PARSE).
this change allows easy future language enhancements regarding context
aware parsing & scanning without further maintance on the tokenizer
extension while solves known inconsistencies "parseless" tokenizer
extension has when it handles `__halt_compiler()` presence.
2015-04-30 03:03:29 -03:00
Nikita Popov
16a9bc1ec2
Disallow self etc outside classes at compile-time
...
Also fix a bug with return types where "self" was rejected inside
a class, but not on a method.
Fallout: A couple of tests changed to more generic error messages.
2015-04-29 20:51:08 +02:00
Xinchen Hui
33e32cbe5b
Make it inline
2015-04-28 11:30:25 +08:00
Nikita Popov
422de8a7a7
Drop compile_class_decl return value
...
Was introduced for anon classes, but no longer needed.
2015-04-27 22:54:02 +02:00
Dmitry Stogov
8acd7f49da
Pass class_entry through IS_VAR to avoid hash lookup in ZEND_NEW.
2015-04-27 14:16:29 +03:00
Dmitry Stogov
2a1b0b1121
Use "safe" anonymous class names. Don't show the mangled names through var_dump().
2015-04-27 13:08:22 +03:00
Dmitry Stogov
94245bc14c
Refactored using specialized opcodes
2015-04-27 12:24:39 +03:00
Nikita Popov
8361893444
Fix implementing_class handling
2015-04-26 16:03:58 +02:00
Nikita Popov
f2f890a256
More cleanup (mainly retab)
2015-04-26 15:54:30 +02:00
Nikita Popov
03d7042d5c
Don't issue FETCH_CLASS for anon classes
2015-04-26 15:44:48 +02:00
Nikita Popov
929fdc1c1a
More retab
2015-04-26 15:28:55 +02:00
Nikita Popov
4a7061b0e3
Simply anon class name generation
...
Drop dead "parent" code
2015-04-26 15:24:13 +02:00
Nikita Popov
f16eca58a2
Retab
2015-04-26 15:17:53 +02:00
Nikita Popov
9a1797d48e
Revert unrelated changes / rebase fixup
2015-04-26 15:13:49 +02:00
krakjoe
49608e0608
Rebase Joe's anon classes implementation
2015-04-26 15:04:22 +02:00
Nikita Popov
75b4fa079f
Fix bug #69532
...
Partial revert of ea2fc7f935
.
2015-04-25 18:47:26 +02:00
Dmitry Stogov
000d5d7ec9
Dont't use DO_ICALL for internal functions returned by reference
2015-04-24 00:34:11 +03:00
Xinchen Hui
ea2fc7f935
Slight improvement
2015-04-23 21:50:38 +08:00
Kalle Sommer Nielsen
f2435bd252
Fixed compiler warning
2015-04-23 12:31:02 +02:00
Dmitry Stogov
15a5f61cf4
Use fast method to check if first arguments should be passed by reference (not tested onbig endian).
2015-04-22 21:46:13 +03:00