+ dbg_printf("load field ref offset %u type sequence\n",
+ ref->offset);
+ reg[insn->reg].seq_len =
+ *(unsigned long *) &filter_stack_data[ref->offset];
+ reg[insn->reg].str =
+ *(const char **) (&filter_stack_data[ref->offset
+ + sizeof(unsigned long)]);
+ reg[insn->reg].type = REG_STRING;
+ reg[insn->reg].literal = 0;
+ next_pc += sizeof(struct load_op) + sizeof(struct field_ref);
+ break;
+ }
+
+ case FILTER_OP_LOAD_FIELD_REF_S64:
+ {
+ struct load_op *insn = (struct load_op *) pc;
+ struct field_ref *ref = (struct field_ref *) insn->data;
+
+ dbg_printf("load field ref offset %u type s64\n",
+ ref->offset);
+ memcpy(®[insn->reg].v, &filter_stack_data[ref->offset],
+ sizeof(struct literal_numeric));
+ reg[insn->reg].type = REG_S64;
+ reg[insn->reg].literal = 0;
+ dbg_printf("ref load s64 %" PRIi64 "\n", reg[insn->reg].v);
+ next_pc += sizeof(struct load_op) + sizeof(struct field_ref);
+ break;
+ }
+
+ case FILTER_OP_LOAD_FIELD_REF_DOUBLE:
+ {
+ struct load_op *insn = (struct load_op *) pc;
+ struct field_ref *ref = (struct field_ref *) insn->data;
+
+ dbg_printf("load field ref offset %u type double\n",
+ ref->offset);
+ memcpy(®[insn->reg].d, &filter_stack_data[ref->offset],
+ sizeof(struct literal_double));
+ reg[insn->reg].type = REG_DOUBLE;
+ reg[insn->reg].literal = 0;
+ dbg_printf("ref load double %g\n", reg[insn->reg].d);