| 1484 | } |
| 1485 | |
| 1486 | void SlotDescriptor::CodegenWriteCollectionIterateOverChildren(LlvmCodeGen* codegen, |
| 1487 | LlvmBuilder* builder, llvm::Value* master_tuple, llvm::Value* children_tuple, |
| 1488 | llvm::Function* fn, const NonWritableBasicBlock& insert_before, |
| 1489 | llvm::Value* pool_val) const { |
| 1490 | DCHECK(pool_val != nullptr); |
| 1491 | const TupleDescriptor* children_tuple_desc = children_tuple_descriptor(); |
| 1492 | DCHECK(children_tuple_desc != nullptr); |
| 1493 | |
| 1494 | for (const SlotDescriptor* child_slot_desc : children_tuple_desc->slots()) { |
| 1495 | DCHECK(child_slot_desc != nullptr); |
| 1496 | |
| 1497 | const ColumnType& child_type = child_slot_desc->type(); |
| 1498 | if (child_type.IsVarLenStringType() || child_type.IsCollectionType()) { |
| 1499 | child_slot_desc->CodegenWriteCollectionVarlenChild(codegen, builder, master_tuple, |
| 1500 | children_tuple, fn, insert_before, pool_val); |
| 1501 | } else if (child_type.IsStructType()) { |
| 1502 | child_slot_desc->CodegenWriteCollectionStructChild(codegen, builder, |
| 1503 | master_tuple, children_tuple, fn, insert_before, pool_val); |
| 1504 | } |
| 1505 | } |
| 1506 | } |
| 1507 | |
| 1508 | void SlotDescriptor::CodegenWriteCollectionStructChild(LlvmCodeGen* codegen, |
| 1509 | LlvmBuilder* builder, llvm::Value* master_tuple, llvm::Value* tuple, |
nothing calls this directly
no test coverage detected