mirror of
https://github.com/php/php-src.git
synced 2025-08-16 14:08:47 +02:00
Bit check micro-optimization
This commit is contained in:
parent
8a719c1b12
commit
c88be6aee1
6 changed files with 16 additions and 16 deletions
|
@ -7603,7 +7603,7 @@ ZEND_VM_HANDLER(123, ZEND_TYPE_CHECK, CONST|TMP|VAR|CV, ANY, TYPE_MASK)
|
|||
zend_free_op free_op1;
|
||||
|
||||
value = GET_OP1_ZVAL_PTR_UNDEF(BP_VAR_R);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
ZEND_VM_C_LABEL(type_check_resource):
|
||||
if (EXPECTED(Z_TYPE_P(value) != IS_RESOURCE)
|
||||
|| EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
|
||||
|
@ -7611,7 +7611,7 @@ ZEND_VM_C_LABEL(type_check_resource):
|
|||
}
|
||||
} else if ((OP1_TYPE & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
|
||||
value = Z_REFVAL_P(value);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
ZEND_VM_C_GOTO(type_check_resource);
|
||||
}
|
||||
} else if (OP1_TYPE == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
|
||||
|
|
|
@ -3908,7 +3908,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_CONST_HANDLER(
|
|||
|
||||
|
||||
value = RT_CONSTANT(opline, opline->op1);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
type_check_resource:
|
||||
if (EXPECTED(Z_TYPE_P(value) != IS_RESOURCE)
|
||||
|| EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
|
||||
|
@ -3916,7 +3916,7 @@ type_check_resource:
|
|||
}
|
||||
} else if ((IS_CONST & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
|
||||
value = Z_REFVAL_P(value);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
goto type_check_resource;
|
||||
}
|
||||
} else if (IS_CONST == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
|
||||
|
@ -18562,7 +18562,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_TMP_HANDLER(ZE
|
|||
zend_free_op free_op1;
|
||||
|
||||
value = _get_zval_ptr_tmp(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
type_check_resource:
|
||||
if (EXPECTED(Z_TYPE_P(value) != IS_RESOURCE)
|
||||
|| EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
|
||||
|
@ -18570,7 +18570,7 @@ type_check_resource:
|
|||
}
|
||||
} else if ((IS_TMP_VAR & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
|
||||
value = Z_REFVAL_P(value);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
goto type_check_resource;
|
||||
}
|
||||
} else if (IS_TMP_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
|
||||
|
@ -22052,7 +22052,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_VAR_HANDLER(ZE
|
|||
zend_free_op free_op1;
|
||||
|
||||
value = _get_zval_ptr_var(opline->op1.var, &free_op1 EXECUTE_DATA_CC);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
type_check_resource:
|
||||
if (EXPECTED(Z_TYPE_P(value) != IS_RESOURCE)
|
||||
|| EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
|
||||
|
@ -22060,7 +22060,7 @@ type_check_resource:
|
|||
}
|
||||
} else if ((IS_VAR & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
|
||||
value = Z_REFVAL_P(value);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
goto type_check_resource;
|
||||
}
|
||||
} else if (IS_VAR == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
|
||||
|
@ -38026,7 +38026,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_TYPE_CHECK_SPEC_CV_HANDLER(ZEN
|
|||
|
||||
|
||||
value = _get_zval_ptr_cv_undef(opline->op1.var EXECUTE_DATA_CC);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
type_check_resource:
|
||||
if (EXPECTED(Z_TYPE_P(value) != IS_RESOURCE)
|
||||
|| EXPECTED(NULL != zend_rsrc_list_get_rsrc_type(Z_RES_P(value)))) {
|
||||
|
@ -38034,7 +38034,7 @@ type_check_resource:
|
|||
}
|
||||
} else if ((IS_CV & (IS_CV|IS_VAR)) && Z_ISREF_P(value)) {
|
||||
value = Z_REFVAL_P(value);
|
||||
if ((1 << (uint32_t)Z_TYPE_P(value) & opline->extended_value)) {
|
||||
if ((opline->extended_value >> (uint32_t)Z_TYPE_P(value)) & 1) {
|
||||
goto type_check_resource;
|
||||
}
|
||||
} else if (IS_CV == IS_CV && UNEXPECTED(Z_TYPE_P(value) == IS_UNDEF)) {
|
||||
|
|
|
@ -350,7 +350,7 @@ static int php_json_escape_string(
|
|||
0xffffffff, 0x500080c4, 0x10000000, 0x00000000};
|
||||
|
||||
pos++;
|
||||
if (EXPECTED(!(charmap[us >> 5] & (1 << (us & 0x1f))))) {
|
||||
if (EXPECTED(!((charmap[us >> 5] >> (us & 0x1f)) & 1))) {
|
||||
smart_str_appendc(buf, (unsigned char) us);
|
||||
} else {
|
||||
switch (us) {
|
||||
|
|
|
@ -108,7 +108,7 @@ MYSQLND_METHOD(mysqlnd_result_buffered_c, initialize_result_set_rest)(MYSQLND_RE
|
|||
|
||||
for (i = 0; i < result->row_count; i++) {
|
||||
/* (i / 8) & the_bit_for_i*/
|
||||
if (initialized[i >> 3] & (1 << (i & 7))) {
|
||||
if ((initialized[i >> 3] >> (i & 7)) & 1) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1151,7 +1151,7 @@ MYSQLND_METHOD(mysqlnd_result_buffered_c, fetch_row)(MYSQLND_RES * result, void
|
|||
if (rc != PASS) {
|
||||
DBG_RETURN(FAIL);
|
||||
}
|
||||
if (!(set->initialized[set->current_row >> 3] & (1 << (set->current_row & 7)))) {
|
||||
if (!((set->initialized[set->current_row >> 3] >> (set->current_row & 7)) & 1)) {
|
||||
set->initialized[set->current_row >> 3] |= (1 << (set->current_row & 7)); /* mark initialized */
|
||||
|
||||
++set->initialized_rows;
|
||||
|
|
|
@ -660,7 +660,7 @@ static inline int ct_eval_isset_isempty(zval *result, uint32_t extended_value, z
|
|||
}
|
||||
|
||||
static inline void ct_eval_type_check(zval *result, uint32_t type_mask, zval *op1) {
|
||||
ZVAL_BOOL(result, (1 << Z_TYPE_P(op1)) & type_mask);
|
||||
ZVAL_BOOL(result, (type_mask >> Z_TYPE_P(op1)) & 1);
|
||||
}
|
||||
|
||||
static inline int ct_eval_in_array(zval *result, uint32_t extended_value, zval *op1, zval *op2) {
|
||||
|
|
|
@ -1679,7 +1679,7 @@ static zend_always_inline int php_valid_var_name(const char *var_name, size_t va
|
|||
/* These are allowed as first char: [a-zA-Z_\x7f-\xff] */
|
||||
ch = (uint32_t)((unsigned char *)var_name)[0];
|
||||
#if 1
|
||||
if (UNEXPECTED(!(charset[ch >> 5] & (1 << (ch & 0x1f))))) {
|
||||
if (UNEXPECTED(!((charset[ch >> 5] >> (ch & 0x1f)) & 1))) {
|
||||
#else
|
||||
if (var_name[0] != '_' &&
|
||||
(ch < 65 /* A */ || /* Z */ ch > 90) &&
|
||||
|
@ -1696,7 +1696,7 @@ static zend_always_inline int php_valid_var_name(const char *var_name, size_t va
|
|||
do {
|
||||
ch = (uint32_t)((unsigned char *)var_name)[i];
|
||||
#if 1
|
||||
if (UNEXPECTED(!(charset[8 + (ch >> 5)] & (1 << (ch & 0x1f))))) {
|
||||
if (UNEXPECTED(!((charset[8 + (ch >> 5)] >> (ch & 0x1f)) & 1))) {
|
||||
#else
|
||||
if (var_name[i] != '_' &&
|
||||
(ch < 48 /* 0 */ || /* 9 */ ch > 57) &&
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue