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
Nikita Popov
d2607a0110
Move more stuff to file_context
...
Introduce helper macro FC(x) for CG(file_context).x.
end_compilation() now handled by file_context_end().
While at it, dropped zval wrapper for ticcks.
2015-04-21 17:39:07 +02:00
Xinchen Hui
29c449ce98
Merge branch 'PHP-5.5' into PHP-5.6
2015-04-21 22:44:45 +08:00
Xinchen Hui
a508693874
Remove tail blank which is committed by accident
2015-04-21 22:44:22 +08:00
Xinchen Hui
9d9ba493a2
Merge branch 'PHP-5.5' into PHP-5.6
2015-04-21 22:37:00 +08:00
Xinchen Hui
c667c26f61
Fixed Bug #69467 (Wrong checked for the interface by using Trait)
2015-04-21 22:36:32 +08:00
Nikita Popov
0381c1b79e
Fixed bug #69388
...
Renamed compiler_context to oparray_context. Introduced per-file
file_context. Moved import tables into the file_context.
context_stack no longer exists, instead keeping backups of contexts
on C stack. Same for file contexts.
TODO: Move more things out of CG into file_context. There should be
a number of other things that we should not try to reuse in nested
compilations.
2015-04-20 18:18:52 +02:00
Bob Weinand
f3e124d58d
Merge branch 'coroutineDelegation' of https://github.com/bwoebi/php-src
2015-04-14 17:58:58 +02:00
Xinchen Hui
fa0608077b
Merge branch 'PHP-5.5' into PHP-5.6
2015-04-10 22:48:36 +08:00
Xinchen Hui
429f411eb3
Fixed bug #69420 (Invalid read in zend_std_get_method)
2015-04-10 22:47:06 +08:00
Nikita Popov
7e9a1c1e3f
Merge branch 'PHP-5.5' into PHP-5.6
...
Conflicts:
Zend/zend_compile.c
Zend/zend_compile.h
2015-04-06 22:06:48 +02:00
Nikita Popov
cc70a46525
Fix bug #60022
2015-04-06 22:03:04 +02:00
Dmitry Stogov
cae0147ed3
Fixed weird operators behavior. Division by zero now emits warning and returns +/-INF, modulo by zero and intdid() throws an exception, shifts by negative offset throw exceptions. Compile-time evaluation of division by zero is disabled.
2015-04-06 14:30:05 +03:00
Dmitry Stogov
ec760d8fff
Convert fatal errors into EngineExceptions
2015-04-01 20:01:57 +03:00
Dmitry Stogov
8c031a3f95
Handle incorrect break/continue statements at compile-time
2015-04-01 15:52:26 +03:00
Dmitry Stogov
acfc31c0f8
Use zend_error_noreturn() for fatal errors
2015-04-01 13:32:23 +03:00
Nikita Popov
8d00385871
Reclassify E_STRICT notices
...
Per RFC https://wiki.php.net/rfc/reclassify_e_strict
While reviewing this, found that there are still three E_STRICTs
left in libraries - need to discuss those.
2015-04-01 11:17:55 +02:00
Nikita Popov
6ef9216269
Finish PHP 4 constructor deprecation
2015-03-31 17:55:27 +02:00