Lines Matching refs:field

301 	zend_ffi_field *field;  in zend_ffi_make_fake_struct_type()  local
308 ZEND_HASH_FOREACH_PTR(&type->record.fields, field) { in zend_ffi_make_fake_struct_type()
309 switch (ZEND_FFI_TYPE(field->type)->kind) { in zend_ffi_make_fake_struct_type()
553 static uint64_t zend_ffi_bit_field_read(void *ptr, zend_ffi_field *field) /* {{{ */ in zend_ffi_bit_field_read() argument
555 size_t bit = field->first_bit; in zend_ffi_bit_field_read()
556 size_t last_bit = bit + field->bits - 1; in zend_ffi_bit_field_read()
566 mask = (1U << field->bits) - 1U; in zend_ffi_bit_field_read()
595 static void zend_ffi_bit_field_to_zval(void *ptr, zend_ffi_field *field, zval *rv) /* {{{ */ in zend_ffi_bit_field_to_zval() argument
597 uint64_t val = zend_ffi_bit_field_read(ptr, field); in zend_ffi_bit_field_to_zval()
598 if (ZEND_FFI_TYPE(field->type)->kind == ZEND_FFI_TYPE_CHAR in zend_ffi_bit_field_to_zval()
599 || ZEND_FFI_TYPE(field->type)->kind == ZEND_FFI_TYPE_SINT8 in zend_ffi_bit_field_to_zval()
600 || ZEND_FFI_TYPE(field->type)->kind == ZEND_FFI_TYPE_SINT16 in zend_ffi_bit_field_to_zval()
601 || ZEND_FFI_TYPE(field->type)->kind == ZEND_FFI_TYPE_SINT32 in zend_ffi_bit_field_to_zval()
602 || ZEND_FFI_TYPE(field->type)->kind == ZEND_FFI_TYPE_SINT64) { in zend_ffi_bit_field_to_zval()
604 uint64_t shift = 64 - (field->bits % 64); in zend_ffi_bit_field_to_zval()
613 static int zend_ffi_zval_to_bit_field(void *ptr, zend_ffi_field *field, zval *value) /* {{{ */ in zend_ffi_zval_to_bit_field() argument
616 size_t bit = field->first_bit; in zend_ffi_zval_to_bit_field()
617 size_t last_bit = bit + field->bits - 1; in zend_ffi_zval_to_bit_field()
625 mask = ((1U << field->bits) - 1U) << pos; in zend_ffi_zval_to_bit_field()
1117 zend_ffi_field *field; in zend_ffi_cdata_read_field() local
1120 field = *(cache_slot + 1); in zend_ffi_cdata_read_field()
1148 field = zend_hash_find_ptr(&type->record.fields, field_name); in zend_ffi_cdata_read_field()
1149 if (UNEXPECTED(!field)) { in zend_ffi_cdata_read_field()
1159 *(cache_slot + 1) = field; in zend_ffi_cdata_read_field()
1170 if (EXPECTED(!field->bits)) { in zend_ffi_cdata_read_field()
1171 zend_ffi_type *field_type = field->type; in zend_ffi_cdata_read_field()
1177 field->type = field_type = zend_ffi_remember_type(field_type); in zend_ffi_cdata_read_field()
1180 ptr = (void*)(((char*)ptr) + field->offset); in zend_ffi_cdata_read_field()
1181 …type, read_type, rv, (cdata->flags & ZEND_FFI_FLAG_CONST) | (zend_ffi_flags)field->is_const, 0, 0); in zend_ffi_cdata_read_field()
1183 zend_ffi_bit_field_to_zval(ptr, field, rv); in zend_ffi_cdata_read_field()
1195 zend_ffi_field *field; in zend_ffi_cdata_write_field() local
1198 field = *(cache_slot + 1); in zend_ffi_cdata_write_field()
1226 field = zend_hash_find_ptr(&type->record.fields, field_name); in zend_ffi_cdata_write_field()
1227 if (UNEXPECTED(!field)) { in zend_ffi_cdata_write_field()
1237 *(cache_slot + 1) = field; in zend_ffi_cdata_write_field()
1251 } else if (UNEXPECTED(field->is_const)) { in zend_ffi_cdata_write_field()
1259 if (EXPECTED(!field->bits)) { in zend_ffi_cdata_write_field()
1260 ptr = (void*)(((char*)ptr) + field->offset); in zend_ffi_cdata_write_field()
1261 zend_ffi_zval_to_cdata(ptr, ZEND_FFI_TYPE(field->type), value); in zend_ffi_cdata_write_field()
1263 zend_ffi_zval_to_bit_field(ptr, field, value); in zend_ffi_cdata_write_field()
2235 zend_ffi_field *field = Z_PTR_P(zv); in zend_ffi_field_hash_dtor() local
2236 zend_ffi_type_dtor(field->type); in zend_ffi_field_hash_dtor()
2237 efree(field); in zend_ffi_field_hash_dtor()
2243 zend_ffi_field *field = Z_PTR_P(zv); in zend_ffi_field_hash_persistent_dtor() local
2244 zend_ffi_type_dtor(field->type); in zend_ffi_field_hash_persistent_dtor()
2245 free(field); in zend_ffi_field_hash_persistent_dtor()
2976 zend_ffi_field *old_field, *field; in zend_ffi_same_types() local
2992 field = Z_PTR(b->val); in zend_ffi_same_types()
2993 if (old_field->offset != field->offset in zend_ffi_same_types()
2994 || old_field->is_const != field->is_const in zend_ffi_same_types()
2995 || old_field->is_nested != field->is_nested in zend_ffi_same_types()
2996 || old_field->first_bit != field->first_bit in zend_ffi_same_types()
2997 || old_field->bits != field->bits in zend_ffi_same_types()
2998 || !zend_ffi_same_types(ZEND_FFI_TYPE(old_field->type), ZEND_FFI_TYPE(field->type))) { in zend_ffi_same_types()
3062 zend_ffi_field *field; in zend_ffi_subst_old_type() local
3089 ZEND_HASH_FOREACH_PTR(&dcl_type->record.fields, field) { in zend_ffi_subst_old_type()
3090 if (zend_ffi_subst_old_type(&field->type, old, type)) { in zend_ffi_subst_old_type()
3566 zend_ffi_field *field; in zend_ffi_subst_type() local
3593 ZEND_HASH_FOREACH_PTR(&dcl_type->record.fields, field) { in zend_ffi_subst_type()
3594 if (zend_ffi_subst_type(&field->type, type)) { in zend_ffi_subst_type()
5672 zend_ffi_field *field = NULL; local
5674 ZEND_HASH_REVERSE_FOREACH_PTR(&struct_type->record.fields, field) {
5677 if (ZEND_FFI_TYPE(field->type)->attr & ZEND_FFI_ATTR_INCOMPLETE_ARRAY) {
5705 zend_ffi_field *field; local
5717 field = pemalloc(sizeof(zend_ffi_field), FFI_G(persistent));
5722 field->offset = 0;
5729 field->offset = struct_type->size;
5732 field->type = field_dcl->type;
5733 field->is_const = (zend_bool)(field_dcl->attr & ZEND_FFI_ATTR_CONST);
5734 field->is_nested = 0;
5735 field->first_bit = 0;
5736 field->bits = 0;
5739 if (!zend_hash_str_add_ptr(&struct_type->record.fields, name, name_len, field)) {
5740 zend_ffi_type_dtor(field->type);
5741 pefree(field, FFI_G(persistent));
5751 zend_ffi_field *field; local
5777 ZEND_HASH_FOREACH_STR_KEY_PTR(&field_type->record.fields, key, field) {
5781 new_field->offset = field->offset;
5783 new_field->offset = struct_type->size + field->offset;
5785 new_field->type = field->type;
5786 new_field->is_const = field->is_const;
5788 new_field->first_bit = field->first_bit;
5789 new_field->bits = field->bits;
5790 field->type = ZEND_FFI_TYPE(field->type); /* reset "owned" flag */
5800 zend_hash_next_index_insert_ptr(&struct_type->record.fields, field);
5819 zend_ffi_field *field; local
5864 field = pemalloc(sizeof(zend_ffi_field), FFI_G(persistent));
5869 field->offset = 0;
5870 field->first_bit = 0;
5871 field->bits = bits->u64;
5886 field->offset = prev_field->offset;
5887 field->first_bit = prev_field->first_bit + prev_field->bits;
5888 field->bits = bits->u64;
5890 field->offset = struct_type->size;
5891 field->first_bit = 0;
5892 field->bits = bits->u64;
5895 struct_type->size = field->offset + ((field->first_bit + field->bits) + 7) / 8;
5897 struct_type->size = field->offset + (((field->first_bit + field->bits) + 31) / 32) * 4;
5900 field->type = field_dcl->type;
5901 field->is_const = (zend_bool)(field_dcl->attr & ZEND_FFI_ATTR_CONST);
5902 field->is_nested = 0;
5906 if (!zend_hash_str_add_ptr(&struct_type->record.fields, name, name_len, field)) {
5907 zend_ffi_type_dtor(field->type);
5908 pefree(field, FFI_G(persistent));
5912 zend_hash_next_index_insert_ptr(&struct_type->record.fields, field);