diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2020-04-06 12:46:52 +0200 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2020-07-31 15:53:36 +0200 |
| commit | d92229d8c78aac25925284e23aa7903dca9ed005 (patch) | |
| tree | ec01712dbe44a11cb7368492388cb39ab04dac17 /ext/opcache/zend_persist.c | |
| parent | 9a71d47d7334b9e2f83db48498047750c04cd192 (diff) | |
| download | php-git-d92229d8c78aac25925284e23aa7903dca9ed005.tar.gz | |
Implement named parameters
From an engine perspective, named parameters mainly add three
concepts:
* The SEND_* opcodes now accept a CONST op2, which is the
argument name. For now, it is looked up by linear scan and
runtime cached.
* This may leave UNDEF arguments on the stack. To avoid having
to deal with them in other places, a CHECK_UNDEF_ARGS opcode
is used to either replace them with defaults, or error.
* For variadic functions, EX(extra_named_params) are collected
and need to be freed based on ZEND_CALL_HAS_EXTRA_NAMED_PARAMS.
RFC: https://wiki.php.net/rfc/named_params
Closes GH-5357.
Diffstat (limited to 'ext/opcache/zend_persist.c')
| -rw-r--r-- | ext/opcache/zend_persist.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/opcache/zend_persist.c b/ext/opcache/zend_persist.c index 1063106717..ed923a03cc 100644 --- a/ext/opcache/zend_persist.c +++ b/ext/opcache/zend_persist.c @@ -278,7 +278,10 @@ static HashTable *zend_persist_attributes(HashTable *attributes) zend_accel_store_interned_string(copy->lcname); for (i = 0; i < copy->argc; i++) { - zend_persist_zval(©->argv[i]); + if (copy->args[i].name) { + zend_accel_store_interned_string(copy->args[i].name); + } + zend_persist_zval(©->args[i].value); } ZVAL_PTR(v, copy); |
