unsafe fn init(
        &mut self,
        builder: LLVMBuilderRef,
        slot: LLVMValueRef,
        key: LLVMValueRef,
        hash: LLVMValueRef,
        value: LLVMValueRef,
    ) {
        let key_pointer = self.key(builder, slot);
        LLVMBuildStore(builder, key, key_pointer);
        let value_pointer = self.value(builder, slot);
        LLVMBuildStore(builder, value, value_pointer);
        let hash_pointer = self.hash(builder, slot);
        LLVMBuildStore(builder, hash, hash_pointer);
        let filled_pointer = LLVMBuildStructGEP(builder, slot, FILLED_INDEX, c_str!(""));
        LLVMBuildStore(builder, self.i8(1), filled_pointer);
    }
Initialize a slot by marking it as filled and setting the key/value.

The slot should be a pointer, and the key and value should be loaded (i.e., should have
type `key_ty` and `val_ty`).
weld/src/codegen/llvm2/dict.rs