diff options
Diffstat (limited to 'Zend')
| -rw-r--r-- | Zend/zend_API.h | 6 | ||||
| -rw-r--r-- | Zend/zend_hash.h | 8 | ||||
| -rw-r--r-- | Zend/zend_smart_str.h | 16 | ||||
| -rw-r--r-- | Zend/zend_string.h | 35 | ||||
| -rw-r--r-- | Zend/zend_vm_def.h | 6 | ||||
| -rw-r--r-- | Zend/zend_vm_execute.h | 18 |
6 files changed, 40 insertions, 49 deletions
diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 61e442b441..df006e3396 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -552,9 +552,9 @@ END_EXTERN_C() #if ZEND_DEBUG #define CHECK_ZVAL_STRING(str) \ - if ((str)->val[(str)->len] != '\0') { zend_error(E_WARNING, "String is not zero-terminated (%s)", (str)->val); } + if (ZSTR_VAL(str)[ZSTR_LEN(str)] != '\0') { zend_error(E_WARNING, "String is not zero-terminated (%s)", ZSTR_VAL(str)); } #define CHECK_ZVAL_STRING_REL(str) \ - if ((str)->val[(str)->len] != '\0') { zend_error(E_WARNING, "String is not zero-terminated (%s) (source: %s:%d)", (str)->val ZEND_FILE_LINE_RELAY_CC); } + if (ZSTR_VAL(str)[ZSTR_LEN(str)] != '\0') { zend_error(E_WARNING, "String is not zero-terminated (%s) (source: %s:%d)", ZSTR_VAL(str) ZEND_FILE_LINE_RELAY_CC); } #else #define CHECK_ZVAL_STRING(z) #define CHECK_ZVAL_STRING_REL(z) @@ -918,7 +918,7 @@ ZEND_API void ZEND_FASTCALL zend_wrong_callback_error(int severity, int num, cha Z_PARAM_PROLOGUE(separate); \ if (UNEXPECTED(!zend_parse_arg_object(_arg, &dest, _ce, check_null))) { \ if (_ce) { \ - _error = (_ce)->name->val; \ + _error = ZSTR_VAL((_ce)->name); \ error_code = ZPP_ERROR_WRONG_CLASS; \ break; \ } else { \ diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index 9d9ecfb85d..d71e76d5ce 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -264,7 +264,7 @@ static zend_always_inline int _zend_handle_numeric_str(const char *key, size_t l _zend_handle_numeric_str(key, length, &idx) #define ZEND_HANDLE_NUMERIC(key, idx) \ - ZEND_HANDLE_NUMERIC_STR((key)->val, (key)->len, idx) + ZEND_HANDLE_NUMERIC_STR(ZSTR_VAL(key), ZSTR_LEN(key), idx) static zend_always_inline zval *zend_hash_find_ind(const HashTable *ht, zend_string *key) @@ -900,7 +900,7 @@ static zend_always_inline zval *_zend_hash_append(HashTable *ht, zend_string *ke zend_string_hash_val(key); } p->key = key; - p->h = key->h; + p->h = ZSTR_H(key); nIndex = (uint32_t)p->h | ht->nTableMask; Z_NEXT(p->val) = HT_HASH(ht, nIndex); HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); @@ -922,7 +922,7 @@ static zend_always_inline zval *_zend_hash_append_ptr(HashTable *ht, zend_string zend_string_hash_val(key); } p->key = key; - p->h = key->h; + p->h = ZSTR_H(key); nIndex = (uint32_t)p->h | ht->nTableMask; Z_NEXT(p->val) = HT_HASH(ht, nIndex); HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); @@ -944,7 +944,7 @@ static zend_always_inline void _zend_hash_append_ind(HashTable *ht, zend_string zend_string_hash_val(key); } p->key = key; - p->h = key->h; + p->h = ZSTR_H(key); nIndex = (uint32_t)p->h | ht->nTableMask; Z_NEXT(p->val) = HT_HASH(ht, nIndex); HT_HASH(ht, nIndex) = HT_IDX_TO_HASH(idx); diff --git a/Zend/zend_smart_str.h b/Zend/zend_smart_str.h index 7eae04e892..39478511a8 100644 --- a/Zend/zend_smart_str.h +++ b/Zend/zend_smart_str.h @@ -52,7 +52,7 @@ static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, zen if (UNEXPECTED(!str->s)) { goto do_smart_str_realloc; } else { - len += str->s->len; + len += ZSTR_LEN(str->s); if (UNEXPECTED(len >= str->a)) { do_smart_str_realloc: if (persistent) { @@ -75,28 +75,28 @@ static zend_always_inline void smart_str_free(smart_str *str) { static zend_always_inline void smart_str_0(smart_str *str) { if (str->s) { - str->s->val[str->s->len] = '\0'; + ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0'; } } static zend_always_inline void smart_str_appendc_ex(smart_str *dest, char ch, zend_bool persistent) { size_t new_len = smart_str_alloc(dest, 1, persistent); - dest->s->val[new_len - 1] = ch; - dest->s->len = new_len; + ZSTR_VAL(dest->s)[new_len - 1] = ch; + ZSTR_LEN(dest->s) = new_len; } static zend_always_inline void smart_str_appendl_ex(smart_str *dest, const char *str, size_t len, zend_bool persistent) { size_t new_len = smart_str_alloc(dest, len, persistent); - memcpy(dest->s->val + dest->s->len, str, len); - dest->s->len = new_len; + memcpy(ZSTR_VAL(dest->s) + ZSTR_LEN(dest->s), str, len); + ZSTR_LEN(dest->s) = new_len; } static zend_always_inline void smart_str_append_ex(smart_str *dest, const zend_string *src, zend_bool persistent) { - smart_str_appendl_ex(dest, src->val, src->len, persistent); + smart_str_appendl_ex(dest, ZSTR_VAL(src), ZSTR_LEN(src), persistent); } static zend_always_inline void smart_str_append_smart_str_ex(smart_str *dest, const smart_str *src, zend_bool persistent) { - if (src->s && src->s->len) { + if (src->s && ZSTR_LEN(src->s)) { smart_str_append_ex(dest, src->s, persistent); } } diff --git a/Zend/zend_string.h b/Zend/zend_string.h index 8349fd7703..137545624e 100644 --- a/Zend/zend_string.h +++ b/Zend/zend_string.h @@ -37,8 +37,9 @@ END_EXTERN_C() /* Shortcuts */ -#define ZSTR_VAL(zstr) zend_string_get_val(zstr) +#define ZSTR_VAL(zstr) (zstr)->val #define ZSTR_LEN(zstr) (zstr)->len +#define ZSTR_H(zstr) (zstr)->h #define ZSTR_HASH(zstr) zend_string_hash_val(zstr) /* Compatibility macros */ @@ -65,7 +66,7 @@ END_EXTERN_C() GC_REFCOUNT(str) = 1; \ GC_TYPE_INFO(str) = IS_STRING; \ zend_string_forget_hash_val(str); \ - zend_string_set_len(str, _len); \ + ZSTR_LEN(str) = _len; \ } while (0) #define ZSTR_ALLOCA_INIT(str, s, len, use_heap) do { \ @@ -78,27 +79,17 @@ END_EXTERN_C() /*---*/ -static zend_always_inline char * zend_string_get_val(zend_string *s) -{ - return s->val; -} - -static zend_always_inline void zend_string_set_len(zend_string *s, size_t len) -{ - s->len = len; -} - static zend_always_inline zend_ulong zend_string_hash_val(zend_string *s) { - if (!s->h) { - s->h = zend_hash_func(ZSTR_VAL(s), ZSTR_LEN(s)); + if (!ZSTR_H(s)) { + ZSTR_H(s) = zend_hash_func(ZSTR_VAL(s), ZSTR_LEN(s)); } - return s->h; + return ZSTR_H(s); } static zend_always_inline void zend_string_forget_hash_val(zend_string *s) { - s->h = 0; + ZSTR_H(s) = 0; } static zend_always_inline uint32_t zend_string_refcount(const zend_string *s) @@ -139,7 +130,7 @@ static zend_always_inline zend_string *zend_string_alloc(size_t len, int persist GC_INFO(ret) = 0; #endif zend_string_forget_hash_val(ret); - zend_string_set_len(ret, len); + ZSTR_LEN(ret) = len; return ret; } @@ -157,7 +148,7 @@ static zend_always_inline zend_string *zend_string_safe_alloc(size_t n, size_t m GC_INFO(ret) = 0; #endif zend_string_forget_hash_val(ret); - zend_string_set_len(ret, (n * m) + l); + ZSTR_LEN(ret) = (n * m) + l; return ret; } @@ -194,7 +185,7 @@ static zend_always_inline zend_string *zend_string_realloc(zend_string *s, size_ if (!ZSTR_IS_INTERNED(s)) { if (EXPECTED(GC_REFCOUNT(s) == 1)) { ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent); - zend_string_set_len(ret, len); + ZSTR_LEN(ret) = len; zend_string_forget_hash_val(ret); return ret; } else { @@ -214,7 +205,7 @@ static zend_always_inline zend_string *zend_string_extend(zend_string *s, size_t if (!ZSTR_IS_INTERNED(s)) { if (EXPECTED(GC_REFCOUNT(s) == 1)) { ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent); - zend_string_set_len(ret, len); + ZSTR_LEN(ret) = len; zend_string_forget_hash_val(ret); return ret; } else { @@ -234,7 +225,7 @@ static zend_always_inline zend_string *zend_string_truncate(zend_string *s, size if (!ZSTR_IS_INTERNED(s)) { if (EXPECTED(GC_REFCOUNT(s) == 1)) { ret = (zend_string *)perealloc(s, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(len)), persistent); - zend_string_set_len(ret, len); + ZSTR_LEN(ret) = len; zend_string_forget_hash_val(ret); return ret; } else { @@ -253,7 +244,7 @@ static zend_always_inline zend_string *zend_string_safe_realloc(zend_string *s, if (!ZSTR_IS_INTERNED(s)) { if (GC_REFCOUNT(s) == 1) { ret = (zend_string *)safe_perealloc(s, n, m, ZEND_MM_ALIGNED_SIZE(_ZSTR_STRUCT_SIZE(l)), persistent); - zend_string_set_len(ret, (n * m) + l); + ZSTR_LEN(ret) = (n * m) + l; zend_string_forget_hash_val(ret); return ret; } else { diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 7060ccb3b5..a153d2a12d 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2863,14 +2863,14 @@ ZEND_VM_HANDLER(56, ZEND_ROPE_END, TMP, CONST|TMPVAR|CV) } } for (i = 0; i <= opline->extended_value; i++) { - len += rope[i]->len; + len += ZSTR_LEN(rope[i]); } ret = EX_VAR(opline->result.var); ZVAL_STR(ret, zend_string_alloc(len, 0)); target = Z_STRVAL_P(ret); for (i = 0; i <= opline->extended_value; i++) { - memcpy(target, rope[i]->val, rope[i]->len); - target += rope[i]->len; + memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i])); + target += ZSTR_LEN(rope[i]); zend_string_release(rope[i]); } *target = '\0'; diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 7c9d9b7b4e..64fa70dd8a 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -12999,14 +12999,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_END_SPEC_TMP_CONST_HANDLE } } for (i = 0; i <= opline->extended_value; i++) { - len += rope[i]->len; + len += ZSTR_LEN(rope[i]); } ret = EX_VAR(opline->result.var); ZVAL_STR(ret, zend_string_alloc(len, 0)); target = Z_STRVAL_P(ret); for (i = 0; i <= opline->extended_value; i++) { - memcpy(target, rope[i]->val, rope[i]->len); - target += rope[i]->len; + memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i])); + target += ZSTR_LEN(rope[i]); zend_string_release(rope[i]); } *target = '\0'; @@ -14283,14 +14283,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_END_SPEC_TMP_CV_HANDLER(Z } } for (i = 0; i <= opline->extended_value; i++) { - len += rope[i]->len; + len += ZSTR_LEN(rope[i]); } ret = EX_VAR(opline->result.var); ZVAL_STR(ret, zend_string_alloc(len, 0)); target = Z_STRVAL_P(ret); for (i = 0; i <= opline->extended_value; i++) { - memcpy(target, rope[i]->val, rope[i]->len); - target += rope[i]->len; + memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i])); + target += ZSTR_LEN(rope[i]); zend_string_release(rope[i]); } *target = '\0'; @@ -14796,14 +14796,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_ROPE_END_SPEC_TMP_TMPVAR_HANDL } } for (i = 0; i <= opline->extended_value; i++) { - len += rope[i]->len; + len += ZSTR_LEN(rope[i]); } ret = EX_VAR(opline->result.var); ZVAL_STR(ret, zend_string_alloc(len, 0)); target = Z_STRVAL_P(ret); for (i = 0; i <= opline->extended_value; i++) { - memcpy(target, rope[i]->val, rope[i]->len); - target += rope[i]->len; + memcpy(target, ZSTR_VAL(rope[i]), ZSTR_LEN(rope[i])); + target += ZSTR_LEN(rope[i]); zend_string_release(rope[i]); } *target = '\0'; |
