1
0
mirror of https://github.com/php/php-src.git synced 2026-04-04 14:42:49 +02:00

Merge branch 'PHP-8.0' into PHP-8.1

* PHP-8.0:
  JIT: Split zend_jit_hash_index_lookup_rw() into zend_jit_hash_index_lookup_rw() and zend_jit_hash_index_lookup_rw_no_packed().
This commit is contained in:
Dmitry Stogov
2021-09-27 22:14:27 +03:00
4 changed files with 22 additions and 3 deletions

View File

@@ -5167,7 +5167,11 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
| GET_ZVAL_LVAL ZREG_FCARG2, op2_addr, TMP1
}
| SET_EX_OPLINE opline, REG0
| EXT_CALL zend_jit_hash_index_lookup_rw, REG0
if (packed_loaded) {
| EXT_CALL zend_jit_hash_index_lookup_rw_no_packed, REG0
} else {
| EXT_CALL zend_jit_hash_index_lookup_rw, REG0
}
| mov REG0, RETVALx
if (not_found_exit_addr) {
if (packed_loaded) {

View File

@@ -615,6 +615,7 @@ static int zend_jit_disasm_init(void)
REGISTER_HELPER(zend_jit_leave_top_func_helper);
REGISTER_HELPER(zend_jit_leave_func_helper);
REGISTER_HELPER(zend_jit_symtable_find);
REGISTER_HELPER(zend_jit_hash_index_lookup_rw_no_packed);
REGISTER_HELPER(zend_jit_hash_index_lookup_rw);
REGISTER_HELPER(zend_jit_hash_lookup_rw);
REGISTER_HELPER(zend_jit_symtable_lookup_rw);

View File

@@ -252,7 +252,7 @@ static zval* ZEND_FASTCALL zend_jit_symtable_find(HashTable *ht, zend_string *st
return zend_hash_find(ht, str);
}
static zval* ZEND_FASTCALL zend_jit_hash_index_lookup_rw(HashTable *ht, zend_long idx)
static zval* ZEND_FASTCALL zend_jit_hash_index_lookup_rw_no_packed(HashTable *ht, zend_long idx)
{
zval *retval = _zend_hash_index_find(ht, idx);
@@ -262,6 +262,16 @@ static zval* ZEND_FASTCALL zend_jit_hash_index_lookup_rw(HashTable *ht, zend_lon
return retval;
}
static zval* ZEND_FASTCALL zend_jit_hash_index_lookup_rw(HashTable *ht, zend_long idx)
{
zval *retval = zend_hash_index_find(ht, idx);
if (!retval) {
retval = zend_undefined_offset_write(ht, idx);
}
return retval;
}
static zval* ZEND_FASTCALL zend_jit_hash_lookup_rw(HashTable *ht, zend_string *str)
{
zval *retval = zend_hash_find_known_hash(ht, str);

View File

@@ -5646,7 +5646,11 @@ static int zend_jit_fetch_dimension_address_inner(dasm_State **Dst, const zend_o
| GET_ZVAL_LVAL ZREG_FCARG2, op2_addr
}
| SET_EX_OPLINE opline, r0
| EXT_CALL zend_jit_hash_index_lookup_rw, r0
if (packed_loaded) {
| EXT_CALL zend_jit_hash_index_lookup_rw_no_packed, r0
} else {
| EXT_CALL zend_jit_hash_index_lookup_rw, r0
}
| test r0, r0
if (not_found_exit_addr) {
if (packed_loaded) {