History log of /PHP-7.3/Zend/zend_compile.h
Revision Date Author Comments
# 526344aa 24-Jan-2019 Nikita Popov <nikita.ppv@gmail.com>

Add flag to disable jumptable optimization

This is useful for coverage. While it is currently safe to just
skip over the SWITCH_* opcodes, this may not be true in the future
due to opcache optimizations, so it's safer to disable emission of
SWITCH_* opcodes entirely.

# 9afce019 01-Nov-2018 Zeev Suraski <zeev@php.net>

Future-proof email addresses

# b8828926 20-Aug-2018 Dmitry Stogov <dmitry@zend.com>

Avoid hash lookups in BIND_STATIC and BIND_LEXICAL opcode handlers.
Encode static variable offset into opline->extended_value.

# 7a41e4c0 26-Jul-2018 Dmitry Stogov <dmitry@zend.com>

Documented ZEND_ACC_* flags (values are kept unchanged, except for ZEND_ACC_IMMUTABLE, that was introduced in 7.3 anyway)

# 8d3f8ca1 03-Jul-2018 Peter Kokot <peterkokot@gmail.com>

Remove unused Git attributes ident

The $Id$ keywords were used in Subversion where they can be substituted
with filename, last revision number change, last changed date, and last
user who changed it.

In Git this functionality is different and can be done with Git attribute
ident. These need to be defined manually for each file in the
.gitattributes file and are afterwards replaced with 40-character
hexadecimal blob object name which is based only on the particular file

This patch simplifies handling of $Id$ keywords by removing them since
they are not used anymore.

# 04e3523b 24-Jun-2018 Nikita Popov <nikita.ppv@gmail.com>

Warn if continue is used on switch

Supersedes RFC https://wiki.php.net/rfc/continue_on_switch_deprecation
by generating a warning instead of deprecating and removing this

# 28b03f96 02-Jul-2018 Dmitry Stogov <dmitry@zend.com>

Another fix for bug #63217

# b89ce981 25-Jun-2018 Dmitry Stogov <dmitry@zend.com>


# 7f67513c 25-Jun-2018 Dmitry Stogov <dmitry@zend.com>

Lazy function copying from op_cache SHM into process memory

# 19b42bd6 25-Jun-2018 COFFEE <353238473@qq.com>

numner => number

# 1f726c99 21-Jun-2018 Dmitry Stogov <dmitry@zend.com>

Added parenthesis

# d04917c7 24-Sep-2017 Nikita Popov <nikita.ppv@gmail.com>

Fixed bug #75218

I've introduced a new CompileError type, from which ParseError
inherits. These errors are not parse errors in the narrow sense
of the term, even though they happen to be generated during
parsing in our implementation. Additionally reusing the ParseError
class for this purpose would change existing error messages (if
the exception is not caught) from a "Fatal error:" to a "Parse
error:" prefix, and also the error kind from E_COMPILE_ERROR to

# 9e0f131d 31-May-2018 Dmitry Stogov <dmitry@zend.com>

Fixed ISSET/ISEMPTY bit meaning to simplify run-time checks

# 5eb1f92f 28-May-2018 Dmitry Stogov <dmitry@zend.com>

Use zend_string_release_ex() instread of zend_string_release() in places, where we sure about string persistence.

# 83f98f73 27-Apr-2018 Dmitry Stogov <dmitry@zend.com>

Don't store values of PHP_SAPI and PHP_BINARY in file cache, because it may be used by different SAPI.

# 4bbf200b 15-Mar-2018 Dmitry Stogov <dmitry@zend.com>

Optmized AST creation

# 8afb91cd 13-Mar-2018 Dmitry Stogov <dmitry@zend.com>

PHP scanner optimization

# c7045174 13-Mar-2018 Dmitry Stogov <dmitry@zend.com>

Moved compiler helper functions from zend_opcode.c to zend_compile.c

# 58880e3f 27-Feb-2018 Dmitry Stogov <dmitry@zend.com>


# 070a0091 05-Feb-2018 Dmitry Stogov <dmitry@zend.com>

Use low bits

# 3a794d39 05-Feb-2018 Dmitry Stogov <dmitry@zend.com>

Avoid repeatable ARG_SHOULD_BE_SENT_BY_REF() checks in FETCH_*FUNC_ARG and following SEND_VAR_EX. Perform the check once in a new CHECK_FUNC_ARG opcode and reuse in the following FETCH_*FUNC_ARG and SEND_FUNC_ARG (SEND_VAR_EX replacement).

# 9a6100f9 02-Feb-2018 Dmitry Stogov <dmitry@zend.com>


# ba298725 31-Jan-2018 Dmitry Stogov <dmitry@zend.com>

Changed CATCH instruction format (extended_value moved into op2, op2 into result, result into extended_value)

# 17a3b484 31-Jan-2018 Dmitry Stogov <dmitry@zend.com>

Make IS_UNUSED to be zero.

# 7141631c 30-Jan-2018 Dmitry Stogov <dmitry@zend.com>

Change FETCH/ISSET instruction modifiers:
- Get rid of ZEND_ISEMPTY and ZEND_ISSET_ISEMPTY_MASK. Use just single ZEND_ISSET bit to make distinct between isset() and empty()
- Removed unused ZEND_FETCH_STANDARD

# e229e7b6 16-Jan-2018 Dmitry Stogov <dmitry@zend.com>

Inline function

# 70aa967d 11-Jan-2018 Dmitry Stogov <dmitry@zend.com>

Reorder zend_op_array fields for better data locality and packing

# c9034c3b 11-Jan-2018 Dmitry Stogov <dmitry@zend.com>

Get rid of zend_op_array.early_binding

# a6519d05 01-Jan-2018 Xinchen Hui <laruence@gmail.com>


# 7a7ec01a 01-Jan-2018 Xinchen Hui <laruence@gmail.com>


# ccd4716e 01-Jan-2018 Xinchen Hui <laruence@gmail.com>


# 0673aa7f 10-Dec-2017 Anatol Belski <ab@php.net>

Apply calling convention explicitly to the function, not to the decl.

# f3aca3c8 11-Dec-2017 Dmitry Stogov <dmitry@zend.com>

Use "fastcal" calling convention for internal PHP functions on x86

# ef5ea487 10-Oct-2017 Dmitry Stogov <dmitry@zend.com>

Always use IS_CONSTANT_AST (IS_CONSTANT is removed).

# e70618af 04-Oct-2017 Dmitry Stogov <dmitry@zend.com>

Changed the way VM accesses constant operands in 64-bit builds.

# 1180d8c8 17-Jul-2017 Dmitry Stogov <dmitry@zend.com>


# bc5811f3 04-Jul-2017 Anatol Belski <ab@php.net>

further sync for vim mode lines

# f25ecdac 21-Jun-2017 Dmitry Stogov <dmitry@zend.com>

shutdown_executor() refactoring (reuse opcache fast request shutdown code)

# db4561bf 08-Jun-2017 Dmitry Stogov <dmitry@zend.com>

Introduced "zif_handler" type (zif = zend internal function).

# 44156b31 29-Apr-2017 Andrea Faulds <ajf@ajf.me>

Drop ZEND_API from zend_assert_valid_class_name

This is a convenience function for internal use and shouldn't have been

# b6a4aad8 22-Apr-2017 Nikita Popov <nikita.ppv@gmail.com>

Remove the ZEND_ACC_CLONE flag

This one is completely unused

# 6ae40ca0 22-Apr-2017 Nikita Popov <nikita.ppv@gmail.com>

Document which function flags are still free

Also clearly separate method and class flags.

# e92896f7 10-Apr-2017 Sammy Kaye Powers <sammyk@sammykmedia.com>

Remove spurious `CG(context).in_finally` dingleberry

# 141d1ba9 13-Jan-2017 Dmitry Stogov <dmitry@zend.com>

Introduced "zend_type" - an abstraction for type-hinting representation.

# dac6c639 04-Jan-2017 Sammy Kaye Powers <sammyk@sammykmedia.com>

Update copyright headers to 2017

# 478f119a 04-Jan-2017 Sammy Kaye Powers <sammyk@sammykmedia.com>

Update copyright headers to 2017

# 9e29f841 02-Jan-2017 Sammy Kaye Powers <sammyk@sammykmedia.com>

Update copyright headers to 2017

# 2c705813 11-Dec-2016 Nikita Popov <nikic@php.net>

Fix T_NUM_STRING negation

T_NUM_STRING follows the rules of symtable numeric string
conversion. If the offset isn't an integer under those rules, it
is treated as a string. This should apply to negated T_NUM_STRINGs
as well.

# bdc1ba3e 01-Nov-2016 Dmitry Stogov <dmitry@zend.com>

Intriduced ZEND_ACC_INHERITED class flag.
It's going to be helpful for static optimisations, when "parent" is not known yet.

# 8754b191 06-Oct-2016 Nikita Popov <nikic@php.net>

Fix "already in use" check inconsistencies/bugs

This fixes the following issues:
* "use function" and "use const" inside namespaced code were checking
for conflicts against class imports. Now they always check against
the correct symbol type.
* Symbol conflicts are now always checked within a single file only.
Previously class uses inside namespaced code were checked globally.
This behavior is illegal because symbols from other files are not
visible if opcache is used, resulting in behavioral discrepancies.
Additionally this made the presence/absence of symbol errors dependent
on autoloading order, which is volatile.
* The "single file" restriction is now enforced by collecting defined
symbols inside a separate hash table. Previously it was enforced
(for the non-namespaced case) by comparing the filename of the
symbol declaration. However this is inaccurate if the same filename
is used multiple times, such as may happen if eval() is used.
* Additionally the previous approach relies on symbols being registered
at compile-time, which is not the case for late-bound classes, which
makes the behavior dependent on class declaration order, as well as
opcache (which may cause delayed early-binding).
* Lastly, conflicts are now consistently checked for conditionally
defined symbols. Previously only declaration-after-use conflicts were
checked in this case. Now use-after-declaration conflicts are
detected as well.

# 40b8105c 28-Sep-2016 Nikita Popov <nikic@php.net>

Fix the constant array case as well

# 97628da2 26-Sep-2016 Dmitry Stogov <dmitry@zend.com>

Expose information about calls to "fake" closures (created through ReflectionFunction::getClosure), to allow extra specialization of RETRUN opcode handler.

# b66039db 28-Aug-2016 Dmitry Stogov <dmitry@zend.com>

Fixed bug #72944 (Null pointer deref in zval_delref_p).

# 194ffefb 08-Aug-2016 Joey <joey.bartlett@gmail.com>

Corrected typo in comment

Finger-key interface malfunction.

# ab304579 06-Jul-2016 Nikita Popov <nikic@php.net>

Forbid use of array() in nested destructuring

Previously array() was only forbidden on the outermost level.

# ebb99a1a 21-Jun-2016 Dmitry Stogov <dmitry@zend.com>

Fixed compilation warnings

# a9512af8 15-Jun-2016 Dmitry Stogov <dmitry@zend.com>

Implemented RFC: Fix inconsistent behavior of $this variable
Squashed commit of the following:

commit bdd3b6895c3ce3eacfcf7d4bf4feb8dfa61801fd
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jun 16 00:19:42 2016 +0300


commit 2f1d7c8b89ce821086d357cf65f629f040a85c03
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jun 15 21:01:57 2016 +0300

Removed unused variable

commit cf749c42b0b1919f70b1e7d6dcbfff76899506af
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jun 15 19:06:16 2016 +0300

Protection from $this reassign through mb_parse_str()

commit 59a9a6c83c66b666971e57f1173b33a422166efd
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jun 15 18:14:50 2016 +0300

Added type inference rule for FETCH_THIS opcode

commit 73f8d14a856f14a461430b3c7534ab2ce870cbf6
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jun 15 18:11:18 2016 +0300

Restored PHP-7 behavior of isset($this->foo).
It throws exception if not in object context.
Removed useless opcode handlers.

commit fa0881381e8ae97e022ae5d1ec0851c952f33c82
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue May 31 12:25:47 2016 +0300

Changed "Notice: Undefined variable: this" into "Exception: Using $this when not in object context".

commit e32cc528c0f2c97963d8ec83eff0269f1f45af18
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue May 24 02:02:43 2016 +0300

Throw exception on attempt to re-assign $this through extract() and parse_str().

commit 41f1531b52113ec8a4c208aa6b9ef50f1386bb3f
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon May 23 22:18:36 2016 +0300

Fixed inconsistent $this behavior

# b111da96 31-May-2016 Dmitry Stogov <dmitry@zend.com>


# 2ae21abd 24-May-2016 Dmitry Stogov <dmitry@zend.com>

Fixed bug #72213 (Finally leaks on nested exceptions).

Squashed commit of the following:

commit 8461b0407fc9eab0869d43b84e6a92ba2fe06997
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed May 25 00:34:42 2016 +0300

Rmoved zend_try_catch_element.parent and walk through op_array.try_catch_array backward from the current try_cacth_offset.

commit 0c71e249649bed178bfbef30bb3e63c57f07af05
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed May 25 00:04:53 2016 +0300

Move SAVE_OPLINE() to its original place

commit 111432a4df738fcd65878a42f23194dc3c4983a2
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed May 25 00:01:10 2016 +0300

Separate the common part of ZEND_HANDLE_EXCEPTION and FAST_RET into zend_dispatch_try_catch_finally_helper.

commit 4f21c06c2ec17819a708bc037f318784554a6ecd
Author: Nikita Popov <nikic@php.net>
Date: Tue May 24 14:55:27 2016 +0200

Improve finally fix

commit da5c7274997b8308e682b5bf280124e3a1483086
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue May 24 10:36:08 2016 +0300

Fixed Zend/tests/try/bug70228_3.phpt and Zend/tests/try/bug70228_4.phpt

commit cfcedf2fb4f4fc1f7de9f7d53a3037fed7795f19
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue May 24 02:59:27 2016 +0300

Added test

commit 4c6aa93d43da941eb4fda15b48154bfb104bdc04
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue May 24 00:38:20 2016 +0300

Added tests

commit 8a8f4704b0eca2e460d42c1f253a363b0db8e510
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon May 23 23:27:34 2016 +0300

Fixed bug #72213 (Finally leaks on nested exceptions)

# 91f59403 24-Apr-2016 Nikita Popov <nikic@php.net>

Forbid dynamic calls to scope introspection functions

Per RFC:

# 97bf4e0b 15-May-2016 Dmitry Stogov <dmitry@zend.com>

Check if generator object is created by GENERATOR_CREATE when throw exceptions from generator function

# 054446a2 15-May-2016 Dmitry Stogov <dmitry@zend.com>

Extend CAL_FLAGS from 8-bit to 16-bit

# ccf18da4 12-May-2016 Dmitry Stogov <dmitry@zend.com>

Eliminated checks for (func->op_array.fn_flags & ZEND_ACC_GENERATOR) in fast path of DO_FCALL* handlers.
This slightly improves calls to regular function and method calls in cost of a bit slower generator initialization.
Separate call frame for generators, allocated on heap, now created by ZEND_GENERATOR_CREATE instruction.

# 49fe737e 06-Apr-2016 Dmitry Stogov <dmitry@zend.com>

Implement nullable return types.

# 9bbee305 04-May-2016 Joe Watkins <krakjoe@php.net>

add compiler option to disable builtins (special case function calls)

# 71842c28 29-Apr-2016 Dmitry Stogov <dmitry@zend.com>

Fixed breaks of strict-aliasing rules

# 747a482b 28-Apr-2016 Dmitry Stogov <dmitry@zend.com>

Don't initialize EX(call)->symbol_table on each function call.
Keep it uninitialized, and check ZEND_CALL_HAS_SYMBOL_TABLE flag when necessary.

# 9f3eab44 17-Apr-2016 Márcio Almada <marcio3w@gmail.com>

allow null coalescing (??) on constant expressions

# b73517c1 14-Apr-2016 Dmitry Stogov <dmitry@zend.com>

Use DO_FCALL_BY_NAME instead of DO_FCALL, if possible

# 7abfaac9 01-Apr-2016 Dmitry Stogov <dmitry@zend.com>

Merge zend_execute_data->called_scope into zend_execute_data->This.
"called_scope" made sense only for static method calls, for dynamic calls it was always equal to the class of $this.
Now EG(This) may store IS_OBJECT + $this or IS_UNUSED + "called_scope" (of course, "called_scope" may be NULL).
Some code might need to be adopted to support this change.
Checks (Z_OBJ(EX(This))) might need to be converted into (Z_TYPE(EX(This)) == IS_OBJECT).

# fcbe1e8e 31-Mar-2016 Dmitry Stogov <dmitry@zend.com>

Use CALL_INFO flag to check if we need to destroy symbol_table.
This saves one memory load on most RETURN opcodes.

# 1e82ad80 30-Mar-2016 Andrea Faulds <ajf@ajf.me>

Warn about invalid strings in arithmetic

Squashed commit of the following:

commit e05d3b67325d4521418483ed924ac9211a188919
Author: Andrea Faulds <ajf@ajf.me>
Date: Wed Mar 30 01:43:35 2016 +0100


commit 6caf1d4585207d1b02fb06a216cd7da1a1f5e12d
Author: Andrea Faulds <ajf@ajf.me>
Date: Sun Mar 20 21:18:33 2016 +0000


commit 6dadb1b0efe5e2ed071e95a55c806519e61377ac
Author: Andrea Faulds <ajf@ajf.me>
Date: Sun Feb 14 02:15:01 2016 +0000

Add test for numeric string errors in assignment

commit bd5f04e8dd576f92a48d25546f4f9a0f57f374de
Author: Andrea Faulds <ajf@ajf.me>
Date: Sat Feb 13 23:53:05 2016 +0000

Add test for numeric string errors

commit c72e92f16d512bcae30cc9639c89bcb08d971742
Author: Andrea Faulds <ajf@ajf.me>
Date: Tue Jan 26 23:28:33 2016 +0000

Add test for scientific notation in integer operations

commit d94c08852d405b3a7ef6c84d24bf7915c890ce78
Author: Andrea Faulds <ajf@ajf.me>
Date: Sun Feb 14 01:25:57 2016 +0000

Disable optimiser evaluation for numeric string errors

commit 30ee954ed13d933e766c68605d683c8ebae3d8ee
Author: Andrea Faulds <ajf@ajf.me>
Date: Sun Feb 14 01:46:25 2016 +0000


commit a6403b79e054c95e2b7345d787f3092b261eed27
Author: Andrea Faulds <ajf@ajf.me>
Date: Sat Feb 13 22:00:27 2016 +0000

Do not convert error-causing numeric strings ahead-of-time

commit f9dc35401471ef3035954cb6f171826769297548
Author: Andrea Faulds <ajf@ajf.me>
Date: Sat Feb 13 19:15:38 2016 +0000

Disable compile-time evaluation for numeric string errors

commit e05b0cc8496ea082c6db27efd8b8277ef1f785b5
Author: Andrea Faulds <ajf@ajf.me>
Date: Fri Feb 5 11:42:26 2016 +0000

Make _zval_get_long_func_noisy function for inlining

commit 84d66321a57e579759109650c8bb7e3d5002854a
Author: Andrea Faulds <ajf@ajf.me>
Date: Tue Jan 26 23:10:00 2016 +0000

Update tests

commit 5ac4a0cc4bff282e3a15eaa8ab44b67391881a6d
Author: Andrea Faulds <ajf@ajf.me>
Date: Tue Jan 26 22:08:19 2016 +0000

Use is_numeric_string_ex for zval_get_long etc.

commit c21f08848533723331012a62a153de3577731d6a
Author: Andrea Faulds <ajf@ajf.me>
Date: Thu Jan 7 21:13:04 2016 +0000

Update tests

commit 63e214cf8160420bfc51c6a2b4ae32f09ad8e8af
Author: Andrea Faulds <ajf@ajf.me>
Date: Wed Jan 6 00:28:01 2016 +0000

Warn on non-/bad numeric strings in arithmetic

# 556827de 26-Mar-2016 Nikita Popov <nikic@php.net>

Remove some dead defines

# 80a722a6 19-Mar-2016 Nikita Popov <nikic@php.net>

Drop some dead defines

# 44ed1cb5 11-Feb-2016 Nikita Popov <nikic@php.net>


Instead emit a FREE on the result of NEW.

# 5faedf5b 05-Feb-2016 Nikita Popov <nikic@php.net>

Remove EXT_TYPE_UNUSED in favor of IS_UNUSED

This means we no longer allocate an unused VAR for the retval of
instructions that support unused results.

Nearly all instructions already used the result variable only if
it was used. The only exception to this was the return value
variable for internal function call results. I've adjusted the code
to use a stack zval for the unused return case now. As we have
retval specialization now, we know that it doesn't matter.

# 6579e484 11-Jan-2016 Dmitry Stogov <dmitry@zend.com>

Introduced BIND_STATIC opcode instead of FETCH_R/FETCH_W(static)+ASSIGN/ASSIGN_REF (similar to BIND_GLOBAL).
In the future we may refer to static variable by index instead of name, to eliminate hash lookup.

# 97a9470d 02-Jan-2016 Xinchen Hui <laruence@gmail.com>

bump year which is missed in rev 49493a2

# 3537e95d 02-Jan-2016 Xinchen Hui <laruence@gmail.com>

bump year which is missed in rev 49493a2

# 65e456f3 29-Dec-2015 Nikita Popov <nikic@php.net>


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.

# 2a7eeff3 20-Oct-2015 Levi Morrison <levim@php.net>

Remove mentions of "type hint" and "typehint"

# 591fe26d 11-Dec-2015 Nikita Popov <nikic@php.net>


The distinction between BP_VAR_REF and BP_VAR_W is no longer
revelant, since we dropped support for =& new.

# 3fa86105 10-Dec-2015 Nikita Popov <nikic@php.net>


# a75c1950 07-Dec-2015 Dmitry Stogov <dmitry@zend.com>

Implemented the RFC `Support Class Constant Visibility`.

Squashed commit of the following:

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

Fixed test expectation

commit 211f873f542504d0a0f72b6b5cb23908a1c99a2d
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 51deab84b2cdbf9cdb1a838cf33b2ee45c61748b
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Dec 7 11:18:55 2015 +0300

Fixed issues found by Nikita

commit 544dbd5b47e40d38a8ccb96bc5583e9cb7fdd723
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.

# e603769c 17-Nov-2015 Dmitry Stogov <dmitry@zend.com>

Fixed signed/unsigned mismatch

# 843c1657 17-Nov-2015 Dmitry Stogov <dmitry@zend.com>

Don't undo/redo "pass two" for jump targets in opcache optimizer.

# 3a5fa926 13-Nov-2015 Dmitry Stogov <dmitry@zend.com>

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)

# 998204ef 12-Nov-2015 Dmitry Stogov <dmitry@zend.com>

Separate common part of compile_file() and compile_string() into zend_compile()

# baf97b1f 10-Nov-2015 Dmitry Stogov <dmitry@zend.com>

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.

# ddb6d780 06-Oct-2015 Márcio Almada <marcio3w@gmail.com>

Fix bug #70650

# e0b3b3c7 06-Oct-2015 Dmitry Stogov <dmitry@zend.com>

Revert "Fixed bug #70630 (Closure::call/bind() crash with ReflectionFunction->getClosure())"

This reverts commit 517b5536259ecf7697f353f4bfbafde857fc1f81.

# 3c034805 06-Oct-2015 Dmitry Stogov <dmitry@zend.com>

Revert "Speed up self::method() calls (no ZEND_FETCH_CLASS)"

This reverts commit 8c33bdb976e957ea67ebffd424e0a133a79c6ebe.

# 8c33bdb9 05-Oct-2015 Bob Weinand <bobwei9@hotmail.com>

Speed up self::method() calls (no ZEND_FETCH_CLASS)

# 517b5536 03-Oct-2015 Bob Weinand <bobwei9@hotmail.com>

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

# 64a79817 30-Sep-2015 Dmitry Stogov <dmitry@zend.com>

Reordered field to improve data lacality and reduce L1D CPU cache misses in ZEND_INIT_FCALL opcode family

# 45cb42f4 30-Sep-2015 Xinchen Hui <laruence@gmail.com>

Simply use 0/1 instead as dmitry suggested

# df2ff751 29-Sep-2015 Xinchen Hui <laruence@gmail.com>

Make ZEND_ECHO and removed ZEND_PRINT distinguishable

# 88e14744 29-Sep-2015 Xinchen Hui <laruence@gmail.com>

Make ZEND_ECHO and removed ZEND_PRINT distinguishable

# ca36b7bc 29-Sep-2015 Dmitry Stogov <dmitry@zend.com>

Added zend_internal_function.reserved[] fields, to allow extensions keep additional associated information.
We didn't have zend_internal_function.reserved[] in PHP5, but we always allocated space for zend_function union, and extensions were able to reuse zend_function.op_array.reserved[] even for internal function. Now this is not possible. And extensions have to use zend_function.op_array.reserved[] for user functions and zend_function.internal_function.reserved[] for internal.

# 4a174ca7 23-Sep-2015 Bob Weinand <bobwei9@hotmail.com>

Fixed bug #70532 (respect set_exception_handler in phpdbg)

# 1a5d6acf 20-Sep-2015 Joe Watkins <krakjoe@php.net>

ZEND_COMPILE_GUARDS compiler option

# 942747cc 26-Aug-2015 Dmitry Stogov <dmitry@zend.com>

Removed unused functions

# 6d681876 06-Aug-2015 Dmitry Stogov <dmitry@zend.com>

Get rid of memcpy() in MAKE_NOP()

# 58596897 04-Aug-2015 Dmitry Stogov <dmitry@zend.com>


# a16aa4c4 04-Aug-2015 Dmitry Stogov <dmitry@zend.com>

Move most "finally" related code-generation from pass_two() to compiler.

# 74380105 10-Jul-2015 Nikita Popov <nikic@php.net>

Try to fix finally issue

# d8fe645d 03-Aug-2015 Bob Weinand <bobwei9@hotmail.com>

Fix valgrind errors in phpdbg

Revert "We cannot safely assume that all op array will be refcount 0 after execution"
This reverts commit b6936adb58288a0606ed847802d9226cddb41e2b.

This change turns out to not have been a clever idea and was causing more weirdness than it helped...

# b6936adb 22-Jul-2015 Bob Weinand <bobwei9@hotmail.com>

We cannot safely assume that all op array will be refcount 0 after execution
Some extensions may want to analyze or re-run the op array later

# 7c661bd3 21-Jul-2015 Nikita Popov <nikic@php.net>


This was generated for a return from a try block with both a catch
and a finally. However at this point no exception can be active,
because it either didn't exist in the first place or was explicitly
discarded using DISCARD_EXCEPTION.

# 81a2c43d 21-Jul-2015 Bob Weinand <bobwei9@hotmail.com>

Add an option to not generate INIT_FCALL ops for user functions too

# ef1b588f 10-Jul-2015 Dmitry Stogov <dmitry@zend.com>

Resolve GOTO at compile time and replace it with sequnce of FREE/FE_FREE and JMP.

# 44f7348c 10-Jul-2015 Dmitry Stogov <dmitry@zend.com>

Exception thrown by "return" statement (from TMP destructors) shouldn't be caught in the same function

# 549e8c49 10-Jul-2015 Dmitry Stogov <dmitry@zend.com>

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 5ee841325901a4b040cfea56292a24702fe224d9.

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 404dc93d35f7061fc4b1b41ad6cb0721b9b52bcc.

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 b3a4c05071c3786e27e1326fa1b4d5acad62fccd.

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 1852f538b9f8d5e7d67fe5a4f6080396d8b10034.

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 ed14019e8c0c852480eebc6fc552d8c3d939dce1.

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 54f367ee2a2e4cb7c952b17915c226fdc56038ab.

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 f5db5a558d550bf441373febebbb02f3884209d1.

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 17c5315bdf8f8087979aeb55f6d3a512ba197cf5.

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 cc876c04b420589cb1f62b650d0c0e24975dd4af.

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 8c3f701eebfa92d761bb368cfa8c2d1ccf821b9d.

# 8c3f701e 09-Jul-2015 Dmitry Stogov <dmitry@zend.com>

Fixed exception catching on break/continue
Fixed "finaly" handling on exception in "return" statement

# cc876c04 09-Jul-2015 Bob Weinand <bobwei9@hotmail.com>

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

# 54f367ee 09-Jul-2015 Dmitry Stogov <dmitry@zend.com>

Fixed invalid live-range detection

# b3a4c050 07-Jul-2015 Nikita Popov <nikic@php.net>

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.

# 5ee84132 07-Jul-2015 Dmitry Stogov <dmitry@zend.com>

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 38e22106d4bdcc829dd2b64be1d3c6cdc089f3ed
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 15:12:19 2015 +0300

Added NEWS entry

commit 0a355935bfb10b5a4c893f4db9496ea8abbcf71b
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 15:06:32 2015 +0300

Inline function, to eliminate repeatable checks

commit d937584f3aef0baae6001377b61fd700b6f36e14
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 0341626ea94a5e474c660732d33884460847d5e7
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

commit 74869fa67375b8daf772ac30b6b936fd2a2132c6
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 11:45:34 2015 +0300

Fixed wrong GOTO resolution

commit dec35ded3294e3022e88a623188c3d1d71381675
Author: Xinchen Hui <laruence@gmail.com>
Date: Tue Jul 7 15:58:49 2015 +0800

Fixed checkpoint get

commit b0f419540ad24c44810c9b05da046965618ffc65
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 10:47:11 2015 +0300

Fixed crash of invalid pointer derefer (laruence)

commit 7a428d98ca2899c5933914caa0cd17b4126e952c
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 10:35:47 2015 +0300

Fixed identation

commit 9c3a4dce9ce02034d19d28182aa9c1298d528daf
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 10:33:52 2015 +0300

Fixed invalid size

commit 653abc670b2a1f453b0fc3fc4a9eca919ee870cc
Author: Xinchen Hui <laruence@gmail.com>
Date: Tue Jul 7 11:29:14 2015 +0800

Fixed crash of invalid pointer derefer

commit e04500ceda606ac4f364d03bcd562327bdc74eee
Author: Xinchen Hui <laruence@gmail.com>
Date: Tue Jul 7 11:28:26 2015 +0800


commit 34183e1687681038e77b650078927b35ee84e933
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:49:46 2015 +0300

op_array->T_liveliness compression

commit 2f6ad845795a08c3d7ac219e9c42950565b20394
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:44:44 2015 +0300

White spaces

commit be83f115a3f82a548c8d377c66574de5e5187410
Author: Dmitry Stogov <dmitry@zend.com>
Date: Tue Jul 7 04:42:26 2015 +0300


commit 1f5084b99038c374ac012b017c4d1652bb5d4222
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 91b620d684c5a2296774432d5d0ff8f5d14397d6
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 7052e5697918fab83d2975977c3392f7188fbc87
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 ae72b0dc6797815a846b8f95abccb36367422d27
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 a81c4bb8c6f1ba8124a5a7636694480ff0f1328c
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 9a16810f7a7c10373603c5250d985616acf45e97
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 bbfbe470c865cb8b3cae8bf6518e6d06af525522
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 0bda4abea7ba0a51c2ec125edb547645d0329792
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 521ad9df98fdf1dd8b7c212799ddeb1a84483e6f
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 4398dab82f9a5ce64df55b24988ce7d31e24074f
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 739656f83ff5b570bb311d2c7cb2d72380a3c759
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 3df462a2bcf5fa8f9244ea299178152a5d436277
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 883b73c56e6dab6489ae4cda2c1331b53a995586
Author: Dmitry Stogov <dmitry@zend.com>
Date: Mon Jul 6 13:28:45 2015 +0300

Removed op_array->brk_cont_array

commit ae5e58b59843513505e84e396c1446ac35cb1b94
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 b4223ca62771e1003c9ab778a09a177ad71e6d57
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Mon Jul 6 04:07:07 2015 +0200

Fix bugs / cleanup fixes

commit ea33189d220c7fc0884848571635abe3cddd2f4d
Author: Xinchen Hui <laruence@gmail.com>
Date: Sun Jul 5 20:58:38 2015 +0800

Removed useless TsTop

commit 1dbb007e4addba9ac3bfc227db27a651cbcf5ede
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 3a8af245290ceb507108340831254672f24022fa
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 ba721efa2cbd2136668fec956ef3b034ac1a29d6
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 8d1f88fe91e62b4333703c58b871d85b66fb7b70
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 80c1d0d779e6e9609a211907838f3727aa7b301a
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jul 3 11:05:39 2015 +0300

Don't keep empty T_liveliness

commit 501ae8aaac0a92368b50e9f342b04d7334d263f6
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 a4fce36907147df5ac1af78b44135e3f07c1844c
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 fd0fcce81177717f3a05ac87192b5ed05eead0a1
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Thu Jul 2 20:00:33 2015 +0200

Fix remaining issues with compacted temporaries

commit 427dc58bbb93022d1c2077f874afcdb9dd82d5c5
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 22:49:12 2015 +0200

Fix regression from last commit (+1 ?!)

commit 1adcf56a6e9f09e7ad06331d4d6280035b17a7d1
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 25b231b7841fa4078c65976cabdd843845a6cbe6
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 22d9d05350e35d180018d0bccbad6f173cb4797d
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 6538269bfa5bcbad34fc2f051b0fd5e4ebf2ff00
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Wed Jul 1 13:05:52 2015 +0200

Fix opcache support

commit 333a7c4a8813a45dc79ce55b8e9c0a0b98671e13
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Sat Jun 27 22:40:21 2015 +0200

Exempt ROPE temporaries from freeing

commit 02585f77085427baea48448c134a96c542af3337
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 cbcaedbd78199897e5cacffd700b706f21590abf
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 fef649f4067823a1f96f85340cf715e5877310bc
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Fri Jun 26 01:02:27 2015 +0200

Add proper temporary cleaning upon frame abortion

commit 1cec2e7271b789b84601f8acf385950af1bb0c7c
Author: Bob Weinand <bobwei9@hotmail.com>
Date: Thu Jun 25 23:33:21 2015 +0200

Fix arena on small sizes (size < sizeof(zend_arena))

# 7aa76271 30-Jun-2015 Dmitry Stogov <dmitry@zend.com>

Use ZSTR_ API to access zend_string elements (this is just renaming without semantick changes).

# 5314f13f 21-Jun-2015 Bob Weinand <bobwei9@hotmail.com>

Fix accidental function related flag value reuse

# 3c288b12 21-Jun-2015 Bob Weinand <bobwei9@hotmail.com>

Fix bad run_time_cache with Closure::call()
This also fixes a memory "leak" (memory is allocated on unbounded arena without limits) on each new Closure instantiation.
Closures with same scope now all share the same run_time_cache (as long as it is arena allocated)

# a524a375 16-Jun-2015 Dmitry Stogov <dmitry@zend.com>

Improved class type hints checks, by caching resolved class entries in run-time cache.

# ed84bff4 16-Jun-2015 Dmitry Stogov <dmitry@zend.com>

Complete fix for problems related to bug #69802

# 25cd356e 13-Jun-2015 Xinchen Hui <laruence@php.net>

Revert "We are allowed to break ABI now..."

This reverts commit 30a8000ca11c719f1807c346908b3a4e8537dbbe.

# 30a8000c 13-Jun-2015 Xinchen Hui <laruence@php.net>

We are allowed to break ABI now...

# 7c2a0157 12-Jun-2015 Bob Weinand <bobwei9@hotmail.com>

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

# 402f6970 24-May-2015 Nikita Popov <nikic@php.net>

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.

# 8542befa 22-May-2015 Nikita Popov <nikic@php.net>


These are no longer used at run-time now, only temporarily during

# d0e26539 22-May-2015 Nikita Popov <nikic@php.net>

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.

# 1bee093e 22-May-2015 Nikita Popov <nikic@php.net>

Drop THIS_HASHVAL define

No longer used

# 0586702d 12-May-2015 Dmitry Stogov <dmitry@zend.com>

Mark first call frames of stack segment with ZEND_CALL_ALLOCATED flag to simplify checks on stack deallocation.

# ab4ccffc 07-May-2015 Dmitry Stogov <dmitry@zend.com>

Avoid unnecessary reference counter incrementation on $this when call methods

# 49608e06 26-Apr-2015 krakjoe <joe.watkins@live.co.uk>

Rebase Joe's anon classes implementation

# f2435bd2 22-Apr-2015 Kalle Sommer Nielsen <kalle@php.net>

Fixed compiler warning

# 15a5f61c 22-Apr-2015 Dmitry Stogov <dmitry@zend.com>

Use fast method to check if first arguments should be passed by reference (not tested onbig endian).

# d2607a01 20-Apr-2015 Nikita Popov <nikic@php.net>

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.

# 0381c1b7 20-Apr-2015 Nikita Popov <nikic@php.net>

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

# b1bd6f50 19-Apr-2015 Bob Weinand <bobwei9@hotmail.com>

Properly define ZEND_OP_DATA in zend_vm_def.h
This allows zend_vm_gen.php to define them in zend_vm_opcodes.{c,h} without further hacks.

# a759967d 15-Apr-2015 Dmitry Stogov <dmitry@zend.com>

Mark call frames to closures with ZEND_CALL_CLOSURE flag to avoid expensive check at zend_leave_helper()

# 5e8133f4 10-Apr-2015 Dmitry Stogov <dmitry@zend.com>

Squashed commit of the following:

commit 2399fc84c541da9c2176c5b7f6dd039a3c84dc64
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Apr 10 12:38:08 2015 +0300

Removed useless assignment

commit 796b6338174348eee0d74a67706d77b7ce1a60c3
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Apr 10 12:35:31 2015 +0300

Fixed execution with overriden zend_execute_ex()

commit 4a9fb125aa999059f8bc42ebb6ee573c7866b35b
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Apr 10 02:02:58 2015 +0300

Fixed executor without global registers

commit d456c30e00589ccda35a4b57ae903ef2d3c07d95
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Apr 10 01:30:35 2015 +0300

Restored original behavior for tests/classes/__call_004.phpt

commit 479646d37fef050536f1afb12b082618f1f1a3d0
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Apr 10 00:32:17 2015 +0300

Fixed test. We don't keep stack frame for fake function anymore.

commit 9ae61e33e24b2c811d4ab1ca4ab22847c64a780e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Apr 10 00:30:09 2015 +0300


commit 0a8403a2a0c27aa3db271774f8559739a6b8400e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Apr 10 00:05:43 2015 +0300

Generalize API to allow reuse EG(trampline) for other purposes.

commit 4ea0525c10554e36185a0b8b6303106813b6a1c2
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Apr 9 23:22:25 2015 +0300

Reuse EG(proxy_call_op) for all proxy. Move proxy related functions from zend_objects_API to zend_object_handlers.

commit 529bf737ca388ad56fb4ae20ccb81e6276f25ec0
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Apr 9 21:42:23 2015 +0300

Accurate use of proxy_call

commit 5d62837d5ba3855743fe1981786ebd65d9da0b63
Merge: 83e749f 690843f
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Apr 9 19:40:00 2015 +0300

Merge branch 'master' into opcodefy-call

* master:
Fixed GOTO executor
Fixed typo
Changed ArrayIterator implementation using zend_hash_iterator_... API. Allowed modification of itterated ArrayObject using the same behavior as proposed in `Fix "foreach" behavior`. Removed "Array was modified outside object and internal position is no longer valid" hack.

commit 83e749ff3b6623e39b236a72e9b907d5b788ae5e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Apr 9 19:39:10 2015 +0300


commit 0c829afc534e6d5ff27a0dea3a4815da303bd1ef
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Apr 9 15:14:49 2015 +0300

Reverted white-space changes

commit df65144488afa3e9020d75e1ada5529b138afc5a
Merge: 5fd2f97 97756d9
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Apr 9 14:37:07 2015 +0300

Merge branch 'opcodefy-call' of github.com:laruence/php-src into opcodefy-call

* 'opcodefy-call' of github.com:laruence/php-src:
Ready for PR
Fixed static call
Improve performance by using prealloated op_arrray
Respect called_scope
Support internal magical __call/__callStatic
opcode-fy magical __callStatic
Opcode-fy magical __call

commit 97756d9190e07a072a7b48135304dc25a964845f
Author: Xinchen Hui <laruence@gmail.com>
Date: Thu Apr 9 19:07:59 2015 +0800

Ready for PR

commit 74f993084627061e783645a866390b68e2981698
Author: Xinchen Hui <laruence@gmail.com>
Date: Thu Apr 9 19:03:00 2015 +0800

Fixed static call

commit ec1d9eb592db0c3b7b0e3d21e7f445ed8bccfd4d
Author: Xinchen Hui <laruence@gmail.com>
Date: Thu Apr 9 18:23:17 2015 +0800

Improve performance by using prealloated op_arrray

commit df7fbbf949c99f2c5ae3da2a1199235651c7cc82
Author: Xinchen Hui <laruence@gmail.com>
Date: Thu Apr 9 15:10:02 2015 +0800

Respect called_scope

commit 769d1d59fb48b6f7f93d7412eefbf26135fa3e59
Author: Xinchen Hui <laruence@gmail.com>
Date: Thu Apr 9 12:19:23 2015 +0800

Support internal magical __call/__callStatic

commit a980fedd5b0e0683713dd4f6eaad62adf4b4732f
Author: Xinchen Hui <laruence@gmail.com>
Date: Wed Apr 8 18:35:41 2015 +0800

opcode-fy magical __callStatic

commit 73855f7d53baa2efc2b8a88314f51c784c81b59d
Author: Xinchen Hui <laruence@gmail.com>
Date: Wed Apr 8 14:21:55 2015 +0800

Opcode-fy magical __call

# cc70a465 06-Apr-2015 Nikita Popov <nikic@php.net>

Fix bug #60022

# ec760d8f 01-Apr-2015 Dmitry Stogov <dmitry@zend.com>

Convert fatal errors into EngineExceptions

# 59356126 20-Mar-2015 Dmitry Stogov <dmitry@zend.com>

Improved type hinting:

EX_PREV_USES_STRICT_TYPES() and family changed/renamed to fit with other macros
Optimized zend_verify_internal_arg_type() and family (they don't need "strict" argument anymore)
Standerd ZPP is called from VM only for weak type check or strict exception (int -> double)

TODO: should we accept IS_NULL for non-nullable arguments?

# 7044f9c6 19-Mar-2015 Anthony Ferrara <ircmaxell@gmail.com>

Refactor as to not use call info, but add the flag to the op_array.

# 427ecdc5 18-Mar-2015 Anthony Ferrara <ircmaxell@gmail.com>

Fix return type separation with references. It now includes a check in the opcode handler and properly separates the value in both cases

# e78971cd 13-Mar-2015 Anatol Belski <ab@php.net>

fix syntax for the Visual studio compat

# db10b725 13-Mar-2015 Dmitry Stogov <dmitry@zend.com>

Use fastcall calling convention for most critical ZE subsystems.

# 6289f7e5 12-Mar-2015 Dmitry Stogov <dmitry@zend.com>

Executor cleanup: fix GOTO and SWITCH VMs, remove aility to build additional PHP-5.0 compatible VM, hide executor implementation details.

# c2c78dc9 25-Feb-2015 Dmitry Stogov <dmitry@zend.com>

Added specialized versions of DO_FCALL handler:
DO_ICALL - for internal functions
DO_UCALL - for user functions
DO_FCALL_BY_NAME - plain, most probably user, funcstions (not methods)

# 5f278e4d 24-Feb-2015 Dmitry Stogov <dmitry@zend.com>

Use cache_slot offsets instead of indexes (simplify run-time instructions)

# 8c81d80e 12-Feb-2015 Guilherme Blanco <guilhermeblanco@hotmail.com>

Made ZEND_ACC_TRAIT a saner value

CC_TRAIT valued as 0x120 is too magical to be comprehensible by others.

# 97fe15db 12-Feb-2015 Dmitry Stogov <dmitry@zend.com>

Fix "forech" statemt behaviour according to https://wiki.php.net/rfc/php7_foreach

Squashed commit of the following:

commit 1e41295097576dbce6c197ddb7507c07ccae3cbe
Author: Dmitry Stogov <dmitry@zend.com>
Date: Sat Jan 31 07:28:58 2015 +0300

Generalize HashTableIterator API to allows its usage without involvement of HashTable.nInternalPonter

commit 5406f21b11e563069d64045e599693b51c444b63
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jan 30 18:08:43 2015 +0300

Reduced alghorithms complexity

commit b37f1d58d2a141b6e1d980a461ccb588d4317d2e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jan 30 18:08:30 2015 +0300

Fixed test name

commit fb2d079645829b12ed4e55a461034df6400bc430
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jan 30 18:08:05 2015 +0300

API cleanup

commit 08302c0d6d1cab279b9f2129df03a057baddf2ff
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jan 30 14:20:46 2015 +0300

Make array_splice() to preserve foreach hash position

commit cc4b7be41e2e2b9b0d7a3c8e98466b8886692e6e
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jan 30 12:24:31 2015 +0300

Make internal function, operation on array passed by reference, to preserve foreach hash position

commit 5aa9712b0a30303aadfe3bdd8ae1f072ca3e6ba1
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jan 30 09:49:35 2015 +0300

Implement consistent behavior for foreach by value over plain object

commit 4c5b385ff53ae9f0b52572e98c4db801f56603b0
Author: Dmitry Stogov <dmitry@zend.com>
Date: Fri Jan 30 07:56:37 2015 +0300

More careful iterators update.

commit 721fc9e80d2ee8f2cd79c8c3cdceffae2c72de92
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jan 29 21:43:28 2015 +0300

Added new test

commit 15a23b1218b3e38630d677751a975907daa2cd54
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jan 29 21:05:02 2015 +0300

Reimplement iteration magic with HashTableIterators (see https://wiki.php.net/rfc/php7_foreach#implementation_details)

commit 10a3260b1f16b6075fd8140f673dfef4d5efea91
Author: Dmitry Stogov <dmitry@zend.com>
Date: Thu Jan 29 21:04:44 2015 +0300

New test

commit eef80c583762d1e98d177cdbb27e3a8a6b0c4539
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jan 28 16:52:21 2015 +0300

Fixed foreach by reference iteration over constant array

commit 61e739187391661e2d541947bec25d7dcc4479f3
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jan 28 14:59:54 2015 +0300

Fixed temporary variable re-allocation pass

commit 92e90c09f085c22707ff4a59201f016f56e0ef8b
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jan 28 12:44:57 2015 +0300

Fixed operand destruction in case of exceptions in iterator

commit dd2a36a2074bbb0cb31de00b66dcf2812d6d753f
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jan 28 10:02:34 2015 +0300


commit 4638f7b91407c48710007af82a68da0007c820f2
Author: Dmitry Stogov <dmitry@zend.com>
Date: Wed Jan 28 07:43:28 2015 +0300

Change "foreach" statement behavior (this is just a PoC yet)

- "foreach by value" don't relay on internal array/object pointer and doesnt perform array duplication. It just locks it incrementing reference counter. If the original array is modified by some code, the copy on write is performed and "foreach" still work with the old copy.

- it makes no difference if array given to "foreach by value" is reference itself

- "foreach by reference" still use internal array/object pointer and should work similar to PHP-5. (This id not completely implemented)

# 2b3bebfa 10-Feb-2015 Bob Weinand <bobwei9@hotmail.com>

Revert removal of two ReflectionParameter functions
Rather fix them for now by exempting function parameter defaults from *any* (non-ct) constant substitution (also from persistent constant substitution, which was already broken before)

# c7719ab4 01-Feb-2015 Andrea Faulds <ajf@ajf.me>

Refactor typehint lookup

# cc01e37e 10-Jan-2015 Andrea Faulds <ajf@ajf.me>

It Begins

# 5544e372 06-Jan-2015 Andrea Faulds <ajf@ajf.me>


# 1a28ad03 06-Jan-2015 Andrea Faulds <ajf@ajf.me>

Forbid scalar type hint names for use, class_alias

# 9e70d767 04-Feb-2015 Dmitry Stogov <dmitry@zend.com>

Move zend_object->guards into additional slot of zend_object->properties_table[]. As result size of objects without __get/__set/__unset/__isset magic methods is reduced.

# c8576c5a 08-Jan-2015 Levi Morrison <levim@php.net>

Implement return types

RFC is documented here: https://wiki.php.net/rfc/return_types

# 4d3e4d3b 10-Sep-2014 Nikita Popov <nikic@php.net>

Remove assignment of new by reference

# fc33f52d 15-Jan-2015 Xinchen Hui <laruence@php.net>

bump year

# 0579e827 15-Jan-2015 Xinchen Hui <laruence@php.net>

bump year

# 73c1be26 15-Jan-2015 Xinchen Hui <laruence@php.net>

Bump year

# b7a7b1a6 03-Jan-2015 Stanislav Malyshev <stas@php.net>

trailing whitespace removal

# f48c2327 01-Dec-2014 Guilherme Blanco <guilhermeblanco@hotmail.com>

Decoupled class declaration statement into more granular pieces.

# ab0b15b8 26-Dec-2014 Dmitry Stogov <dmitry@zend.com>

Optimized destruction of extra arguments passed to user functions.
If no refcounted arguments are passed, then destruction code is not triggered at all.
(Full rebuild required)

# fd4844e0 22-Dec-2014 Dmitry Stogov <dmitry@zend.com>

Removed useless checks

# 2646f7bc 22-Dec-2014 Dmitry Stogov <dmitry@zend.com>

Don't count variadic argument in zend_func.common.num_args. This allows faster CALL/RETURN code.

# 79354ba6 17-Dec-2014 Anatol Belski <ab@php.net>

fix integral constant overflow warning

as it's promoted to size_t when passed to ZEND_CALL_ARG

# e112f6a0 14-Dec-2014 Anatol Belski <ab@php.net>

second shot on removing TSRMLS_*

# bdeb220f 13-Dec-2014 Anatol Belski <ab@php.net>

first shot remove TSRMLS_* things

# 094d409b 22-Nov-2014 Guilherme Blanco <guilhermeblanco@hotmail.com>

Removed ZEND_ACC_FINAL_CLASS which is unnecessary. This also fixed some currently defined classes as final which were just not being considered as such before.

# 14e29f51 12-Dec-2014 Dmitry Stogov <dmitry@zend.com>

Reduced size of zend_op on 64-bit systems.

the main idea - the smaller the zend_op structure, the lees memory traffic is required to load VM instructions during execution. The patch reduces the size of each opcode from 48 to 32 bytes (saves 16 bytes for each opcode, and applications use thousands of opoceds). This reduced the number of CPU cache misses by 12% and improved performance of real-life apps by 1-2%.

The patch affects how constants and jump targets are represented in VM during execution. Previously they were implemented as absolute 64-bit pointers. Now they are relative 32-bit offsets.

In run-time constant now should be accessed as:
RT_CONSTANT(op_array, opine->op1) instead of opline->op1.zv
EX_CONSTANT(opline->op1) instead of opline->op1.zv

Jump targets:
OP_JMP_ADDR(opline, opline->op2) instead of opline->op2.jmp_addr

The patch doesn't change zend_op representation for 32-bit systems. They still use absolute addresses. The compile-time representation is also kept the same.

# 5dd427ea 03-Dec-2014 Dmitry Stogov <dmitry@zend.com>

Use zend_string* for op_array->arg_info[]->name and op_array->arg_info[]->class_name. For internal functions we still use char*.

# dcfe5877 28-Nov-2014 Dmitry Stogov <dmitry@zend.com>

Rename EX_VAR_2() into ZEND_CALL_VAR() and EX_VAR_NUM_2() into ZEND_CALL_VAR_NUM().

# 1da14c9f 28-Nov-2014 Dmitry Stogov <dmitry@zend.com>

Pack EX(frame_info) into EX(This).u1.v.reserved. Rename "frame"kind" into "call_kind" and VM_FRAME_... into ZEND_CALL_...

# 11384ba7 28-Nov-2014 Dmitry Stogov <dmitry@zend.com>

Pack EX(num_args) into EX(This).u2.num_args

# 9a36cb1a 28-Nov-2014 Dmitry Stogov <dmitry@zend.com>

Get rid of EX(scope). In most cases we use EG(scope) anyway. EX(scope) was used to switch EG(scope) back after call, but it's possibleto use EX(func)->common.scope instead.

# 216ef321 27-Nov-2014 Dmitry Stogov <dmitry@zend.com>

Changed "finally" handling. Removed EX(fast_ret) and EX(delayed_exception). Allocate and use additional IS_TMP_VAR slot on VM stack instead.

# 303d73ec 26-Nov-2014 Dmitry Stogov <dmitry@zend.com>

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.

# 75041379 06-Nov-2014 Dmitry Stogov <dmitry@zend.com>

Improved object property access.

# 8dedd863 22-Oct-2014 Dmitry Stogov <dmitry@zend.com>


# 95278779 16-Oct-2014 Dmitry Stogov <dmitry@zend.com>

Removed deprecated fields

# 75b5dc63 07-Oct-2014 Dmitry Stogov <dmitry@zend.com>

Reorder fields for better alignment on both 32-bit and 64-bit systems

# 67be34ec 07-Oct-2014 Dmitry Stogov <dmitry@zend.com>

Remove useless parts of EX(old_error_reporting)

# 33e137d4 07-Oct-2014 Dmitry Stogov <dmitry@zend.com>

Merged EX(frame_kind) and EX(flags) into single word

# 7c7b9184 05-Oct-2014 Dmitry Stogov <dmitry@zend.com>

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).

# bd9a2346 03-Oct-2014 Dmitry Stogov <dmitry@zend.com>

Replaced EG(This) and EX(object) with EX(This).
Internal functions now recieves zend_execute_data as the first argument.

# 9f7564b1 01-Oct-2014 Dmitry Stogov <dmitry@zend.com>

Removed zend_execute_data->prev_nested_call. Reuse prev_execute_data instead.

# 7cef08c5 22-Sep-2014 Dmitry Stogov <dmitry@zend.com>

Allocate copies of internal functions inherited in user classes at CG(arena), instead of permanent heap (malloc).

# 98891ee1 19-Sep-2014 Nikita Popov <nikic@php.net>

Simplify foreach flags

* In some places the code checked FE_FETCH_BYREF instead of
FE_RESET_REFERENCE and relied on them having the same value.
* Now the FE_RESET_* flags are dropped and everything uses

# c343ca4e 18-Sep-2014 Nikita Popov <nikic@php.net>

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.

# 5185baab 18-Sep-2014 Dmitry Stogov <dmitry@zend.com>

Changed "inline" into "zend_always_inline"

# 079409bb 15-Sep-2014 Nikita Popov <nikic@php.net>

Switch (un)mangle property name to size_t and zend_string

Also use the _ex variants where possible.

# f1bf5313 15-Sep-2014 Dmitry Stogov <dmitry@zend.com>

Replaced macro with better optimized inline function

# d5b0606a 01-Sep-2014 Stanislav Malyshev <stas@php.net>

Reintroduce fix from pull #770 in a PHP 7 way

# 1ff1a0dd 01-Sep-2014 Stanislav Malyshev <stas@php.net>

Revert "Merge branch 'PHP-5.6'"

This reverts commit aaf5689f4d6e523fd78e0291dbbcd78f3ea988dc, reversing
changes made to 481bf25b6ad70fcdc9c10f02b49c86a0bd4a3d0d.

# b73bea9c 29-Aug-2014 Nikita Popov <nikic@php.net>

Combine foreach copy / switch cond stacks

Now one common stack to handle both, which stores znodes instead of
full oplines (foreach copy stack) or switch entries (switch cond

Also removed EG(start_op) while at it.

# 545fd516 29-Aug-2014 Nikita Popov <nikic@php.net>

Don't distinguish between ast/list in parser

This removes the need to use $<ast>{n} or $<list>$ casts in the
reduction actions.

Keeping the distinction in the parser doesn't really give us any
benefit and only makes changing the grammar harder.

# f2b03701 27-Aug-2014 Dmitry Stogov <dmitry@zend.com>

Use 'const' qualifier for pointrs to code used at run-time (the code must not be changed)

# ee552b62 27-Aug-2014 Dmitry Stogov <dmitry@zend.com>

Reorder fields for better nenory consumtion and data locality on 64-bit systems

# 59848e3f 25-Aug-2014 Nikita Popov <nikic@php.net>

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.

# 4ea19a68 25-Aug-2014 Nikita Popov <nikic@php.net>

make bp type uint32_t everywhere

# 28b7a033 25-Aug-2014 Anatol Belski <ab@php.net>

master renamings phase 5

# 6f9f0bf2 25-Aug-2014 Anatol Belski <ab@php.net>

master renames phase 2

# c3e3c98e 25-Aug-2014 Anatol Belski <ab@php.net>

master renames phase 1

# 458f67cd 18-Aug-2014 Nikita Popov <nikic@php.net>

Fix encoding declaration handling

As the encoding declaration influences lexing it needs to be
immidiately handled in the parser.

# 59010bff 17-Aug-2014 Andrea Faulds <ajf@ajf.me>

Don't allow unbound scoped closures; make ->call used passed object as scope

# 025a7c30 17-Aug-2014 Anatol Belski <ab@php.net>


# 84e757d2 16-Aug-2014 Nikita Popov <nikic@php.net>

Drop znode extended attribute and unused union members

# 8ee2a4a9 16-Aug-2014 Anatol Belski <ab@php.net>

first shot on merging the core fro the int64 branch

# 32314f6b 14-Aug-2014 Keyur Govande <keyur@php.net>

Fix destruction order in zend_shutdown (bug #65463, #66036)

If Apache or a similar SAPI receives a signal during PHP processing
it calls zend_shutdown() without calling shutdown_executor().
#65463: If a module like Gearman or Memcached is loaded,
in the unfixed version it is unloaded by zend_destroy_modules() before the
CG(CLASS_TABLE) is destructed. When CG(CLASS_TABLE) is destructed,
any pointers to methods (specifically around destruction) in the unloaded
module's .so are now dangling and the process segfaults.
#66036: Any subclasses of an internal class like ArrayObject need
to be destructed in order: subclass first and then the internal class. In the
unfixed version zend_shutdown() clears the CG(CLASS_TABLE) from the head
of the list onwards, so internal classes are destructed first and user-defined
classes last. Internal classes are alloc/deallocated with malloc/free while
user-defined classes with emalloc/efree. If there's shared data between them
then efree() could be called instead of free() leading to a seg-fault.

# 4a3e501f 08-Aug-2014 Dmitry Stogov <dmitry@zend.com>


# ce1af1e4 05-Aug-2014 Dmitry Stogov <dmitry@zend.com>

Fixed bug #67725 (now we create immutable arrays only in SHM)

# 6cf89612 30-Jul-2014 Nikita Popov <nikic@php.net>

Support doc comments for propreties

# 0cd9cffb 30-Jul-2014 Nikita Popov <nikic@php.net>

Rename _tmp_compile_const_expr

Also remove recursive immutization of arrays there, because this
is already handled when the array is created.

# 85bf8b4f 30-Jul-2014 Andrea Faulds <ajf@ajf.me>

Fixed unbound scoped closure edge cases and added tests for them

# e403b27a 28-Jul-2014 Nikita Popov <nikic@php.net>

Remove old macro/function

# 4c05bec5 28-Jul-2014 Nikita Popov <nikic@php.net>

Remove some unused compiler globals

# 31a886c3 28-Jul-2014 Nikita Popov <nikic@php.net>

More dead code

# 55f53e29 28-Jul-2014 Nikita Popov <nikic@php.net>

zend_get_class_fetch_type works on zend_string

# 50aefcf0 28-Jul-2014 Nikita Popov <nikic@php.net>

Remove duplicate code

# 38c4125c 28-Jul-2014 Nikita Popov <nikic@php.net>

Cleanup dead/duplicate code

# 1d79fb30 28-Jul-2014 Nikita Popov <nikic@php.net>

Add zend_ast_list* variant to parser stack element

# bea85f58 26-Jul-2014 Nikita Popov <nikic@php.net>

Use more specific parser stack nodes

# 1ea9a2d9 26-Jul-2014 Nikita Popov <nikic@php.net>

Cleanup member modifier code

# df42793c 26-Jul-2014 Nikita Popov <nikic@php.net>

Create namespace_name via AST

# c0790712 26-Jul-2014 Nikita Popov <nikic@php.net>

zend_do_return -> zend_emit_final_return

# 9344a95a 26-Jul-2014 Nikita Popov <nikic@php.net>

Remove dead code

# a7fc995f 22-Jul-2014 Nikita Popov <nikic@php.net>

Dead code

# 2653b8b5 22-Jul-2014 Nikita Popov <nikic@php.net>

Handle __halt_compiler()

# de2f132f 22-Jul-2014 Nikita Popov <nikic@php.net>

Add NS error checks

Those can probably be implemented in a better way now...

# 776800b0 22-Jul-2014 Nikita Popov <nikic@php.net>

Discard NS doc comments

# 130b6340 22-Jul-2014 Nikita Popov <nikic@php.net>

Code cleanup

# cc0bef66 22-Jul-2014 Nikita Popov <nikic@php.net>

Fix namespace\, maybe

# 9c69c41a 22-Jul-2014 Nikita Popov <nikic@php.net>

Port top level stmt

Problem: namespace\foo no longer works :/

# b6c9eb21 22-Jul-2014 Nikita Popov <nikic@php.net>

Port constant declaration

# 64151ec3 21-Jul-2014 Nikita Popov <nikic@php.net>

Port function/const use

# 573d25b5 21-Jul-2014 Nikita Popov <nikic@php.net>

Drop dead code

# 6c6dd84c 21-Jul-2014 Nikita Popov <nikic@php.net>

Dead code

# 00531551 21-Jul-2014 Nikita Popov <nikic@php.net>

Mostly finish class declarations (~50 failing tests)

# e572a326 19-Jul-2014 Nikita Popov <nikic@php.net>

Dead code

# 1aaaedc1 19-Jul-2014 Nikita Popov <nikic@php.net>

Dead code

# 09309a54 19-Jul-2014 Nikita Popov <nikic@php.net>

Remove dead code

# 8ff00e6e 19-Jul-2014 Xinchen Hui <laruence@php.net>

Improve fix for #66608

# 0eab81f3 18-Jul-2014 Nikita Popov <nikic@php.net>

Remove bits of dead code

# de433d4c 18-Jul-2014 Xinchen Hui <laruence@php.net>

Fixed bug #66608 (Incorrect behavior with nested "finally" blocks)

# 1ee3277a 14-Jul-2014 Nikita Popov <nikic@php.net>

Port parameter defs

Has one bug re \self

# 484ad869 12-Jul-2014 Nikita Popov <nikic@php.net>

Moar removal

# f9ed8346 12-Jul-2014 Nikita Popov <nikic@php.net>

Remove more dead code

# b934dfe0 12-Jul-2014 Nikita Popov <nikic@php.net>

Remove dead code

# 8577f58e 12-Jul-2014 Nikita Popov <nikic@php.net>

Store (bad) estimate of lineno with ast

Currently not used yet

# 6c8db864 11-Jul-2014 Dmitry Stogov <dmitry@zend.com>

Implemented builtin instruction for strlen()

# 28926540 07-Jul-2014 Nikita Popov <nikic@php.net>

Port echo

# 5aa91be5 07-Jul-2014 Dmitry Stogov <dmitry@zend.com>

Simplify call-frame handling

# 2d4c962c 05-Jul-2014 Nikita Popov <nikic@php.net>

Fix ZTS build

# 17c2d16d 04-Jul-2014 Nikita Popov <nikic@php.net>

Refactor class name resolution as well

# b7715c7e 30-Jun-2014 Dmitry Stogov <dmitry@zend.com>

Refactored parameter passing mechanism.

In PHP-5.6 and below each argument passed to user function was copies on VM stack twice.
Now we always have ZEND_INIT_FCALL (or simular) opcode that pushes "call frame" on top of VM stack.
"Call frame" is actually the same zend_execute_data structure.
All the following ZEND_SEND instructions push arguments on top of the stack in a way that they directly comes into corresponding CV variables of the called frame. Extra arguments are copied at the end of stack frame (after all CV and TMP variables) on function enterance.

There are two minor incompatibilities:
1) It's not allowed to decalre functions redefining arguments e.g. "function foo($a,$a) {}".
2) func_get_arg() and func_get args() return the current value of argument and not the original value that was sent.

# 3f0ee308 30-Jun-2014 Dmitry Stogov <dmitry@zend.com>

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.

# fb98dd31 28-Jun-2014 Nikita Popov <nikic@php.net>

Some refactoring of fn/const resolution

# 7eebe229 27-Jun-2014 Dmitry Stogov <dmitry@zend.com>

Changed zend_execute_data layout to reduce memory overhead

# d6bd21ea 27-Jun-2014 Dmitry Stogov <dmitry@zend.com>

Use fast comparison for (func->type == ZEND_USER_FUNCTION || func->type == ZEND_EVAL_CODE)

# 032f3359 26-Jun-2014 Dmitry Stogov <dmitry@zend.com>

Keep extra args in the same VM stack segment (after all CV and TMP vars)

# 64dab4b9 26-Jun-2014 Nikita Popov <nikic@php.net>

Drop dead code

# c6978139 26-Jun-2014 Dmitry Stogov <dmitry@zend.com>

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)

# 43477bc7 23-Jun-2014 Dmitry Stogov <dmitry@zend.com>

Refactoring: use call_frames instead of call_slots

# e26c6d66 23-Jun-2014 Nikita Popov <nikic@php.net>

Implement constant expression folding as a separate pass

# 90d36554 21-Jun-2014 Nikita Popov <nikic@php.net>

Support string interpolation

# 86db3942 21-Jun-2014 Nikita Popov <nikic@php.net>

Remove dead code

# 657762ee 19-Jun-2014 Nikita Popov <nikic@php.net>

AST stage 2.4

# 55ab55c4 19-Jun-2014 Nikita Popov <nikic@php.net>

Add ability to specify additional attr in AST

# 89ecd73a 19-Jun-2014 Nikita Popov <nikic@php.net>

Make ast->children a uint

Future optimization: only use uint for dynamic lists and use a
uchar or even an introspection function to get the child count.

# 0c81b3ea 14-Jun-2014 Nikita Popov <nikic@php.net>

Remove dead code

# 0ec49bba 14-Jun-2014 Nikita Popov <nikic@php.net>

AST stage 1.9

Expressions (mostly) use the AST

# 258a733e 07-Jun-2014 Nikita Popov <nikic@php.net>

AST-based compiler: Stage 1

# a8c15950 30-May-2014 Nikita Popov <nikic@php.net>

LTR static member access

# 95a3a126 30-May-2014 Nikita Popov <nikic@php.net>

Change precedence of $ operator

$$foo['bar'] is now interpreted as ${$foo}['bar'] rather than

# b3b616cf 29-May-2014 Dmitry Stogov <dmitry@zend.com>

Introduced immutable arrays. They don't need to be copyed and may be used directly from SHM.

# 2402d6cb 11-May-2014 Xinchen Hui <laruence@php.net>

Refactor MySQLi (incompleted, only compilable now)

# 0c6a6f0f 07-May-2014 Dmitry Stogov <dmitry@zend.com>

Re-applyed Bob's patch with minor fixes

# 4ecc5279 06-May-2014 Dmitry Stogov <dmitry@zend.com>

Reverted Bob's patch (it breaks many tests when run with opcache and needs to be fixed first).

# f3c1881f 06-May-2014 Bob Weinand <bobwei9@hotmail.com>

Re-added fix for bug #66015 and adapted for phpng branch

# 65e2ed6e 24-Apr-2014 Dmitry Stogov <dmitry@zend.com>

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.

# 7e424f5a 22-Apr-2014 Dmitry Stogov <dmitry@zend.com>

Use symbolic names instead of magic constants + optimization

# 3d3a55cb 22-Apr-2014 Nikita Popov <nikic@php.net>

Pass expected array size hint in INIT_ARRAY

To avoid unnecessary rehashes

# 7584ae32 22-Apr-2014 Dmitry Stogov <dmitry@zend.com>

Fixed compilaation warnings

# 5d479ef6 21-Apr-2014 Dmitry Stogov <dmitry@zend.com>

ZEND_SEND_* optimization

# f71da392 21-Apr-2014 Dmitry Stogov <dmitry@zend.com>

Use ZEND_HASH_FOEACH_* instead of zend_hash_apply_*

# ea2e1bb1 18-Apr-2014 Dmitry Stogov <dmitry@zend.com>

Optimized zend_leave_helper()

# 5c02e0fc 17-Apr-2014 Dmitry Stogov <dmitry@zend.com>

Cache op_array->run_time_cache in zend_execute_data for faster access

# e96073b1 17-Apr-2014 Dmitry Stogov <dmitry@zend.com>

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.

# 050d7e38 15-Apr-2014 Dmitry Stogov <dmitry@zend.com>

Cleanup (1-st round)

# f614fc68 11-Apr-2014 Bob Weinand <bobwei9@hotmail.com>

Fix bug #66015 by reverting "Removed operations on constant arrays."

# 20f2e598 09-Apr-2014 Nikita Popov <nikic@php.net>

Fix ZTS build

This only makes it compile, it doesn't actually work, presumably
because interned strings are assumed in some places.

# ea85451b 27-Mar-2014 Dmitry Stogov <dmitry@zend.com>

Refactored data structures to keep zend_object* instead of a whole zval in some places

# 9a8fbdf2 27-Mar-2014 Dmitry Stogov <dmitry@zend.com>

Use CV variable offset instead of CV variable number

# ef6919e6 21-Mar-2014 Dmitry Stogov <dmitry@zend.com>

Fixed static data cleanup

# aa5f5530 17-Mar-2014 Dmitry Stogov <dmitry@zend.com>

Refactored EG(active_symbol_table) to be zend_array* instead of HashTable*

# 51494f25 14-Mar-2014 Dmitry Stogov <dmitry@zend.com>

Don't include trailing zero into hash caclculation

# d3b484df 26-Feb-2014 Nikita Popov <nikic@php.net>

Disallow use of positional args after unpacking

This commit disallows the use of trailing positional arguments
after argument unpacking was used. The following calls are no
longer valid:

fn(...$array, $var);
fn(...$array1, $var, ...$array2);

However, all of the following continue to be valid:

fn($var, ...$array);
fn(...$array1, ...$array2);
fn($var, ...$array1, ...$array2);

The reason behind this change is a stack allocation issue pointed
out by Dmitry: As of PHP 5.5 the stack necessary for pushing
arguments is precomputed and preallocated, as such the individual
SEND opcodes no longer verify that there is enough stack space.
The unpacked arguments will occupy some of that preallocated
space and as such following positional arguments could write past
a stack page boundary.

An alternative resolution for this issue is to ensure that there
is enough space for the remaining arguments in the UNPACK opcode.
However making this allocation precise (rather than using a
conversative over-estimate) would require some effort. Given that
this particular aspect of the feature wasn't very popular in the
first place, it doesn't seem worth the effort.

# 2eae1879 25-Feb-2014 Nikita Popov <nikic@php.net>

Store arg_num in fcall entry

Instead of storing the argument number in the znode of the parameter
list, store it in fcall->arg_num. This mainly cleans up the parameter
parsing code, which previously had to duplicate all rules (this
becomes more excessive as more features are added, e.g. named params
would already require a minimum of 14 rules...)

# cefa7f8d 25-Feb-2014 Nikita Popov <nikic@php.net>

Introduce zend_function_call_entry structure

Instead of directly pushing the zend_function* onto the
function_call_stack, push this structure. This allows us to store
additional data on this stack.

# 47fb1985 21-Feb-2014 Xinchen Hui <laruence@gmail.com>

Revert "Use zend_string for arg_info to fixed segfault in Zend/tests/argument_restriction_003.phpt"

This reverts commit b96318105b8a908ec3cb294b8133e36d1b8cba7a.

# b9631810 21-Feb-2014 Xinchen Hui <laruence@gmail.com>

Use zend_string for arg_info to fixed segfault in Zend/tests/argument_restriction_003.phpt

# bb58ea34 18-Feb-2014 Dmitry Stogov <dmitry@zend.com>

Use better data structures (incomplete)

# 1e752ce9 18-Feb-2014 Sara Golemon <pollita@php.net>

Add __debugInfo() magic method

class Foo {
private $val = 'Random, meaningless data';

public function count() { return 42; }

public function __debugInfo() {
return ['count' => $this->count()];

$f = new Foo;

# a0fe8e5a 17-Feb-2014 Dmitry Stogov <dmitry@zend.com>

Use better data structures (incomplete)

# 2b9b9afa 17-Feb-2014 Dmitry Stogov <dmitry@zend.com>

Use better data structures (incomplete)

# 4e66abad 12-Feb-2014 Dmitry Stogov <dmitry@zend.com>

Use better data structures (incomplete) - refactored return_value handling

# e2ea9a73 12-Feb-2014 Dmitry Stogov <dmitry@zend.com>

Use better data structures (incomplete)

# f4cfaf36 10-Feb-2014 Dmitry Stogov <dmitry@zend.com>

Use better data structures (incomplete)

# 6fb34345 03-Feb-2014 Anatol Belski <ab@php.net>

fix type for op num

# 7af9b01e 03-Feb-2014 Anatol Belski <ab@php.net>

fixed length property types in zend_property_info

# 89035184 03-Feb-2014 Anatol Belski <ab@php.net>

fixed types for num_args at various places

# 2c47dfba 29-Aug-2013 Nikita Popov <nikic@php.net>

Implement argument unpacking

RFC: https://wiki.php.net/rfc/argument_unpacking

# c081ce62 03-Jan-2014 Xinchen Hui <laruence@php.net>

Bump year

# 47c90277 03-Jan-2014 Xinchen Hui <laruence@php.net>

Bump year

# c0d060f5 03-Jan-2014 Xinchen Hui <laruence@php.net>

Bump year

# e11fbd97 22-Dec-2013 Anatol Belski <ab@php.net>

next wave of revamp in Zend

# f58d0b35 19-Dec-2013 Anatol Belski <ab@php.net>

massive update semantical LONG vs INT replacements

# b1abe4ca 18-Dec-2013 Anatol Belski <ab@php.net>

mass replacement for zend_size_t/php_size_t

# 794a888a 12-Dec-2013 Xinchen Hui <laruence@gmail.com>

Fixed bug #65784 (Segfault with finally).

# 57c1335f 28-Nov-2013 Dmitry Stogov <dmitry@zend.com>

Don't check argument types for internal functions without type hinting

# 43e3933f 27-Nov-2013 Dmitry Stogov <dmitry@zend.com>

Removed deprecated AI_SET_PTR()s

# da553a81 09-Nov-2013 Adam Harvey <aharvey@php.net>

Fix constant resolution.

# 5615326e 08-Nov-2013 Anatol Belski <ab@php.net>

fixed fetching $this

# 11d4bcd7 07-Nov-2013 Anatol Belski <ab@php.net>

remaining replacements ulong vs zend_uint_t

# 9647c61d 06-Nov-2013 Dmitry Stogov <dmitry@zend.com>

Constant expressions refactoring

# ad967e13 03-Nov-2013 Bob Weinand <bobwei9@hotmail.com>

Added a few more operators

# 23617458 31-Oct-2013 Bob Weinand <bobwei9@hotmail.com>

Working commit for constant scalar expressions (with constants).
Tests will follow.

# c224e239 01-Jul-2013 Anthony Ferrara <ircmaxell@gmail.com>

Re-do a lot of it using a conditional define, and legacy type information for APIs

# 0ceea8a2 26-Sep-2013 Nikita Popov <nikic@php.net>

Don't track parameter number in separate znode

We already track it in the op array already.

# 0d7a6388 26-Sep-2013 Nikita Popov <nikic@php.net>

Implement variadic function syntax

As per RFC: https://wiki.php.net/rfc/variadics

# ef9e003b 12-Sep-2013 Nikita Popov <nikic@php.net>

Small cleanup in class name resolution of compiler

* The fetch_type and check_ns_name parameters of
zend_resolve_class_name were unused and are now removed.
* ZEND_FETCH_CLASS_GLOBAL is no longer used (no code actually
checking for it).
* The checks for usage of "namespace" as class name were
unnecessary as that situation can't occur anyways.

# 612e77e5 30-Aug-2013 Anthony Ferrara <ircmaxell@gmail.com>

Fix issue with global fallback not in global space

# 6263f221 25-Aug-2013 Igor Wiedler <igor@wiedler.ch>

Handle case sensivity of constants (nikic)

# 85d4cfb0 24-Aug-2013 Igor Wiedler <igor@wiedler.ch>

Disallow using functions/consts defined in the same file

* Keep track of defined function and const filenames
* Prohibit use function foo if function foo exists
* Prohibit use const foo if const foo exists

# 4adf49ee 23-Jul-2013 Igor Wiedler <igor@wiedler.ch>

Import namespaced constants via new 'use const' sequence

# e1125a6a 23-Jul-2013 Igor Wiedler <igor@wiedler.ch>

Correctly distinguish between functions and constants

So far 'use function' applied to both constants and functions. This
patch correctly separates the two.

# 5dd41627 16-Jul-2013 Igor Wiedler <igor@wiedler.ch>

Add new 'use function' sequence for importing namespaced functions

This is specified as the use_function RFC:

* https://wiki.php.net/rfc/use_function

# ea58b542 01-Jul-2013 Anthony Ferrara <ircmaxell@gmail.com>

Re-do a lot of it using a conditional define, and legacy type information for APIs

# 85e5e607 27-Mar-2013 Dmitry Stogov <dmitry@zend.com>

Fixed bug #64529 (Ran out of opcode space)

# 01049ca7 08-Mar-2013 Xinchen Hui <laruence@php.net>

Fixed bug #61025 (__invoke() visibility not honored)

# 8991ed01 19-Jan-2013 Lars Strojny <lstrojny@php.net>

Class Name Resolution As Scalar Via "class" Keyword

# 62059c16 14-Jan-2013 Xinchen Hui <laruence@php.net>

Fixed bug #63980 (object members get trimmed by zero bytes)

# a666285b 01-Jan-2013 Xinchen Hui <laruence@php.net>

Happy New Year

# 0a7395e0 01-Jan-2013 Xinchen Hui <laruence@php.net>

Happy New Year

# 831fbcf3 01-Jan-2013 Xinchen Hui <laruence@php.net>

Happy New Year

# 3f8c729e 25-Dec-2012 Dmitry Stogov <dmitry@zend.com>

Traits refactoring

# 6b0b4bf8 12-Dec-2012 Dmitry Stogov <dmitry@zend.com>

An exception thrown in try or catch block is disacarded by return statement in finally block.

# 7651d645 04-Dec-2012 Dmitry Stogov <dmitry@zend.com>

Optimized access to temporary and compiled VM variables

# 70f83f35 30-Nov-2012 Dmitry Stogov <dmitry@zend.com>

. The VM stacks for passing function arguments and syntaticaly nested calls were merged into a single stack. The stack size needed for op_array execution is calculated at compile time and preallocated at once. As result all the stack push operatins don't require checks for stack overflow any more.
. Generators implementation was improved using the new VM stack. Now it's a bit more clear and faster.

# eb4825b5 22-Nov-2012 Dmitry Stogov <dmitry@zend.com>

Improved "finally" im[plementation

# 6c0508f8 05-Sep-2012 Dmitry Stogov <dmitry@zend.com>

Fixed bug #62907 (Double free when use traits)

# cec17869 27-Aug-2012 Xinchen Hui <laruence@php.net>

Fixed bug #62938 (zend_do_bind_catch() used without declaration)

# bd70d155 25-Aug-2012 Nikita Popov <nikic@php.net>

Remove implementation stubs for yield delegation

I decided to leave out yield delegation for an initial proposal, so remove
the stubs for it too.

# 35951d4b 25-Aug-2012 Xinchen Hui <laruence@php.net>

Support list in foreach

RFC: https://wiki.php.net/rfc/foreachlist

# 60a29791 22-Aug-2012 Xinchen Hui <laruence@php.net>

Fixed bug that jmp in try block jmp over finally block

Refactor the implemention, make codes clear

# 703a4e39 22-Aug-2012 Xinchen Hui <laruence@php.net>


# 57e7c7bd 18-Aug-2012 Xinchen Hui <laruence@php.net>


# f2a8912e 17-Aug-2012 Xinchen Hui <laruence@php.net>

Refactor examing of jumping out of finally block

# c64f4e73 14-Aug-2012 Xinchen Hui <laruence@php.net>

Add functions declarations, use tabs

# 80d5ae3c 13-Aug-2012 Xinchen Hui <laruence@php.net>

Implemented 'finally' keywords for php

RFC: https://wiki.php.net/rfc/finally
FR: https://bugs.php.net/bug.php?id=32100
and I have got some improvment ideas(performance), will implemented
later. thanks

# 80748631 21-Jul-2012 Nikita Popov <nikic@php.net>

Require parenthesis around yield expressions

If yield is used in an expression context parenthesis are now required.
This ensures that the code is unambiguos.

Yield statements can still be used without parenthesis (which should be
the most common case).

Also yield expressions without value can be used without parenthesis,
too (this should be the most common case for coroutines).

If the yield expression is used in a context where parenthesis are required
anyway, no additional parenthesis have to be inserted.


// Statements don't need parenthesis
yield $foo;
yield $foo => $bar;

// Yield without value doesn't need parenthesis either
$data = yield;

// Parentheses don't have to be duplicated
foo(yield $bar);
if (yield $bar) { ... }

// But we have to use parentheses here
$foo = (yield $bar);

This commit also fixes an issue with by-ref passing of $foo[0] like
variables. They previously weren't properly fetched for write.

Additionally this fixes valgrind warnings which were caused by access to
uninitialized memory in zend_is_function_or_method_call().

# c9709bfb 19-Jul-2012 Nikita Popov <nikic@php.net>

Remove asterix modifier (*) for generators

Generators are now automatically detected by the presence of a `yield`
expression in their body.

This removes the ZEND_SUSPEND_AND_RETURN_GENERATOR opcode. Instead
additional checks for ZEND_ACC_GENERATOR are added to the fcall_common
helper and zend_call_function.

This also adds a new function zend_generator_create_zval, which handles
the actual creation of the generator zval from an op array.

I feel like I should deglobalize the zend_create_execute_data_from_op_array
code a bit. It currently changes EG(current_execute_data) and
EG(opline_ptr) which is somewhat confusing (given the name).

# d939d2de 11-Jun-2012 Nikita Popov <nikic@php.net>

Add sceleton for yield* expression

This does not yet actually implement any delegation.

# bc08c2cf 30-May-2012 Nikita Popov <nikic@php.net>

Add support for yielding keys

Keys are yielded using the

yield $key => $value

syntax. Currently this is implemented as a statement only and not as an
expression, because conflicts arise considering nesting and use in arrays:

yield yield $a => $b;
// could be either
yield (yield $a) => $b;
// or
yield (yield $a => $b);

Once I find some way to resolve these conflicts this should be available
as an expression too.

Also the key yielding code is rather copy-and-past-y for the value yielding
code, so that should be factored out.

# 3600914c 29-May-2012 Nikita Popov <nikic@php.net>

Add support for $generator->send()

Yield now is an expression and the return value is the value passed to
$generator->send(). By default (i.e. if ->next() is called) the value is

Unlike in Python ->send() can be run without priming the generator with a
->next() call first.

# e14cfafc 19-May-2012 Nikita Popov <nikic@php.net>

Add zend_do_suspend_if_generator calls

The execution of generator functions will be suspended right after the
arguments were RECVed. This will be done in zend_do_suspend_if_generator.

# 252f6234 19-May-2012 Nikita Popov <nikic@php.net>

Add flag for generator functions

Generator functions have to specify the * (asterix) modifier after the
function keyword. If they do so the ZEND_ACC_GENERATOR flag is added to
the fn_flags.

# 0cb4849e 11-May-2012 Reeze Xia <reeze.xia@gmail.com>

Cleanup useless function declaration for traits

# e4ca0ed0 01-Jan-2012 Felipe Pena <felipe@php.net>

- Year++

# 8775a375 01-Jan-2012 Felipe Pena <felipe@php.net>

- Year++

# 4e198252 01-Jan-2012 Felipe Pena <felipe@php.net>

- Year++

# cacf3639 08-Nov-2011 Dmitry Stogov <dmitry@php.net>

Fixed bug #60104 (Segmentation Fault in pdo_sqlite when using sqliteCreateFunction())

# e8683027 08-Nov-2011 Dmitry Stogov <dmitry@php.net>

Fixed bug #60104 (Segmentation Fault in pdo_sqlite when using sqliteCreateFunction())

# 4a25a774 13-Sep-2011 Dmitry Stogov <dmitry@php.net>

Fixed ZE specific compile warnings (Bug #55629)

# e43ff135 13-Sep-2011 Dmitry Stogov <dmitry@php.net>

Fixed ZE specific compile warnings (Bug #55629)

# c5901b64 10-Jul-2011 Felipe Pena <felipe@php.net>

- Added zend_is_auto_global_quick function

# 62e4cfc2 10-Jul-2011 Felipe Pena <felipe@php.net>

- Added zend_is_auto_global_quick function

# 0fe6fd9e 09-Jul-2011 Felipe Pena <felipe@php.net>

- Changed zend_resolve_class_name() prototype
# No needed to pass fetch_type as pointer here

# 70cacfd3 09-Jul-2011 Felipe Pena <felipe@php.net>

- Changed zend_resolve_class_name() prototype
# No needed to pass fetch_type as pointer here

# c6b73c85 20-Jun-2011 Felipe Pena <felipe@php.net>

- Fix broken code in 64bit

# dcccfc22 20-Jun-2011 Felipe Pena <felipe@php.net>

- Fix broken code in 64bit

# d6f5f378 19-Jun-2011 Felipe Pena <felipe@php.net>

- Minor optimization (avoid to re-hash already computed var name hash)

# 142ce5c9 19-Jun-2011 Felipe Pena <felipe@php.net>

- Minor optimization (avoid to re-hash already computed var name hash)

# 80d432ca 12-Jun-2011 Felipe Pena <felipe@php.net>

- Avoid zend_do_ticks() call for each statement in parsing

# e613aae6 12-Jun-2011 Felipe Pena <felipe@php.net>

- Avoid zend_do_ticks() call for each statement in parsing

# 86ed2eeb 12-Jun-2011 Felipe Pena <felipe@php.net>

- Avoid zend_do_ticks() call for each statement in parsing

# 927bf09c 01-Jan-2011 Felipe Pena <felipe@php.net>

- Year++

# 0203cc3d 01-Jan-2011 Felipe Pena <felipe@php.net>

- Year++

# d88515e1 19-Dec-2010 Stefan Marr <gron@php.net>

Fixed naming of parameters, was inconsistent with implementation.

# d0c144d7 01-Dec-2010 Stefan Marr <gron@php.net>

Removed old commented function prototypes.
# Was referring to old trait-related code that is long gone

# 76a8811c 30-Nov-2010 David Soria Parra <dsp@php.net>

C comments instead of C++ comments

# f2df6a4a 15-Sep-2010 Dmitry Stogov <dmitry@php.net>

- Improved memory usage
. zend_function.pass_rest_by_reference is replaced by
ZEND_ACC_PASS_REST_BY_REFERENCE in zend_function.fn_flags
. zend_function.return_reference is replaced by ZEND_ACC_RETURN_REFERENCE
in zend_function.fn_flags
. zend_arg_info.required_num_args removed. it was needed only for internal
functions. Now the first arg_info for internal function (which has special
meaning) is represented by zend_internal_function_info structure.
. zend_op_array.size, size_var, size_literal, current_brk_cont,
backpatch_count moved into CG(context), because they are used only during
. zend_op_array.start_op is moved into EG(start_op), because it's used
only for 'interactive' execution of single top-level op-array.
. zend_op_array.done_pass_two is replaced by ZEND_ACC_DONE_PASS_TWO in
. op_array.vars array is trimmed (reallocated) during pass_two.
. zend_class_entry.constants_updated is replaced by
ZEND_ACC_CONSTANTS_UPDATED in zend_class_entry.ce_flags
. the size of zend_class_entry is reduced by sharing the same memory space
by different information for internal and user classes.
See zend_class_inttry.info union.

# f0c8366a 08-Jul-2010 Dmitry Stogov <dmitry@php.net>

- use interned strings for auto globals
- $GLOBALS became a JIT autoglobal, so it's initialized only if used (this may affect opcode caches)

# 3ea3bbac 06-Jul-2010 Felipe Pena <felipe@php.net>

- Fix ZTS build

# 1a1178a6 06-Jul-2010 Dmitry Stogov <dmitry@php.net>

eliminated unnecessary iterations during request startup/shutdown

# a09b7138 01-Jul-2010 Dmitry Stogov <dmitry@php.net>

Used more sutable type. Reduced memory usage.

# cac310d8 10-Jun-2010 Dmitry Stogov <dmitry@php.net>

Fixed bug #52001 (Memory allocation problems after using variable variables)

# c5237d82 24-May-2010 Dmitry Stogov <dmitry@php.net>

Added caches to eliminate repeatable run-time bindings of functions, classes, constants, methods and properties

# 1bc92476 20-May-2010 Derick Rethans <derick@php.net>

- Added scalar typehinting.

# cd6415f1 22-Apr-2010 Stefan Marr <gron@php.net>

Implemented Traits for PHP as proposed in the RFC [TRAITS]

# RFC http://wiki.php.net/rfc/horizontalreuse#traits_-_reuse_of_behavior
# Ok, here we go, I guess that will result in more discussion, which is fine
# by me. But now, the patch is here, and properly archived.
# See below a list of notes to the patch, it also includes a list of
# points which should be fixed
# Internals of the Traits Patch
# -----------------------------
# Open TODOs
# """"""""""
# - Reflection API
# - support for traits for internal classes
# - currently destroy_zend_class does not handle that case
# Introduced Structures
# """""""""""""""""""""
# Data structures to encode the composition information specified in the
# source:
# - zend_trait_method_reference
# - zend_trait_precedence
# - zend_trait_alias
# Changes
# """""""
# zend_class_entry
# - uses NULL terminated lists of pointers for
# - trait_aliases
# - trait_precedences
# - do you prefer an explicit counter?
# - the information is only necessary during class composition
# but might be interesting for reflection
# - did not want to blow up class further with not really necessary length counters
# added keywords
# - trait
# - insteadof
# Added opcodes
# - similar to ZEND_ADD_INTERFACE
# - adds the trait to the list of traits of a class, no actual composition done
# - emitted in zend_do_end_class_declaration
# - concludes the class definition and will initiate the trait composition
# when the class definition is encountered during runtime
# Added Flags
# ZEND_ACC_TRAIT = 0x120
# zend_vm_execute.h
# - not sure whether the handler initialization (ZEND_ADD_TRAIT_SPEC_HANDLER,
# ZEND_BIND_TRAITS_SPEC_HANDLER) is correct, maybe it should be more selective
# zend_compile.c
# - refactored do_inherit_method_check
# split into do_inherit_method_check and do_inheritance_check_on_method
# - added helper functions use a '_' as prefix and are not mentioned in the
# headers
# - _copy_functions
# prepare hash-maps of functions which should be merged into a class
# here the aliases are handled
# - _merge_functions
# builds a hash-table of the methods which need to be added to a class
# does the conflict detection
# - reused php_runkit_function_copy_ctor
# - it is not identical with the original code anymore, needed to update it
# think I fixed some bugs, not sure whether all have been reported back to runkit
# - has to be renamed, left the name for the moment, to make its origin obvious
# - here might be optimization potential
# - not sure whether everything needs to be copied
# - copying the literals might be broken
# - added it since the literals array is freed by efree and gave problems
# with doubled frees
# - all immutable parts of the zend_op array should not be copied
# - am not sure which parts are immutable
# - and not sure how to avoid doubled frees on the same arrays on shutdown
# - _merge_functions_to_class
# does the final merging with the target class to handle inherited
# and overridden methods
# - small helper for NULL terminated lists
# zend_init_list, zend_add_to_list
# zend_language_parser.y
# - reused class definition for traits
# - there should be something with regard to properties
# - if they get explicitly defined, it might be worthwhile to
# check that there are no collisions with other traits in a composition
# (however, I would not introduce elaborate language features to control that
# but a notice for such conflicts might be nice to the developers)

# 453b49ed 20-Apr-2010 Dmitry Stogov <dmitry@php.net>

Added a number of small performance tweaks and optimizations
. ZEND_RECV now always has IS_CV as its result
. ZEND_CATCH now has to be used only with constant class names
. ZEND_FETCH_DIM_? may fetch array and dimension operans in a different order

# dd5c478b 20-Apr-2010 Dmitry Stogov <dmitry@php.net>

Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed.

# 94dd8372 20-Apr-2010 Dmitry Stogov <dmitry@php.net>

Changed the structure of op_array.opcodes. The constant values are moved from opcode operands into a separate literal table

# c93a4f19 19-Apr-2010 Stanislav Malyshev <stas@php.net>

restore $this support for closures to its former glory

# 13a78acb 05-Jan-2010 Sebastian Bergmann <sebastian@php.net>

sed -i "s#1998-2009#1998-2010#g" **/*.c **/*.h **/*.php

# 35e83d2a 05-Jan-2010 Sebastian Bergmann <sebastian@php.net>

sed -i "s#1998-2009#1998-2010#g" **/*.c **/*.h **/*.php

# d2281d1d 05-Jan-2010 Sebastian Bergmann <sebastian@php.net>

sed -i "s#1998-2009#1998-2010#g" **/*.c **/*.h **/*.php

# 08f4721e 18-Dec-2009 Stanislav Malyshev <stas@php.net>

fix regression bug #50394: Reference argument converted to value in __call

# cb7a21a4 05-Jun-2009 Brian Shire <shire@php.net>

MFH: Make pass_two visible to extensions with ZEND_API (required for optimizer).

# d2ef7b42 05-Jun-2009 Brian Shire <shire@php.net>

Make pass_two visible to extensions with ZEND_API (required for optimizer).

# afa4e41c 23-May-2009 Andrei Zmievski <andrei@php.net>

Implement JIT request decoding support for $_GET and $_POST.

# c6d89bd4 26-Jan-2009 Christian Seiler <cseiler@php.net>

[DOC] Remove $this support in closures for PHP 5.3 beta 1
- Implementation notes here:

# 85489ac0 21-Jan-2009 Dmitry Stogov <dmitry@php.net>

Fixed bug #47165 (Possible memory corruption when passing return value by reference)

# b5c6e15a 20-Jan-2009 Dmitry Stogov <dmitry@php.net>

Removed wrong warning message

# 666bf10d 20-Jan-2009 Dmitry Stogov <dmitry@php.net>

Removed wrong warning message

# ef49b9a8 31-Dec-2008 Sebastian Bergmann <sebastian@php.net>

MFH: Bump copyright year, 3 of 3.

# 08659c2d 31-Dec-2008 Sebastian Bergmann <sebastian@php.net>

MFH: Bump copyright year, 3 of 3.

# 7f4dc870 31-Dec-2008 Sebastian Bergmann <sebastian@php.net>

Bump copyright year, 3 of 3.

# 3e94ce6a 19-Dec-2008 SVN Migration <svn@php.net>

This commit was manufactured by cvs2svn to create tag 'NEWS'.

# 636b2c9a 04-Dec-2008 Stanislav Malyshev <stas@php.net>

MF5: Merge namespaces changes

# ea45b713 25-Nov-2008 Dmitry Stogov <dmitry@php.net>

Added support for namespaces with brackets. (Greg)

# 1b4134c0 11-Nov-2008 Stanislav Malyshev <stas@php.net>

Namespace resolution streamlining patch
[DOC] new resolution rules should be documented soon

# 7126de49 04-Nov-2008 Marcus Boerger <helly@php.net>

- Next step in namespaces, using / as namespace separator.

# 22a5aea1 29-Aug-2008 Matt Wilmas <mattwil@php.net>

MFH: - Updated unary_op_type typedef with TSRMLS_DC
- Added binary_op_type typedef
- Added missing ZEND_BOOL_XOR to get_binary_op()

# f41d6dba 29-Aug-2008 Matt Wilmas <mattwil@php.net>

- Updated unary_op_type typedef with TSRMLS_DC
- Added binary_op_type typedef
- Added missing ZEND_BOOL_XOR to get_binary_op()

# cf7384aa 12-Aug-2008 Felipe Pena <felipe@php.net>

- MFH: Constness (Added const qualifier to several function parameters)

# a5f867f3 12-Aug-2008 Felipe Pena <felipe@php.net>

- Constness (Added const qualifier to several function parameters)

# dea723c1 28-Jul-2008 Moriyoshi Koizumi <moriyoshi@php.net>

- Sync function signature with the 5.3 branch

# a28497d6 28-Jul-2008 Moriyoshi Koizumi <moriyoshi@php.net>

- Fix __halt_compiler() weirdness with zend-mulibyte enabled

# ef5f3cfd 26-Jul-2008 Dmitry Stogov <dmitry@php.net>

. Added support for using static HEREDOCs to initialize static variables and class members or constants. (Matt)
. Improved syntax highlighting and consistency for variables in double-quoted strings and literal text in HEREDOCs and backticks. (Matt)
. Optimized interpolated strings to use one less opcode. (Matt)

# 478acfd8 26-Jul-2008 Dmitry Stogov <dmitry@php.net>

. Added support for using static HEREDOCs to initialize static variables and class members or constants. (Matt)
. Improved syntax highlighting and consistency for variables in double-quoted strings and literal text in HEREDOCs and backticks. (Matt)
. Optimized interpolated strings to use one less opcode. (Matt)

# bdf7981e 26-Jul-2008 Dmitry Stogov <dmitry@php.net>

Fixed is_callable/call_user_func mess that had done different things for very similar arguments e.g. array("A","B") and "A::B"

# af05ce0a 26-Jul-2008 Dmitry Stogov <dmitry@php.net>

Fixed is_callable/call_user_func mess that had done different things for very similar arguments e.g. array("A","B") and "A::B"

# d8208b05 25-Jul-2008 Dmitry Stogov <dmitry@php.net>

Substitute persistent constants by their values at compile time. (Matt)

# ed2d3e4c 25-Jul-2008 Dmitry Stogov <dmitry@php.net>

Substitute persistent constants by their values at compile time. (Matt)

# 44325e64 24-Jul-2008 Dmitry Stogov <dmitry@php.net>

Fixed bug #45178 (memory corruption on assignment result of "new" by reference)

# d2f478af 24-Jul-2008 Dmitry Stogov <dmitry@php.net>

Fixed bug #45178 (memory corruption on assignment result of "new" by reference)

# d5ef2f46 14-Jul-2008 Dmitry Stogov <dmitry@php.net>

Added support for lambda functions and closures

# 8d2e0a7e 08-Jul-2008 Dmitry Stogov <dmitry@php.net>

Added closures support

# b8d7c7e9 11-Jun-2008 Dmitry Stogov <dmitry@php.net>

- Removed direct executor recursion.
- Use fastcall calling convention in executor on x86.

# 76a9a42e 11-Jun-2008 Dmitry Stogov <dmitry@php.net>

- Removed direct executor recursion.
- Use fastcall calling convention in executor on x86.

# 25aaecc6 12-May-2008 Dmitry Stogov <dmitry@php.net>

Fixed bug #44952 (isset() does not checks correctly variable variable)

# af1ed802 12-May-2008 Dmitry Stogov <dmitry@php.net>

Fixed bug #44952 (isset() does not checks correctly variable variable)

# 37691b0c 07-May-2008 Dmitry Stogov <dmitry@php.net>

Use IS_CV for dirrent access to $this variable

# 5521912b 07-May-2008 Dmitry Stogov <dmitry@php.net>

Use IS_CV for dirrent access to $this variable

# 1b317f15 05-May-2008 Dmitry Stogov <dmitry@php.net>

- Use ZEND_FREE() opcode instead of ZEND_SWITCH_FREE(IS_TMP_VAR)
- Fixed bug #44913 (Segfault when using return in combination with nested loops
and continue 2)

# c1b01f73 05-May-2008 Dmitry Stogov <dmitry@php.net>

- Use ZEND_FREE() opcode instead of ZEND_SWITCH_FREE(IS_TMP_VAR)
- Fixed bug #44913 (Segfault when using return in combination with nested loops and continue 2)

# f8f26de7 29-Mar-2008 Felipe Pena <felipe@php.net>

Fix for segfault on 64bit platform

# f66f55ed 28-Mar-2008 Felipe Pena <felipe@php.net>

MFH: Implemented "jump label" operator (limited "goto")

# e55a0de4 26-Mar-2008 Scott MacVicar <scottmac@php.net>

MFB 5.3: Rewrite scanner to be based on re2c instead of flex

There are still changes in regards to parsing of Unicode encoded scripts to come.

# 9e2894f5 25-Mar-2008 Felipe Pena <felipe@php.net>

- Renamed zend_do_fetch_class_name() to zend_do_build_full_name() (It is not used only for classes)
- Moved zend_resolve_class_name prototype to zend_compile.h

# c3ca82f3 22-Mar-2008 Felipe Pena <felipe@php.net>

- Renamed zend_do_fetch_class_name() to zend_do_build_full_name() (It is not used only for classes)
- Moved zend_resolve_class_name prototype to zend_compile.h

# ea9305c5 18-Mar-2008 Dmitry Stogov <dmitry@php.net>

Implemented concept of "delayed early binding" that allows opcode caches to perform class declaration (early and/or run-time binding) in exactly the same order as vanila php.
The following pseudo-code explains how it should be used in opcode cache.

function cache_compile_file($filename) {
if (!is_cached($filename)) {
orig_compiler_options = CG(compiler_optins);
$op_array = orig_compile_file($filename);
CG(compiler_options) = orig_copiler_options;
} else {
$op_array = restore_from_cache($filename);

# 8c885b89 18-Mar-2008 Dmitry Stogov <dmitry@php.net>

Implemented concept of "delayed early binding" that allows opcode caches to perform class declaration (early and/or run-time binding) in exactly the same order as vanila php.
The following pseudo-code explains how it should be used in opcode cache.

function cache_compile_file($filename) {
if (!is_cached($filename)) {
orig_compiler_options = CG(compiler_optins);
$op_array = orig_compile_file($filename);
CG(compiler_options) = orig_copiler_options;
} else {
$op_array = restore_from_cache($filename);

# 00e236aa 16-Mar-2008 Marcus Boerger <helly@php.net>

- Fix build

# af316021 16-Mar-2008 Marcus Boerger <helly@php.net>

- Rewrite scanner to be based on re2c instead of flex
The full patch is available as:
This is against php-re2c repository version 98
An older patch against version 97 is available under:

# 6fae346f 12-Mar-2008 Dmitry Stogov <dmitry@php.net>

Fixed bug #44414 (Incomplete reporting about abstract methods)

# 0f2247ae 12-Mar-2008 Dmitry Stogov <dmitry@php.net>

Fixed bug #44414 (Incomplete reporting about abstract methods)

# c38d56e3 12-Feb-2008 Stanislav Malyshev <stas@php.net>

MFB __DIR_ constant support

# fd597dce 12-Feb-2008 Stanislav Malyshev <stas@php.net>

[DOC] Add compile-time __DIR__ constant which implements dirname(__FILE__)

# 2971e138 24-Jan-2008 Dmitry Stogov <dmitry@php.net>

Changed EG(argument_stack) implementation.

# 0b682510 24-Jan-2008 Dmitry Stogov <dmitry@php.net>

Changed EG(argument_stack) implementation.

# d9f3a130 31-Dec-2007 Sebastian Bergmann <sebastian@php.net>

MFH: Bump copyright year, 2 of 2.

# d1dded87 31-Dec-2007 Sebastian Bergmann <sebastian@php.net>

MFH: Bump copyright year, 2 of 2.

# 9b620d50 31-Dec-2007 Sebastian Bergmann <sebastian@php.net>

Bump copyright year, 2 of 2.

# 579defac 13-Dec-2007 Dmitry Stogov <dmitry@php.net>

Allowed import of global classes "use ::GlobalClassName;" (Gregory)

# 64e8f223 13-Dec-2007 Dmitry Stogov <dmitry@php.net>

Allowed import of global classes "use ::GlobalClassName;"

# 47dc82ec 22-Nov-2007 Dmitry Stogov <dmitry@php.net>

Fixed bug #43128 (Very long class name causes segfault)

# 648fbe9d 22-Nov-2007 Dmitry Stogov <dmitry@php.net>

Fixed bug #43128 (Very long class name causes segfault)

# 45f6b4ce 21-Nov-2007 Johannes Schlüter <johannes@php.net>

- MFH Improved version of ternary shortcut (Marcus)

# 2a84434e 20-Nov-2007 Dmitry Stogov <dmitry@php.net>

Added support for "namespace::" prefix that is resolved to current namespace name.

# 9f230a0d 20-Nov-2007 Dmitry Stogov <dmitry@php.net>

Added support for "namespace::" prefix that is resolved to current namespace name.

# b7d87beb 07-Nov-2007 Dmitry Stogov <dmitry@php.net>


# e860d95d 06-Nov-2007 Dmitry Stogov <dmitry@php.net>


# a53eb396 23-Oct-2007 Dmitry Stogov <dmitry@php.net>

Fixed variations of bug #35163

# 1530fe99 23-Oct-2007 Dmitry Stogov <dmitry@php.net>

Fixed variations of bug #35163

# ce5c38af 03-Oct-2007 Dmitry Stogov <dmitry@php.net>

Fixed bug #42820 (defined() on constant with namespace prefixes tries to load class).

# eb0c56ad 03-Oct-2007 Dmitry Stogov <dmitry@php.net>

Fixed bug #42820 (defined() on constant with namespace prefixes tries to load class).

# b20ed0d2 29-Sep-2007 Dmitry Stogov <dmitry@php.net>

Added support for __callstatic() magic method. (Sara)

# 166266df 29-Sep-2007 Dmitry Stogov <dmitry@php.net>

Added support for Late Static Binding. (Dmitry, Etienne Kneuss)

# f32ffe9b 28-Sep-2007 Dmitry Stogov <dmitry@php.net>


# 6c810b0d 27-Sep-2007 Dmitry Stogov <dmitry@php.net>

Improved memory usage by movig constants to read only memory. (Dmitry, Pierre)

# 189ac4f2 26-Sep-2007 Dmitry Stogov <dmitry@php.net>

Late Static Binding (Dmitry, Etienne Kneuss)

# 611abb17 24-Aug-2007 Dmitry Stogov <dmitry@php.net>

Namespace constants

# c7d82c75 20-Aug-2007 Dmitry Stogov <dmitry@php.net>

Added namespace related optimizations and comments

# c04dc169 27-Jul-2007 Dmitry Stogov <dmitry@php.net>

Namespace support for name ambiguity between namespace and class name

# b1bc911c 21-Jul-2007 Sara Golemon <pollita@php.net>

Add support got zend_class_entry->get_static_method() and matching __callStatic() userspace method @doc

# 1f413bbc 12-Jul-2007 Dmitry Stogov <dmitry@php.net>


# 981ce312 28-Jun-2007 Stanislav Malyshev <stas@php.net>

Fix HALT constant handling in unicode mode

# 2ab4eede 28-Jun-2007 Stanislav Malyshev <stas@php.net>

Remove limitation of __HALT_COMPILER() that allowed only one instance
per request.

# Patch by Gregory Beaver

# 5dc51fec 18-May-2007 Dmitry Stogov <dmitry@php.net>

Improved compilation of heredocs and interpolated strings. (Matt)

# 80d2409f 18-May-2007 Dmitry Stogov <dmitry@php.net>

Improved compilation of heredocs and interpolated strings. (Matt, Dmitry)

# 17c0c49a 04-Apr-2007 Ilia Alshanetsky <iliaa@php.net>

Addres limitation of __HALT_COMPILER() that allowed only one instance
per request.

# Patch by Greg Beaver

# 80c2f1f9 08-Mar-2007 Marcus Boerger <helly@php.net>

- Improved version of ternary shortcut

# d7df9bad 16-Feb-2007 Dmitry Stogov <dmitry@php.net>

Added runtime JIT auto-globals fetching and caching

# cb5ae2b8 15-Feb-2007 Dmitry Stogov <dmitry@php.net>

Fixed bug #40236 (php -a function allocation eats memory)

# 0291ad5f 15-Feb-2007 Dmitry Stogov <dmitry@php.net>

Fixed bug #40236 (php -a function allocation eats memory)

# 57da96bb 20-Jan-2007 Sara Golemon <pollita@php.net>

Resolve autoglobals as global-fetch CVs when possible

# f6387758 10-Jan-2007 Dmitry Stogov <dmitry@php.net>

- Fixed bug #35106 (nested foreach fails when array variable has a reference).
- Fixed bug #36214 (__get method works properly only when conditional operator is used).
- Fixed bug #39449 (Overloaded array properties do not work correctly).
- Fixed bug #39990 (Cannot "foreach" over overloaded properties).

# e470e22e 10-Jan-2007 Dmitry Stogov <dmitry@php.net>

- Fixed bug #35106 (nested foreach fails when array variable has a reference).
- Fixed bug #36214 (__get method works properly only when conditional operator is used).
- Fixed bug #39449 (Overloaded array properties do not work correctly).
- Fixed bug #39990 (Cannot "foreach" over overloaded properties).

# 4223aa4d 01-Jan-2007 Sebastian Bergmann <sebastian@php.net>

MFH: Bump year.

# 3717df72 01-Jan-2007 Sebastian Bergmann <sebastian@php.net>

Bump year.

# 57d22421 17-Nov-2006 Dmitry Stogov <dmitry@php.net>

Unicode support.
Now the real UG(unicode) value is available during MINIT calls.

# 75c27244 27-Oct-2006 Andrei Zmievski <andrei@php.net>

Turn doc comments into zstr strings with corresponding adjustments.

# 53d94a98 26-Oct-2006 Antony Dovgal <tony2001@php.net>

fix wrong function prototype (see bug #39260)

# 798d93c4 26-Sep-2006 Dmitry Stogov <dmitry@php.net>

Fixed bug #38808 ("maybe ref" issue for current() and others)

# c3272ab0 26-Sep-2006 Dmitry Stogov <dmitry@php.net>

Fixed bug #38808 ("maybe ref" issue for current() and others)

# cd6537ed 19-Sep-2006 Dmitry Stogov <dmitry@php.net>

Fixed bugs #34065 and #38623 (throw in foreach/switch causes memory leaks)

# 7aeb4421 19-Sep-2006 Dmitry Stogov <dmitry@php.net>

Fixed bugs #34065 and #38623 (throw in foreach/switch causes memory leaks)

# 519ed8e1 24-Jul-2006 Marcus Boerger <helly@php.net>

- Better fix for #34505 and related, drop zend_unmangle_property_name_ex()

# 617a18fc 24-Jul-2006 Marcus Boerger <helly@php.net>

- Fix for #34505 and repated (improved version of what is in 5.2, 5.1)

# 06678646 18-Jul-2006 Andrei Zmievski <andrei@php.net>

Callable checks and class fetching and lookup should support identifer
normalization now. (Marcus, Andrei)

# 7bbf3532 13-Jun-2006 Stefan Esser <sesser@php.net>

MFH: Added hook for compile_string()

# 08e355e3 13-Jun-2006 Stefan Esser <sesser@php.net>

Added hook for compile_string()

# 493f39da 27-May-2006 Marcus Boerger <helly@php.net>

- MFH: Fix bug #37212 (Access to protected property of common base class)
By adding "zend_class_entry *ce" to struct zend_property_info;

# 92655459 27-May-2006 Marcus Boerger <helly@php.net>

- Fix bug #37212 (Access to protected property of common base class)
By adding "zend_class_entry *ce" to struct zend_property_info;
# Besides closing the bug this patch allows to optimize a bunch of
# property handling optimizations. I need to find out what all can be
# optimized. All other tests relevant to class handling still PASS.

# 7a5240e8 11-May-2006 Marcus Boerger <helly@php.net>

- MFH missing bits and pieces of the partial sync with head
# This time i added:
# and dapted parser,compiler,executor,interfaces to handle these flags
# their purpose is to be able to pass whetehr foreach is done by ref to
# the current() handler so that it can error out in case it is not capable
# to comply to the requested return signature/protocol/semantics (weyp).

# f1a98a1d 11-May-2006 Andrei Zmievski <andrei@php.net>

Adjust API for scanning INI files as UTF-8.

# 637a4042 09-May-2006 Marcus Boerger <helly@php.net>

- MFH as discussed
. zend_exception_get_default() -> zend_exception_get_default(TSRMLS_D)
. zend_get_error_exception() -> zend_get_error_exception(TSRMLS_D)
. added __tostring function cache to zend_class_entry
. modified ZEND_ME_MAPPING to support method flags
. added ZEND_MN
. method entries now use prefix "zim_" instead of "zif_"
. drop EG(ze1_compatibility_mode)
. changed cast handler, now without (int should_free):
typedef int (*zend_object_cast_t)(zval *readobj, zval *retval, int type TSRMLS_DC);
. changed get_iterator, now receives whether value is by ref:
zend_object_iterator *(*get_iterator)(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC);
. added zend_objects_store_add_ref_by_handle
. added zend_objects_store_del_ref_by_handle
. convert_to_explicit_type(pzv, type)

# 88605a22 23-Mar-2006 Antony Dovgal <tony2001@php.net>

implement correct fix for segfault on 64bit platform

# 89a1a4cb 16-Mar-2006 Dmitry Stogov <dmitry@php.net>

Return "new" by reference now throws an E_STRICT error

# 78aed202 13-Mar-2006 Dmitry Stogov <dmitry@php.net>

Optimized cleanup loops on request shutdown

# ad10a538 13-Mar-2006 Dmitry Stogov <dmitry@php.net>

Optimized cleanup loops on request shutdown

# f8576f84 10-Mar-2006 Dmitry Stogov <dmitry@php.net>

Implemented "jump label" operator (limited "goto")

# 432cae32 07-Mar-2006 Dmitry Stogov <dmitry@php.net>

Reverted "break label"

# 2a2050d4 03-Mar-2006 Dmitry Stogov <dmitry@php.net>

Added support for "continue" and "break" operators with labels. Each loop or switch statement can be marked by label and then it is possible to write "break <label>" instead of "break <number>".

# e3b7f3fd 26-Feb-2006 Dmitry Stogov <dmitry@php.net>

Unicode support: MS Visual C compatibility

# 941b0651 25-Feb-2006 Marcus Boerger <helly@php.net>

- MFH: Function deprecation flag

# 0f1209ab 21-Feb-2006 Dmitry Stogov <dmitry@php.net>

Portable unicode string API:
- use the same type (int) for zval.value.usr.len and zval.value.str.len
- use union "zstr" as char*/UChar* mixture instead of void*
- Z_UNISTR() and Z_UNILEN() no longer check for Z_TYPE()
- nuke int32_t from ZE (not finisned)

# 2e5d0a3a 21-Feb-2006 Dmitry Stogov <dmitry@php.net>


# 3b3e006e 20-Feb-2006 Marcus Boerger <helly@php.net>

- Add deprecation flag and message

# 09ca61c1 13-Feb-2006 Dmitry Stogov <dmitry@php.net>

Made server wide switch for unicode on/off (according to PDM).

# c8d78028 05-Feb-2006 Marcus Boerger <helly@php.net>

- Disallow foreach($v as &$ref) when $v is an object that implements
interface Iterator. The signature of Iterator::current() doesn't allow
that. Maybe ppl also want IteratorByReference or similar. Unfortunatley
this comes with an API change but there is no easier way.

# 5de7cc31 04-Jan-2006 Andi Gutmans <andi@php.net>

- Update copyright notices to 2006

# 61e93ccf 04-Jan-2006 Andi Gutmans <andi@php.net>

- Update copyright notices to 2006

# 169411d0 01-Nov-2005 Marcus Boerger <helly@php.net>

- Get rid of several wanrings

# d32c6512 20-Oct-2005 Dmitry Stogov <dmitry@php.net>

Fixed bug #31177 (menory leaks and corruption because of incorrect refcounting).

# 2507a544 20-Oct-2005 Dmitry Stogov <dmitry@php.net>

Fixed bug #31177 (menory leaks and corruption because of incorrect refcounting)

# f94344d7 27-Sep-2005 Dmitry Stogov <dmitry@php.net>

Changed __toString() behavior to call it in all necessary places

# 23d0387e 23-Sep-2005 Marcus Boerger <helly@php.net>

- WS

# f8e8c553 22-Sep-2005 Antony Dovgal <tony2001@php.net>

MFH: fix #33771 (error_reporting falls to 0 when @ was used inside try/catch block)

# 78fe7447 22-Sep-2005 Antony Dovgal <tony2001@php.net>

fix #33771 (error_reporting falls to 0 when @ was used inside try/catch block)

# f43767b2 16-Sep-2005 Antony Dovgal <tony2001@php.net>

fix #34505 (possible memory corruption when unmangling properties with empty names)
1st part

# 9305339d 09-Sep-2005 Dmitry Stogov <dmitry@php.net>

Changed "instanceof" and "catch" operators, is_a() and is_subclass_of() functions to not call __autoload().

# 0165ab62 30-Aug-2005 Marcus Boerger <helly@php.net>

- Adds module registering a function to struct zend_internal_function.
# This information is by reflection API and error messages.

# d0d6a1f1 24-Aug-2005 Andrei Zmievski <andrei@php.net>

- Require declare(encoding=...) to come before any opcodes. Read source
comments for more info.
- Op arrays now know which script encoding they were compiled from.
- Use this information to intelligently convert inline HTML blocks to
the output encoding. Currently it opens and closes a new converter for
each block, but we can optimize it.

# d90d6c5d 19-Aug-2005 Dmitry Stogov <dmitry@php.net>

nstanceof operator shouldn't call __autoload()

# 21c1109e 12-Aug-2005 Dmitry Stogov <dmitry@php.net>

Unicode support

# b80cb7bd 11-Aug-2005 Andrei Zmievski <andrei@php.net>

Unicode support

# ebd4ab4d 10-Aug-2005 Dmitry Stogov <dmitry@php.net>

Fixed bug #25359 (array_multisort() doesn't work in a function if array is global or reference)

# b0d3aec8 10-Aug-2005 Dmitry Stogov <dmitry@php.net>

Fixed bug #25359 (array_multisort() doesn't work in a function if array is global or reference)

# 916815b7 03-Aug-2005 foobar <sniper@php.net>

Bump up the year

# 345e0255 07-Jul-2005 Dmitry Stogov <dmitry@php.net>

Fixed bug #33512 (Add missing support for isset()/unset() overloading to complement the property get/set methods)

# 343af548 04-Jul-2005 Dmitry Stogov <dmitry@php.net>

Fixed SIGSEGV on 'global ${"{$blah}_ID"};'

# 12b66c26 24-Jun-2005 Dmitry Stogov <dmitry@php.net>

Fixed bug #30519 (Interface not existing says Class not found)

# 21e071be 22-Jun-2005 Dmitry Stogov <dmitry@php.net>

Fixed bug #33257 (array_splice() inconsistent when passed function instead of variable)

# 2a314dbc 17-Jun-2005 Dmitry Stogov <dmitry@php.net>

Removed EX(fbc_constructor) (it is no longer needed)

# aedbdb08 16-Jun-2005 Dmitry Stogov <dmitry@php.net>

Allowed return by refrence from internal functions

# c3e6a908 16-Jun-2005 Dmitry Stogov <dmitry@php.net>


# 2cb52151 09-Jun-2005 Stanislav Malyshev <stas@php.net>

MF50: fix #29689 and more private property problems

# 58a0ee09 07-Jun-2005 Dmitry Stogov <dmitry@php.net>

Fixed bug #26456 (Wrong results from Reflection-API getDocComment() when called via STDIN)

# d33500ee 04-Jun-2005 Zeev Suraski <zeev@php.net>

Thought I committed it ages ago... Anyway, without further delays, the final
__halt_compiler() patch

# 4918b67a 28-May-2005 Marcus Boerger <helly@php.net>

- Make zend_do_inheritance ZEND_API

# 1a723413 26-May-2005 Dmitry Stogov <dmitry@php.net>

Added array type hinting. (This patch requires full re-make)

# 67a226d9 19-Apr-2005 Marcus Boerger <helly@php.net>

- Add ReflectionProperty::getDocComment()

# a29f5391 11-Feb-2005 Marcus Boerger <helly@php.net>

- Cleanup foreach handling

# fc96c7f7 07-Feb-2005 Dmitry Stogov <dmitry@php.net>

foreash($a as $key => $val) optimization
Removed temorary array creation on each iteration.

# 2d13dd0e 07-Feb-2005 Marcus Boerger <helly@php.net>

- Remove part of the cleanup which causes a problem with unnormal code
like tests/lang/040.phpt
# However there is a memleak introduced somewhen after august 04 for such
# code now, 5.0 and 4.3 are fine though.

# 662cd826 05-Feb-2005 Marcus Boerger <helly@php.net>

- Cleanup foreach statement

# 8838c0f8 22-Jan-2005 Andi Gutmans <andi@php.net>

- Two new API calls for Derick (retreive CV name and value) by Dmitry

# a904c1da 27-Oct-2004 Andi Gutmans <andi@php.net>

- Improve comments, docs, code...

# f71644b4 08-Oct-2004 Marcus Boerger <helly@php.net>

- Revert automatic pass arg_info
# We need to find a better solutions to prevent havy extension writer probs

# f916d603 05-Oct-2004 Marcus Boerger <helly@php.net>

- Add arginfo ZEND_ARG_SEND_AUTOMATIC which lets the compiler automatically
determine whether pass by ref is possible or pass by value is needed.
# This is usefull when functions take array or string parameters as
# expressions. In such a case force by ref is not applicable and the
# executor would copy the variable unnecessarily as soon as it is at least
# once referenced.

# db507dd1 04-Oct-2004 Andi Gutmans <andi@php.net>

- Commit the variable fetch optimization.
- Extensions which delete global variables need to use new special function
- delete_global_variable() (I'm about to rename it) to remove them.
- Will post to internals@ or via commit messages if there's anything else.

# f82ed136 23-Sep-2004 Andi Gutmans <andi@php.net>

- Commit new VM architecture. This one allows people (aka Derick) to
- ask the engine to use function handler mode. Will update the README
- about that.

# d8efe626 16-Sep-2004 Andi Gutmans <andi@php.net>

- Fix bug #27669 (Dmitry).
class A
function hello()
echo "Hello World\n";
$y[0] = 'hello';

# 96ab56e1 09-Sep-2004 Andi Gutmans <andi@php.net>

- Roll back VM commit

# 8eb8850c 08-Sep-2004 Andi Gutmans <andi@php.net>

- Some architectural changes:
a) We specialize opcodes according to op_type fields. Each opcode has to
be marked with which op_type's it uses.
b) We support different execution methods. Function handlers, switch()
and goto dispatching. goto seems to be the fastest but it really
depends on the compiler and how well it optimizes. I suggest playing
around with optimization flags.

- Warning: Things might break so keep us posted on how things are going.
(Dmitry, Andi)

# edb7c7d4 19-Aug-2004 Andi Gutmans <andi@php.net>

- Stop using garbage. Please let me know if you find any bugs resulting
- of this patch (very likely). (Dmitry, Andi)

# 993f70c1 12-Aug-2004 Andi Gutmans <andi@php.net>

- Don't use magic numbers

# 5f0433db 02-Aug-2004 Marcus Boerger <helly@php.net>

MFB: Enforce protocol on magic methods/functions

# d96e7a17 29-Jul-2004 Sara Golemon <pollita@php.net>

Revert goto opcode

# 5865b368 29-Jul-2004 Sara Golemon <pollita@php.net>

Add goto operator by popular request.

# fb5cb590 06-Jun-2004 Stefan Esser <sesser@php.net>

Fixed Zend Function Destructor to use correct TSRM handle.

# e2a5ebf5 16-Mar-2004 Zeev Suraski <zeev@php.net>

Add ability to disable JIT for a particular auto global

# 50ee116f 09-Mar-2004 Marcus Boerger <helly@php.net>

Clearify the different method/class flags (as discussed with Andi).

# 0fc9d586 09-Mar-2004 Andi Gutmans <andi@php.net>

- Nuke unused code.

# afc35efc 01-Mar-2004 Derick Rethans <derick@php.net>

- Typo fix (by Jan)

# edb21137 29-Feb-2004 Stanislav Malyshev <stas@php.net>

add ZEND_API there too for opcode handlers

# 7fdd68af 27-Feb-2004 Marcus Boerger <helly@php.net>

Add some comments

# 7086634a 25-Feb-2004 Zeev Suraski <zeev@php.net>

- Improve ARG_INFO() macros to support supplying required_num_args
- Initial fix for foreach($o->mthd()->arr) crash (now leaks)

# 36a75184 25-Feb-2004 Zeev Suraski <zeev@php.net>

- Abstract methods cannot have defaults for arguments
- Make function foo($a, $b=null) satisfy both foo($a) and foo($a, $b)

# e7e0f7d4 12-Feb-2004 Zeev Suraski <zeev@php.net>

- Check return-by-reference bit when implementing interface prototypes
- Add infrastructure for built-in functions to hint whether they
return by reference or not. It is NOT currently used for anything,
except for interface prototypes (you can use it to request that the
function that implements your prototype returns by reference or
doesn't return by reference).
For downwards compatibility - by default, interface prototypes are
agnostic as to whether the function that implements them returns
by reference or not. Use ZEND_BEGIN_ARG_INFO_EX() with
- Fix ArrayAccess::getOffset() to conduct additional checks.
If your getOffset() should work with multidimensional arrays - it
must return by reference.

# c5d84227 04-Feb-2004 Zeev Suraski <zeev@php.net>

Reinstate early-binding for classes.

Note that this is available for downwards compatibility only - and it doesn't
work if you use new features (namely, interfaces). Generally, people should
declare their classes before using them, but we just didn't want hell to break
loose (c)

# 9e60cb55 03-Feb-2004 Zeev Suraski <zeev@php.net>

Rewrote exception support. Fixes a few limitations and bugs in the old
implementation, and allows exceptions to 'fire' much earlier than before.

Instructions on how to use the new mechanism will follow on internals@

Note - this (most probably) breaks the current implementation of

# 8e30d96a 02-Feb-2004 Zeev Suraski <zeev@php.net>

Redesign the clone() feature to fix some fundamental flaws in the previous

Using clone directly is now done using
$replica = clone $src;

Clone methods must now be declared as follows:
function __clone($that)

Clone methods in derived classes can call the __clone method of their parent
classes using parent::__clone($that)

# 2adaa11f 28-Jan-2004 Zeev Suraski <zeev@php.net>

Prevent classes from implementing interfaces that have the same function

# 3ca44539 24-Jan-2004 Marcus Boerger <helly@php.net>

Switch from ZEND_ACC_DYNAMIC to ZEND_ACC_ALLOW_STATIC and disallow calling
internal non-static methods statically.
# As discussed with Zeev:
# - For BC standard userspace methods allow this with an E_STRICT message.
# - If you want to implement an internal method taht can be called both
# statically and non-statically then use flag ZEND_ACC_ALLOW_STATIC.
# - Magic user space methods __*() cannot and __construct, __destruct,
# __clone can never be called statically.

# 6020ffd0 23-Jan-2004 Marcus Boerger <helly@php.net>

Simplify detection of methods that must be called dynamic (with object)

# 7c2e02d3 23-Jan-2004 Marcus Boerger <helly@php.net>

Disallow static declaration of clone

# ccfc46b0 08-Jan-2004 foobar <sniper@php.net>

- Happy new year and PHP 5 for rest of the files too..
# Should the LICENSE and Zend/LICENSE dates be updated too?

# 6923a16c 03-Jan-2004 Derick Rethans <derick@php.net>

- Fixed var_export() to show public, protected and private modifiers properly.
- Exported (un)mangle_property_name.

# 9c909f41 16-Dec-2003 Sebastian Bergmann <sebastian@php.net>

Sync: Export externally used functions.

# 3a42baba 14-Dec-2003 Zeev Suraski <zeev@php.net>

Fix behavior of return-by-reference functions. Remove erroneous warnings,
add E_STRICT warnings in case you return something by reference that you're
not supposed to (anything that's not a variable, or a return-value of a
function that returned by reference).

# d344648b 24-Nov-2003 Andi Gutmans <andi@php.net>

- Fix __autoload() to preserve class case.
- Heads up, this patch might break stuff so please let me know if you
- bump into any problems.

# 296529b8 10-Nov-2003 Marcus Boerger <helly@php.net>

Split isset/isempty for object property and object dimension hooking.

# 3c62b3b5 22-Oct-2003 Marcus Boerger <helly@php.net>

Expand Interface C API.
In short: zend_class_entry->interface_gets_implemented() allows to modify
the class entry of a class when an interface gets implemented.

# cec053f7 24-Aug-2003 Marcus Boerger <helly@php.net>

Don't identify alias'ed functions

# 1c2512dd 24-Aug-2003 Marcus Boerger <helly@php.net>

- Add fn_flag ZEND_ACC_ALIAS
- Unify way of function_entry generation by new macro ZEND_FENTRY

# baaa4c90 23-Aug-2003 Marcus Boerger <helly@php.net>

Internal classes can now have default properties.

# fbda310a 23-Aug-2003 Marcus Boerger <helly@php.net>

- Flag ctor/dtor methods
- Use this to prevent memleaks when an exception gets thrown in ctors.
# I added the dtor flags for consistency, atm a compareable check in
# isn't necessary for destruction. But anyway i'll use this for the
# Relection API too.

# 49c4866a 18-Aug-2003 Zeev Suraski <zeev@php.net>

- Improve tracking
- Fix several overloading issues

# f8bbafd6 03-Aug-2003 Zeev Suraski <zeev@php.net>

ntroduce infrastructure for supplying information about arguments,

- Whether or not to pass by ref (replaces the old arg_types, with arg_info)
- Argument name (for future use, maybe introspection)
- Class/Interface name (for type hints)
- If a class/interface name is available, whether to allow a null instance

Both user and builtin functions share the same data structures.

To declare a builtin function that expects its first arg to be an instance
of class 'Person', its second argument as a regular arg, and its third by
reference, use:

ZEND_BEGIN_ARG_INFO(my_func_arg_info, 0)
ZEND_ARG_OBJ_INFO(0, someone, Person, 1)

and use my_func_arg_info as the arg_info parameter to the ZEND_FE() family
of macros.

The first arg to each ZEND_ARG_*() macro is whether or not to pass by ref.

The boolean arg to ZEND_BEGIN_ARG_INFO() tells the engine whether to treat
the arguments for which there's no explicit information as pass by reference
or not.
The boolean argument to ZEND_ARG_OBJ_INFO() (4th arg) is whether or not to allownull values.

# 9d7122fb 03-Aug-2003 Zeev Suraski <zeev@php.net>

Generalize fetch_class

# 68fa4e50 30-Jul-2003 Zeev Suraski <zeev@php.net>

Get rid of an opcode

# c0b46739 30-Jul-2003 Zeev Suraski <zeev@php.net>

Improve array overloading - support unset($foo["bar"])

# 4839ce59 30-Jul-2003 Zeev Suraski <zeev@php.net>

Remove garbage

# 2fd4ffce 30-Jul-2003 Zeev Suraski <zeev@php.net>

Add exec_finished() callback for modules - this is the last place where the
modules may touch the symbol table reliably

# 03b6af07 24-Jul-2003 Zeev Suraski <zeev@php.net>

Support references in foreach()
foreach ($arr as &$val)
foreach ($arr as $key => &$val)

# 237116aa 23-Jul-2003 Stanislav Malyshev <stas@php.net>

Remove namespace leftovers

# 3a898f6d 16-Jul-2003 Zeev Suraski <zeev@php.net>

More cleanup for assign-op handling of objects

# 13433852 07-Jul-2003 Zeev Suraski <zeev@php.net>

Rework zend_do_declare_property and related code into one code base

# 938c0fbc 07-Jul-2003 Zeev Suraski <zeev@php.net>

Initial support for overloading of array syntax for objects (very initial)

# 60c7abac 21-Jun-2003 Marcus Boerger <helly@php.net>

Add final classes

# f68c7ff2 10-Jun-2003 James Cox <imajes@php.net>

updating license information in the headers.

# 8d2a4e04 09-Jun-2003 Zeev Suraski <zeev@php.net>

Fix bogus implicit declarations of properties (squash bug #23671)

# d329ce93 08-Jun-2003 Zeev Suraski <zeev@php.net>

Nicer handling of protected/private members in print_r()

# f7f5a5ea 02-Jun-2003 Stanislav Malyshev <stas@php.net>

MEGA-patch: namespaces are R.I.P.

# 7463e723 01-Jun-2003 Marcus Boerger <helly@php.net>

Defining it once is enough

# 472cc5b9 29-May-2003 Marcus Boerger <helly@php.net>

Faster interface inheritance & faster inheritance checks

# dccdb2f5 11-Apr-2003 Sebastian Bergmann <sebastian@php.net>

Fix warnings.

# 0191ba5d 10-Apr-2003 Sterling Hughes <sterling@php.net>

allow expressions within constants, so the following is possible

class foo {
const a = 1<<0;
const b = 1<<1;
const c = a | b;

this makes const a compile-time expression. all other operators are

# 5ae7fa42 07-Apr-2003 Sterling Hughes <sterling@php.net>

add markers that make this file easy to parse for external sources

# 1885d008 02-Apr-2003 Andrei Zmievski <andrei@php.net>


# bdd3b604 02-Apr-2003 Andrei Zmievski <andrei@php.net>

Implement a different way to catch documentation comments.

# e6255b06 02-Apr-2003 Andrei Zmievski <andrei@php.net>

Revert portions of the doc comment patch. There should be no parser
errors now.

# 800de8ac 02-Apr-2003 Stanislav Malyshev <stas@php.net>

allow class_exists() to work with namespaces too.

# 62f9eb80 01-Apr-2003 Andrei Zmievski <andrei@php.net>

Split ZEND_NAMESPACE into user and internal namespaces. Hope this is
okay with engine folks.

# 5657b836 31-Mar-2003 Andrei Zmievski <andrei@php.net>

Multi-purpose patch:
- The fields of zend_namespace were not completely initialized which
led to a variety of problems.
- The occurrence of class/interface/namespace definition is now
- Functions/classes/interfaces/namespaces can be preceded by doc
comments which are stored for use by extensions.

# 5097be30 29-Mar-2003 Zeev Suraski <zeev@php.net>

Initial support for enforcing prototype of abstract/interface method implementations

# 3fc85282 26-Mar-2003 Sebastian Bergmann <sebastian@php.net>

Eliminate TSRMLS_FETCH() calls in destroy_op_array() and zend_get_class_entry().

# 170de9b9 22-Mar-2003 Shane Caraveo <shane@php.net>

export functions needed by cli

# 39d5a638 19-Mar-2003 Andrei Zmievski <andrei@php.net>

- Keep track of starting/ending line numbers for user functions.
- Store last parsed doc comment in a compiler global for future use.

# 0eae2312 09-Mar-2003 Zeev Suraski <zeev@php.net>

Fix handling of ::foo

# 8bc88d8d 09-Mar-2003 Zeev Suraski <zeev@php.net>

Fix parsing rules of namespaces/classes

# 03381119 06-Mar-2003 Zeev Suraski <zeev@php.net>

Require abstract classes to be explicitly declared 'abstract', in order to
avoid making developers traverse the entire class/interface hierarchy
before they can figure out whether a class is instantiable
(ok, so it makes sense :)

# 44347cf6 06-Mar-2003 Zeev Suraski <zeev@php.net>

Change opcode name

# ff76511a 06-Mar-2003 Zeev Suraski <zeev@php.net>

Add class type hints

# 26dd8492 05-Mar-2003 Zeev Suraski <zeev@php.net>

Add support for interfaces

# 98b990e3 02-Mar-2003 Zeev Suraski <zeev@php.net>

Improve infrastructure

# f7b78004 02-Mar-2003 Zeev Suraski <zeev@php.net>

Add infrastructure for JIT initialization of auto globals

# 535aa632 24-Feb-2003 Zeev Suraski <zeev@php.net>

Add 'final'

# e645f20d 20-Feb-2003 Stanislav Malyshev <stas@php.net>

Allow namespaces to have a number of parts. I.e., now you can do:
namespace foo {
function abc() {}
namespace foo {
functio def() {}

# 955636af 18-Feb-2003 Zeev Suraski <zeev@php.net>

Avoid using a C++ reserved word

# e52aac94 18-Feb-2003 Wez Furlong <wez@php.net>

Implement simple stream support in the ZE scanners.

# 6d300baf 16-Feb-2003 Sebastian Bergmann <sebastian@php.net>

ZTS fixes

# a4c3b2ce 16-Feb-2003 Stanislav Malyshev <stas@php.net>

Namespace patch. Big changes:
1. Nested classes are gone.
2. New syntax for namespaces:
namespace foo {
class X { ... }
function bar { ... }
var x = 1;
const ZZ = 2;
3. Namespaced symbol access: $x = new foo::X; - etc.
For now, namespaces are case insensitive, just like classes.
Also, there can be no global class and namespace with the same name
(to avoid ambiguities in :: resolution).

# 28145041 11-Feb-2003 Zeev Suraski <zeev@php.net>

Improve parser handling of 'abstract'

# c17c7a2b 10-Feb-2003 Zeev Suraski <zeev@php.net>

Centralize class initialization

# 6317e265 10-Feb-2003 Zeev Suraski <zeev@php.net>

- Treat $this->foo inside class X as an implicit 'public $foo' if X::$foo
is not explicitly declared
- Forbid multiple declaration of the same variable

# 471947b1 04-Feb-2003 Zeev Suraski <zeev@php.net>

Reimplement PPP properties

# 333406bd 01-Feb-2003 foobar <sniper@php.net>

- Added some missing CVS $Id$ tags, headers and footers.

# 03f88ac2 29-Jan-2003 Stanislav Malyshev <stas@php.net>

Add additional stage to post-session cleanup.
We need separate cleanup stage because of the following problem:
Suppose we destroy class X, which destroys function table,
and in function table we have function foo() that has static $bar. Now if
object of class X was assigned to $bar, its destructor will be called and will
fail since X's function table is in mid-destruction.
So we want first of all to clean up all data and then move to tables
Note that only run-time accessed data need to be cleaned up, pre-defined
data can not contain objects and thus are not probelmatic.
# Looks like we are having a lots of pain in the various parts of the body
# because of the destructors...

# 3a4ace13 27-Jan-2003 Stanislav Malyshev <stas@php.net>

Replace MAKE_VAR opcode with special 'data' opcode
This opcode is not executeable but only holds data for opcodes
that need more than two arguments (presently only ASSIGN_OBJ and the ilk but
in the future also ASSIGN_DIM)

# c073b76a 14-Jan-2003 Andi Gutmans <andi@php.net>

- Change "is" to "instanceof" as it explains better what the operator means.
- "is_a" was also appropriate but ugly.

# 77208ec4 02-Jan-2003 Zeev Suraski <zeev@php.net>

Fix incorrect linkage of access-levels, when using private methods

# 2c5d4b8c 31-Dec-2002 Sebastian Bergmann <sebastian@php.net>

Bump year.

# 32b100e6 09-Dec-2002 Zeev Suraski <zeev@php.net>

- Allow variables to have both 'static' modifier and an access level.
NOTE: This only works at the syntax level right now (parser). It
doesn't actually work as of yet - all statics are considered
public for now
- Prevent users from putting more restrictions on methods in derived classes
(i.e., you cannot make a public method private in a derived class, etc.)

# dc5c790a 08-Dec-2002 Zeev Suraski <zeev@php.net>

Treat the absence of an access type just as if 'public' was supplied

# e062dffe 06-Dec-2002 Zeev Suraski <zeev@php.net>

- Implement public/protected/private methods.
- Prevent instantiation of classes with abstract methods.
Based in part on Marcus's patch.

# 6aa90a75 24-Nov-2002 Andi Gutmans <andi@php.net>


# 01e853c2 23-Nov-2002 Andi Gutmans <andi@php.net>

- My personal cleanups

# e8214a33 23-Nov-2002 Andi Gutmans <andi@php.net>

- Commit Marcus' cleanup of abstract and static inheritance and improve
- error messages

# 9726e74d 21-Nov-2002 Sebastian Bergmann <sebastian@php.net>

Fix prototype.

# 227f7838 20-Nov-2002 Andi Gutmans <andi@php.net>

- Fix build (thanks Marcus)
- Implement abstract methods, syntax:
- abstract function foo($vars);
- I don't see any reason why modifiers such as static/public need to be
- used with abstract. PHP is weakly typed and there would be no meaning to
- this anyway. People who want a strictly typed compiled language are
- looking in the wrong place.

# 830c2e0d 10-Nov-2002 Stanislav Malyshev <stas@php.net>

fix statics - make it behave like $this (fetch type "static")
Side effect: indirect references to statics won't work.

# 6f9bfe5c 05-Nov-2002 Andi Gutmans <andi@php.net>

- Shift around zend_op members

# c4978680 05-Nov-2002 Andi Gutmans <andi@php.net>

- Add support for static methods. Basically methods which are defined as
- static don't have $this. That's the whole difference.

# 3a9eeea2 05-Nov-2002 Stanislav Malyshev <stas@php.net>

avoid using 'class' in exported functions - it annoys c++

# 80109314 24-Oct-2002 Andi Gutmans <andi@php.net>

- Improve performance of part of the jmps. More to follow.

# d12679a6 22-Oct-2002 Andi Gutmans <andi@php.net>

- Improve overall engine performance

# 13274801 19-Oct-2002 Andi Gutmans <andi@php.net>

- Fix compile warning.

# 536d4d8a 19-Oct-2002 Andi Gutmans <andi@php.net>

- Improve opcode dispatching

# 349b3a09 16-Oct-2002 Stanislav Malyshev <stas@php.net>

Fix and generalize $this handling.
ZEND_FETCH_FROM_THIS is removed, IS_UNUSED type on class variables will be
used instead as the sign that it's a fetch from $this

# f78fa504 24-Sep-2002 Andi Gutmans <andi@php.net>

- Megapatch to try and support inheritance from sub-classes. Things might
- be *very* buggy now so don't get too upset if that happens.
- I still need to improve some stuff but it's a good step (hopefully).

# d8651c82 04-Sep-2002 Stanislav Malyshev <stas@php.net>

Support for __get, __set and __call in classes.
This should work as follows: if class hasn't member with given name,
__get/__set is called. If class has no method with given name, __call is called.
__get/__set are not recursive, __call can be.

# b806a8e2 14-Aug-2002 Jason Greene <jason@php.net>

MFZE1 (use token instead of global for opcode counting)

# 52406cb3 08-Aug-2002 Andi Gutmans <andi@php.net>

- Make new 'is' operator work with classes only and return false when
- the object isn't of the said class or the value isn't an object.

# 82c72f27 30-Jul-2002 Andrei Zmievski <andrei@php.net>

@- Adding 'is' operator that can be used to check the type of a variable,
@ or its class. (Andrei)

# 41e3f4f0 26-Jul-2002 Andi Gutmans <andi@php.net>

- Fix problem with debug_backtrace() reported by Stig. We weren't reporting
- global function information because it wasn't available. We have to do
- an additional assignment per-function call so that it'll be available.
- Also don't define the global scope as function name _main_ but leave it
- empty so that frameworks like Pear can decide what they want to do.

# 7b68f510 14-Jul-2002 Andi Gutmans <andi@php.net>

- Nuke delete(). It was a big mistake to introduce it and I finally
- understand why Java didn't do so.
- If you still want to control destruction of your object then either make
- sure you kill all references or create a destruction method which you
- call yourself.

# b66c89c4 07-May-2002 Andi Gutmans <andi@php.net>

- More debug backtrace work. It still doesn't work very well...

# 7e5ec2d7 02-May-2002 Andi Gutmans <andi@php.net>

Initial support for built-in backtracing.
There are still a few problems such as includes and calling other functions
from internal functions which aren't seen (will have to think if and how to
fix this).
Also the main scripts filename isn't available. Need to think about that.

# 51e797f1 23-Apr-2002 Harald Radi <phanto@php.net>

some type cleanup work

# 0ce019f7 15-Mar-2002 Andi Gutmans <andi@php.net>

- Fix issues with $this when using it by itself without indirection such as
- $this->foo.

# c8c629b3 12-Mar-2002 Andi Gutmans <andi@php.net>

- Fix bug introduced with latest class hash table change.

# 92dd5e61 12-Mar-2002 Stanislav Malyshev <stas@php.net>

- make class tables contain class_entry *, not class_entry
- fix isset($this)

# 04ed2b52 10-Mar-2002 Stanislav Malyshev <stas@php.net>

New stuff for objects API:
- Better assignment handling
- More flexible operations with zval-containing objects

# b90d80b5 02-Mar-2002 Andi Gutmans <andi@php.net>

- Initial patch to support importing from class scopes (for Stig).
- It isn't complete yet but I want to work on it from another machine. It
- shouldn't break anything else so just don't try and use it.
- The following is a teaser of something that already works:

class MyClass
function hello()
print "Hello, World\n";
class MyClass2
function hello()
print "Hello, World in MyClass2\n";

import function hello, class MyClass2 from MyClass;


# 90bd4539 01-Mar-2002 Andi Gutmans <andi@php.net>

- Remove use of C++ reserved words namespace/this

# d1eea3de 01-Mar-2002 Andi Gutmans <andi@php.net>

- Fix bug in nested try/catch's
- Infrastructure for implementing imports of methods.

# 21b04ff2 13-Feb-2002 Andi Gutmans <andi@php.net>

@ Allow a series of consecutive catch() statements (Andi, Zend Engine)
class MyException1 {


class MyException2 {


try {
throw new MyException2();
} catch (MyException1 $m) {
print "Caught MyException1";
} catch (MyException2 $m) {
print "Caught MyException2";

# 1fd542fd 10-Feb-2002 Sebastian Bergmann <sebastian@php.net>

Export lex_scan(). Both the PHPDoc and tokenizer extension need this. I hope this is okay with Z&A.

# e366f5db 04-Feb-2002 Andi Gutmans <andi@php.net>

- Fix problem with the objects_destructor called during shutdown. It was
- freeing objects from id 0 instead of id 1. id 0 is not used.
- Change isset/empty opcodes to support static members and the new way of
- doing $this->foobar. Also the opcodes operate now on the hash table
- combined with the variable names so that they can be overloaded by the
- soon to be added overloading patch.

# 2131b019 20-Jan-2002 Andi Gutmans <andi@php.net>

- Improve performance of functions that use $GLOBALS[]
- Please check this and make sure it doesn't break anything.

# f1e8815c 13-Jan-2002 Andi Gutmans <andi@php.net>

- Change exception handling to use the Java-like catch(MyException $exception)
- semantics. Example:

class MyException {
function __construct($exception)
$this->exception = $exception;

function Display()
print "MyException: $this->exception\n";

class MyExceptionFoo extends MyException {
function __construct($exception)
$this->exception = $exception;
function Display()
print "MyException: $this->exception\n";

try {
throw new MyExceptionFoo("Hello");
} catch (MyException $exception) {

# 62dc854b 06-Jan-2002 Sebastian Bergmann <sebastian@php.net>

Happy New Year.

# e56fb163 05-Jan-2002 Andi Gutmans <andi@php.net>

- Allow passing of $this as function arguments.
- Fix a bug which I introduced a couple of months ago

# a4248dd5 05-Jan-2002 Andi Gutmans <andi@php.net>

- Significantly improve the performance of method calls and $this->member
- lookups.

# 6203a250 04-Jan-2002 Andi Gutmans <andi@php.net>

- Separate other kinds of function calls too.
- Significantly improve performance of function calls by moving lowercasing
- the function name to compile-time when possible.

# 0ab9d112 04-Jan-2002 Andi Gutmans <andi@php.net>

- Start splitting up different kinds of function calls into different
- opcodes.

# ae1a7025 28-Dec-2001 Andi Gutmans <andi@php.net>

- Fix some case insensitivity stuff in respect to classes

# b3fd2faa 27-Dec-2001 Andi Gutmans <andi@php.net>

- Support parent:: again

# 2ce4b476 26-Dec-2001 Andi Gutmans <andi@php.net>

- Initial support for _clone()

# ac7ed464 16-Dec-2001 Andi Gutmans <andi@php.net>

- Start adding parsed variable checks.

# 880e7d8c 16-Dec-2001 Andi Gutmans <andi@php.net>

- Framework for knowing what kind of variable we just parsed.
- This will be used in compile-time error checking which couldn't be done
- at the level of the grammar.

# f4b832d2 13-Dec-2001 Andi Gutmans <andi@php.net>

- Fix crash bug in startup code.
- Start work on being able to reference global and local scope

# 74efc41f 12-Dec-2001 Andi Gutmans <andi@php.net>

- Make classes have scope and function/constant lookups default to the class

# d863d52a 11-Dec-2001 Sebastian Bergmann <sebastian@php.net>

Update headers.

# 3bfee898 10-Dec-2001 Andi Gutmans <andi@php.net>

- More namespaces work.
- Nuke memory leak.

# e858d278 30-Nov-2001 Andi Gutmans <andi@php.net>

- Initial support for class constants. There are still a few semantic
- issues which need to be looked into but basically it seems to work.
- Example:
class foo
const hey = "hello";

print foo::hey;

# 7cd6ccc0 26-Nov-2001 Andi Gutmans <andi@php.net>

- Support static $var = 0; style initialization of static class
- members. For example:
- class foo {
- static $my_static = 5;
- }
- print foo::$my_static;

# d2da63f6 25-Nov-2001 Andi Gutmans <andi@php.net>

- Support static members. The following script works:
class foo
class bar
function init_values()
for ($i=1; $i<10; $i++) {
foo::bar::$hello[$i] = $i*$i;

function print_values()
for ($i=1; $i<10; $i++) {
print foo::bar::$hello[$i] . "\n";


for ($i=1; $i<10; $i++) {
print $hello[$i]?"Shouldn't be printed\n":"";

# 559d611a 24-Nov-2001 Andi Gutmans <andi@php.net>


# a332f826 04-Nov-2001 Andi Gutmans <andi@php.net>

- Support instantiation of nested class. The following script now should
- work:
- class foo
- {
- function bar()
- {
- print "bar() in class bar\n";
- }
- class barbara
- {
- function bar()
- {
- print "bar() in class foo::barbara\n";
- }
- }
- }
- $obj = new foo();
- $obj->bar();
- $obj = new foo::barbara();
- $obj->bar();

# 26578c38 29-Oct-2001 Andi Gutmans <andi@php.net>

- Initial support for nested class definitions

# 2eabb14d 30-Sep-2001 Andi Gutmans <andi@php.net>

- Merge the NAMESPACES_BRANCH. It wasn't a good idea to have a branch when
- the whole CVS tree is work in progress

# 9f61e47c 10-Sep-2001 Zeev Suraski <zeev@php.net>

MFZE1 (nuke cplusplus code)

# 819ea51d 31-Aug-2001 Zeev Suraski <zeev@php.net>


# 61970215 30-Aug-2001 Andi Gutmans <andi@php.net>

- Make it compile in thread-safe mode.

# 560606d2 30-Aug-2001 Andi Gutmans <andi@php.net>

- Get rid of warning and C++ comments

# 29f5dbe1 30-Aug-2001 Andi Gutmans <andi@php.net>

- Initial support for exceptions.

# 9d11db12 08-Aug-2001 Andi Gutmans <andi@php.net>

- Merge new $_GET, $_POST etc. patch from Engine 1 tree

# cb1a40f3 08-Aug-2001 Andi Gutmans <andi@php.net>

- Preliminary patch for method() dereferencing

# 5af7770a 07-Aug-2001 Andi Gutmans <andi@php.net>

- Sync Engine2 CVS with latest Engine CVS

# d76cf1da 31-Jul-2001 Zeev Suraski <zeev@php.net>


# 4187439c 30-Jul-2001 Zeev Suraski <zeev@php.net>


# b5770382 30-Jul-2001 Zeev Suraski <zeev@php.net>

Avoid TSRMLS_FETCH()'s (still lots of work left)

# b4f3b9d3 28-Jul-2001 Zeev Suraski <zeev@php.net>

Redesigned thread safety mechanism - nua nua

# 2c254ba7 27-Jul-2001 Zeev Suraski <zeev@php.net>

Get rid of ELS_*(), and use TSRMLS_*() instead.
This patch is *bound* to break some files, as I must have had typos somewhere.
If you use any uncommon extension, please try to build it...

# 85b4df53 15-Jul-2001 Zeev Suraski <zeev@php.net>

Improved interactive mode - it is now available in all builds, without any significant slowdown

# bda9c83a 06-May-2001 Zeev Suraski <zeev@php.net>

Recover from a parse error in include files (before, it could result in a crash under certain circumstances). Fix bug #8663

# 1e63f440 06-May-2001 Zeev Suraski <zeev@php.net>

Support interactive mode in thread-safe builds

# d2c9e807 26-Feb-2001 Andi Gutmans <andi@php.net>

- Update copyright year

# 6f6e13de 26-Dec-2000 Zeev Suraski <zeev@php.net>

Use iostream.h instead of istream.h (IBM's compiler doesn't come with istream.h,
and iostream.h should include it)

# 8d908256 27-Nov-2000 Andi Gutmans <andi@php.net>

- Allow passing references which are returned from functions and new
- statements to be passed by reference.

# 1ccf9406 11-Nov-2000 Andi Gutmans <andi@php.net>

- Move SET_UNUSED() to header

# 5e33cdae 10-Nov-2000 Andi Gutmans <andi@php.net>

- Remove this damn thing once again.

# f950a372 09-Nov-2000 Andi Gutmans <andi@php.net>

- Maybe it's OK now? :)

# 113a5bb8 09-Nov-2000 Andi Gutmans <andi@php.net>

- Undo the previous commit for fixing $obj = new foo().

# d9d4824c 09-Nov-2000 Andi Gutmans <andi@php.net>

- Commit experimental patch to fix the problem when doing $a = new foo()
and the constructor assigns $this by reference to other symbol table
elements. Thanks to Daniel J. Rodriguez on this one.

# f1a9920b 02-Nov-2000 Zeev Suraski <zeev@php.net>

Maintain consistency

# ce501c78 02-Nov-2000 Andi Gutmans <andi@php.net>

- Replace do_exit() with zend_do_exit().
- Problem reported by David Hedbor <david@hedbor.org>

# d0fbddcc 29-Oct-2000 Zeev Suraski <zeev@php.net>

Fix a corruption bug, when erroneously allowing to send non-variables by reference (several
bug-db reports seem to originate in this bug)

# 7b0d92dd 29-Oct-2000 Zeev Suraski <zeev@php.net>

Unify the names of these last 3 files...

# 5286b397 12-Sep-2000 Zeev Suraski <zeev@php.net>

Make compile_string() accept a description of the code

# 7795aca4 15-Aug-2000 Zeev Suraski <zeev@php.net>

Fix warning issue (compile errors inside require()'d files were incorrectly supressed)

# 5090b1e8 13-Aug-2000 Stanislav Malyshev <stas@php.net>

Fix zend_fiel_handle handling. Should fix URL include
and various opened_path inconsistencies.

# e5015ed5 10-Aug-2000 Andi Gutmans <andi@php.net>

@ Fix problem with nested foreach()'s (Andi, Zend Engine)

# c06692e9 09-Aug-2000 Zeev Suraski <zeev@php.net>

The patch we promised - redesigned the compilation/execution API:
- Smaller memory footprint for the op arrays
- Slightly faster compilation times (due to saved erealloc() calls and faster zend_op
- include_once() & require_once() share the same file list
- Consistency between include() and require() - this mostly means that return()
works inside require()'d files just as it does in include() files (it used to
be meaningless in require()'d files, most of the time (see below))
- Made require() consistent with itself. Before, if the argument was not a constant
string, require() took the include() behavior (with return()).
- Removed lots of duplicate code.
Bottom line - require() and include() are very similar now; require() is simply an include()
which isn't allowed to fail. Due to the erealloc() calls for large op arrays, require()
didn't end up being any faster than include() in the Zend engine.

# f4e2a900 11-Jul-2000 Andi Gutmans <andi@php.net>

- Oops. Too early in the morning

# e95220e7 11-Jul-2000 Andi Gutmans <andi@php.net>

- Include iostream.h in C++.

# a6172174 03-Jul-2000 Sascha Schumann <sas@php.net>

Replace macros which begin with an underscore through an appropiately
named macro.

# 727398b2 13-Jun-2000 Andi Gutmans <andi@php.net>

Add to the API

# df74f1df 13-Jun-2000 Sascha Schumann <sas@php.net>

Add optional support for C0x inline semantics.

These are enabled by specifying `--enable-c0x-inline' on the command
line. We might add an autoconf check for this particular feature

# eb0e6946 09-Jun-2000 Andi Gutmans <andi@php.net>

- Andrei, this is for you!
- Add zend_register_internal_class_ex() which allows you to specify a
- parent to inherit from. You can either specify the parent directly or via
- its name.

# 0b7a9cea 03-Jun-2000 Zeev Suraski <zeev@php.net>

- Fix Win32 compilation (Use winsock2.h from now on)
- Add lambda() support

# a8b0d960 21-May-2000 Andi Gutmans <andi@php.net>

- Fix Apache php source highlighting mode. It was crashing due to the
- module shutdown functions being called when the startup functions weren't
- being called.

# 69eb908f 03-May-2000 Andi Gutmans <andi@php.net>

- Change fetch_type to be zend_uint

# 42d15298 29-Apr-2000 Zeev Suraski <zeev@php.net>

Fix possible bug with extension dtors being called without the ctors being called first

# e0a48fe6 29-Apr-2000 Zeev Suraski <zeev@php.net>


# 974671ec 27-Apr-2000 Zeev Suraski <zeev@php.net>

*** empty log message ***

# 4b6594c5 27-Apr-2000 Zeev Suraski <zeev@php.net>

Change to using the #define's

# 207167c5 19-Apr-2000 Andi Gutmans <andi@php.net>

- Export pass_include() for Windows

# e663d856 10-Apr-2000 Zeev Suraski <zeev@php.net>

Fix object overloading support

# 232b9045 10-Apr-2000 Zeev Suraski <zeev@php.net>

Clean up last/size definitions

# 4cdcf638 09-Apr-2000 Zeev Suraski <zeev@php.net>

*** empty log message ***

# 521c8af6 29-Mar-2000 Torben Wilson <torben@php.net>

Added !== (is not identical) operator.

# 3b88c31b 19-Mar-2000 Thies C. Arntzen <thies@php.net>

kill warning

# 61379fe0 13-Mar-2000 Andi Gutmans <andi@php.net>

- Another zend_uchar

# e92f6f15 13-Mar-2000 Andi Gutmans <andi@php.net>

- define zend_uint and zend_uchar and use them in a few places

# 712ffd4c 13-Mar-2000 Andi Gutmans <andi@php.net>

- Change type from int -> char

# b5de3953 10-Mar-2000 Andi Gutmans <andi@php.net>

- Support require_once().

# 9cc70442 10-Mar-2000 Andi Gutmans <andi@php.net>

- Cleanup old IMPORT stuff

# 5e55e47f 06-Mar-2000 Zeev Suraski <zeev@php.net>

It's official now...

# 0ac9536d 19-Feb-2000 Zeev Suraski <zeev@php.net>

(c) patch

# 9b840c5f 16-Feb-2000 Andi Gutmans <andi@php.net>

- Hopefully fix Thies' bug report.

# 7fa17e8e 14-Feb-2000 Andi Gutmans <andi@php.net>

- Put in the infrastructure for the unset() fix. Right now it has the old
behavior but I just need time tomorrow to add the correct behavior.

# b6197bcf 04-Feb-2000 Zeev Suraski <zeev@php.net>

Maintain a state of whether we're compiling and/or executing

# 485412ec 01-Feb-2000 Zeev Suraski <zeev@php.net>

Improve dependencies

# 45686e3a 31-Jan-2000 Andi Gutmans <andi@php.net>

- This has to always be done.

# f2d3ce41 31-Jan-2000 Zeev Suraski <zeev@php.net>

- Optimized garbage mechanism
- Fixed another buglet in the parser

# ad115d20 29-Jan-2000 Zeev Suraski <zeev@php.net>

Fix require()

# 7663e4f6 29-Jan-2000 Andi Gutmans <andi@php.net>

- Add parser support for string offsets. This added three shift/reduce
conflicts but they all seem to be fine.
- Cleaned up the parsing rules a bit and made them much more compact and
- Please CVS update and see that I didn't break anything.

# fafbf6d8 24-Jan-2000 Zeev Suraski <zeev@php.net>

- Implement declare() with declarables framework
- Implement ticks - Germany&Norway - 5 points!

# 62114c18 17-Jan-2000 Zeev Suraski <zeev@php.net>

Destructors no longer return ints, the low level problem it was intended to solve is long gone now...

# dc0e6632 16-Jan-2000 Zeev Suraski <zeev@php.net>

Allow module startup to be separate from the compiler/executor startup

# 400ee6ca 31-Dec-1999 Andi Gutmans <andi@php.net>

- Fix bug #3073. continue in do..while() loops should work now

# 62b2087a 24-Dec-1999 Andi Gutmans <andi@php.net>

- Create two new macro's. ALLOC_ZVAL() and FREE_ZVAL(z) and make Zend use

# 67b4b3a6 23-Dec-1999 Zeev Suraski <zeev@php.net>

- require() of a dynamic expression now has the standard require() semantics
- Fixed a memory leak in require() of a dynamic expression

# 7fe808ea 17-Dec-1999 Andi Gutmans <andi@php.net>

- By mistake commited this to the branch. It fixes a bug we introduced with
the return reference patch.

# ced9cee1 15-Dec-1999 Zeev Suraski <zeev@php.net>

- Implement return by reference:
- In function declaration instead of the return statement
- In the assignment phase
- Implement ability to turn off support for call-time pass by reference

# ef596bba 06-Dec-1999 Zeev Suraski <zeev@php.net>

Move the #include of zend-parser.h out of zend_compile.h

# 00c3ac90 06-Dec-1999 Zeev Suraski <zeev@php.net>

Localize a couple of macros

# 9baad804 04-Dec-1999 Zeev Suraski <zeev@php.net>

- Break the zend->PHP dependency introduced by the .php extension for use(),
by providing an API
- Enable Stig's patch for use() extensions (it wasn't refered to by the parser)
- Fix a memory leak in that code

# aaadc71d 04-Dec-1999 Stig S. Bakken <stig@php.net>

Fix typo, add prototype for use_filename().

# fdcaba40 02-Dec-1999 Zeev Suraski <zeev@php.net>

Solve a couple of compile issues

# 93536507 01-Dec-1999 Stig S. Bakken <stig@php.net>

Fix warnings surfacing in maintainer-mode.

# 5463dd5b 30-Nov-1999 Andi Gutmans <andi@php.net>

- Add use support (behaves like require, but will not use the same file twice)
- Add import support (behaves like include, but requires parentheses; will not
use the same file twice; Currently, it is not yet properly implemented, and
only behaves like include)

# 58153dfe 26-Nov-1999 Zeev Suraski <zeev@php.net>

- Improve the file handle closing code

# 4ebf7b85 14-Nov-1999 Andi Gutmans <andi@php.net>

- Fix comment as to Joey's findings

# 6d988ec6 03-Nov-1999 Andi Gutmans <andi@php.net>

- Add support for BYREF_FORCE_REST

# 7f35cfda 25-Oct-1999 Zeev Suraski <zeev@php.net>

*** empty log message ***

# 98f02543 19-Oct-1999 Andi Gutmans <andi@php.net>


# 7a205f60 19-Oct-1999 Andi Gutmans <andi@php.net>

- Preliminary submit of Thie's patch. Will fix the rest on Windows
as this was added on UNIX with patch. Changed IS_SAME -> IS_IDENTICAL

# 1877b077 05-Oct-1999 Sascha Schumann <sas@php.net>

This causes link problems with anything higher than -O0.

# 1c0f1364 03-Oct-1999 Andi Gutmans <andi@php.net>

- Hooray. This might actually work. (I hope)

# 86357a9c 01-Oct-1999 Andi Gutmans <andi@php.net>

- Move is_ref back to being an unsigned char and not a bit field.

# 4dd47ffb 01-Oct-1999 Andi Gutmans <andi@php.net>

- Remove locking support completely

# 03d354dc 01-Oct-1999 Andi Gutmans <andi@php.net>

- For Andrei. Implement references in array() initializations

# 06d04d15 29-Sep-1999 Andi Gutmans <andi@php.net>

- Fix SEND_VAR problem after fetch'ing a variable and not knowing the fetch type

# 59d5462a 28-Sep-1999 Andi Gutmans <andi@php.net>

- Stop using the locking mechanism and start using refcount.
Now we know when we need to free but we still need to support it

# babad269 20-Sep-1999 Andi Gutmans <andi@php.net>

- First step in fixing locking problem. Array fetches are now always done last.
Later on we will want to delay the write fetches even longer until after their
resulting expression is parsed. The way it is now, will make it very easy
to delay as long as we need.

# 82c8a9e7 20-Sep-1999 Andi Gutmans <andi@php.net>

- Indirect references had all of the fetches by mistakenly backpatched.
Actually all of the fetches are supposed to be read, except for the last

# 009025e0 06-Sep-1999 Stig S. Bakken <stig@php.net>

* header file cleanup
* fixed --enable-thread-safety build for UNIX

I don't have a Win32 environment available, could someone please try
compiling on Win32 to see if I got all the header file stuff right there?

# b5f5e9a6 15-Aug-1999 Andi Gutmans <andi@php.net>

- Optimize the execute stack a bit.

# ef5b7e21 14-Aug-1999 Zeev Suraski <zeev@php.net>

Generate better warnings for class/function redefinitions

# 720d32f5 07-Aug-1999 Zeev Suraski <zeev@php.net>

Fix a few leaks

# bbe27ffa 03-Aug-1999 Andi Gutmans <andi@php.net>

- Initialize extended value's and put the fetch_type in it's own variable

# 07e08855 02-Aug-1999 Andi Gutmans <andi@php.net>

Make set_compiled_filename() return a pointer to the allocated file name

# 739132e5 29-Jul-1999 Andi Gutmans <andi@php.net>

- Fixed a leak when doing inheritance. The parent class name wasn't being freed.
- Fixed a stack leak. Functions that had late argument binding were set up as
INIT_FCALL_BY_NAME but were using DO_FCALL and not the corresponding

# 41308d4b 26-Jul-1999 Zeev Suraski <zeev@php.net>

Fix a bug in inheritence from classes defined in include files, that are
inherited from require()'d files

# 8f51f72d 26-Jul-1999 Andi Gutmans <andi@php.net>

- Fix the new operator incompatibility.
- I commented PHP_FUNCTION(strtotime) in datetime.c because it stopped
win32 from compiling. This needs to be fixed!!!
- Check out libzend to compile the tree now.

# 1b6fae10 24-Jul-1999 Zeev Suraski <zeev@php.net>

Thoroughly fix the SWITCH problem. No RETURN handling yet.

# 028cf1a3 23-Jul-1999 Zeev Suraski <zeev@php.net>

Fix bug #1812

# 8d1de13a 19-Jul-1999 Zeev Suraski <zeev@php.net>

0.91 update

# b5b11177 16-Jul-1999 Zeev Suraski <zeev@php.net>

License update

# cccd2445 10-Jul-1999 Zeev Suraski <zeev@php.net>

Get rid of AiCount completely

# 2a6da781 09-Jul-1999 Zeev Suraski <zeev@php.net>

Step 4:
Move to a 7-bit counter (not fully implemented yet)

# 6ec1acbe 09-Jul-1999 Zeev Suraski <zeev@php.net>

Phase 3:
Use a single bit to mark IS_REF variables

# 81d901b1 09-Jul-1999 Zeev Suraski <zeev@php.net>

Step 1 in nuking the garbage collector:
- Change the hash destructor to return int
- Don't kill the bucket on hash_destroy if the destructor returns 0

# d894cf44 08-Jul-1999 Zeev Suraski <zeev@php.net>

Support definition of classes that are derived from classes that are defined in runtime

# 7ed49234 09-Jun-1999 Andi Gutmans <andi@php.net>

- Fix the static array() initializing

# 04b2c1d4 08-Jun-1999 Andi Gutmans <andi@php.net>

* Fix a by-name call/method call bug
* Clean and optimize the whole function call process

# ed06a70f 05-Jun-1999 Zeev Suraski <zeev@php.net>

* Centralized shutdown
* Change shutdown order again

# 1b4b5c4a 04-Jun-1999 Zeev Suraski <zeev@php.net>

New $GLOBALS init

# 88029643 30-May-1999 Sascha Schumann <sas@php.net>

* fix some casts
* introduce unary_op_type - cleaner than casting data voids to function ptrs

# 741b8161 28-May-1999 Zeev Suraski <zeev@php.net>

* Support getThis() for internal functions.
* Fix 'new object or die' and AiCount issue thoroughly (earlier fix didn't
work with the optimizer).
* Add new macros for standardized definition of classes.
* Only report AiCount problems if shutdown was not silent.

# 1250c43a 22-May-1999 Zeev Suraski <zeev@php.net>

* Add struct name to all typedef's so that they can be debugged with MSVC
* Fix an AiCount bug - list(...) = $var was using $var multiple times, and thus
causing AiCount to be decreased multiple times even though it was increased only
once for $var. Mark all FETCH_DIM's so that they won't decrease AiCount, and only
decrease AiCount on the last FETCH_DIM.
* Fix a stupid bug - forgot to pass CLS_C to some compiler function. For some reason
MSVC doesn't report these :I

# 87ba08d1 22-May-1999 Zeev Suraski <zeev@php.net>

Avoid leaking fd's in case of failures

# 9cb2cf13 20-May-1999 Zeev Suraski <zeev@php.net>

Optimize allocations into uninitialized_zval assignments

# 3facf7cb 20-May-1999 Andi Gutmans <andi@php.net>

- Updates we did today

# b0bfa458 15-May-1999 Zeev Suraski <zeev@php.net>

* Fix all hash checks that checked Bucket.arKey for NULL, when it was changed
to char[1], these checks should have been changed to Bucket.nKeyLength==0
* Support runtime declaration of functions. I ended up changing the grammar
to catch top level functions vs. nested functions. The reason is simple -
if we don't have functions properly declared at compile-time, function calls
cannot be resolved at compile time, and have to be resolved at runtime, which
ends up being much much slower (without the optimizer, that is).
It's no biggy though, the grammar change isn't that bad.

# 74a9ed7b 10-May-1999 Zeev Suraski <zeev@php.net>

Weed out all BoundsChecker-found bugs (including a serious file descriptor leak
in the C++ scanner)

# fcaf734f 02-May-1999 Andi Gutmans <andi@php.net>

- Don't support interactive mode when thread safe.

# 2493f680 27-Apr-1999 Zeev Suraski <zeev@php.net>

* Fix debugger+interactive mode bug
* Recognize whether an extension is with debug information or not

# 7c4a0838 26-Apr-1999 Zeev Suraski <zeev@php.net>

Various thread safety fixes and DLL updates

# 5a5806e0 24-Apr-1999 Zeev Suraski <zeev@php.net>

Cleanups, remove old ts code

# 1aa2c5c0 23-Apr-1999 Zeev Suraski <zeev@php.net>

Ok, call me crazy, because I probably am.
Thread safe version now uses a C++ scanner object. Works fully.

# 551fe778 22-Apr-1999 Zeev Suraski <zeev@php.net>

Make token names uniform, they all begin with T_ now.

# 7a87fcbb 21-Apr-1999 Zeev Suraski <zeev@php.net>

Thread safety patch. We're still not quite there but it compiles again, and
more logic has been implemented.

# fa76f0c9 14-Apr-1999 Zeev Suraski <zeev@php.net>

Compile fix

# 39f9487e 14-Apr-1999 Andi Gutmans <andi@php.net>

-Tiny patches

# 39a7f4c3 12-Apr-1999 Zeev Suraski <zeev@php.net>

This patch is a go. Not fully optimized yet, but working properly.
Prepatch tagged as BEFORE_STACK_PATCH.

# 5cb576d8 09-Apr-1999 Andi Gutmans <andi@php.net>

- I guess print $GLOBALS and print "$GLOBALS" should yield the same result
so I returned the one in encaps_var.
- Made INITAL_OP_ARRAY_SIZE smaller (64? can't remeber). I don't think the
erealloc()'s during compile time are such a biggy, we might make it even
smaller. We can have a configure time option as to it's size.

# 17bdb708 08-Apr-1999 Zeev Suraski <zeev@php.net>

$GLOBALS support

# 573b4602 07-Apr-1999 Andi Gutmans <andi@php.net>

Zend Library