SERIALIZE_STR(p->name);
}
if (ZEND_TYPE_IS_CLASS(p->type)) {
+ zend_bool allow_null = ZEND_TYPE_ALLOW_NULL(p->type);
zend_string *type_name = ZEND_TYPE_NAME(p->type);
- if (!IS_SERIALIZED(type_name)) {
- zend_bool allow_null = ZEND_TYPE_ALLOW_NULL(p->type);
-
- SERIALIZE_STR(type_name);
- p->type = ZEND_TYPE_ENCODE_CLASS(type_name, allow_null);
- }
+ SERIALIZE_STR(type_name);
+ p->type =
+ (Z_UL(1) << (sizeof(zend_type)*8-1)) | /* type is class */
+ (allow_null ? (Z_UL(1) << (sizeof(zend_type)*8-2)) : Z_UL(0)) | /* type allow null */
+ (zend_type)type_name;
}
p++;
}
if (!IS_UNSERIALIZED(p->name)) {
UNSERIALIZE_STR(p->name);
}
- if (ZEND_TYPE_IS_CLASS(p->type)) {
- zend_string *type_name = ZEND_TYPE_NAME(p->type);
-
- if (!IS_UNSERIALIZED(type_name)) {
- zend_bool allow_null = ZEND_TYPE_ALLOW_NULL(p->type);
+ if (p->type & (Z_UL(1) << (sizeof(zend_type)*8-1))) { /* type is class */
+ zend_bool allow_null = (p->type & (Z_UL(1) << (sizeof(zend_type)*8-2))) != 0; /* type allow null */
+ zend_string *type_name = (zend_string*)(p->type & ~(((Z_UL(1) << (sizeof(zend_type)*8-1))) | ((Z_UL(1) << (sizeof(zend_type)*8-2)))));
- UNSERIALIZE_STR(type_name);
- p->type = ZEND_TYPE_ENCODE_CLASS(type_name, allow_null);
- }
+ UNSERIALIZE_STR(type_name);
+ p->type = ZEND_TYPE_ENCODE_CLASS(type_name, allow_null);
}
p++;
}