+static inline size_t psi_align(size_t s, size_t a) {
+ return ((s - 1) | (a - 1)) + 1;
+}
+
+static inline size_t psi_offset_padding(size_t diff, size_t alignment) {
+ if (diff && diff <= psi_align(diff, alignment)) {
+ diff = 0;
+ }
+
+ return diff;
+}
+
+static inline void psi_do_set(zval *return_value, set_value *set)
+{
+ decl_arg *set_arg = set->vars->vars[0]->arg;
+
+ zval_dtor(return_value);
+ set->func->handler(return_value, set, set_arg->let ? set_arg->let->ptr : set_arg->ptr);
+}
+