summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_API.h6
-rw-r--r--Zend/zend_hash.h8
-rw-r--r--Zend/zend_smart_str.h16
-rw-r--r--Zend/zend_string.h35
-rw-r--r--Zend/zend_vm_def.h6
-rw-r--r--Zend/zend_vm_execute.h18
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';