MCPcopy Create free account
hub / github.com/apache/impala / CodegenWriteCollectionItemLoopBody

Method CodegenWriteCollectionItemLoopBody

be/src/runtime/descriptors.cc:1464–1484  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1462}
1463
1464void SlotDescriptor::CodegenWriteCollectionItemLoopBody(LlvmCodeGen* codegen,
1465 LlvmBuilder* builder, llvm::Value* collection_value_ptr, llvm::Value* num_tuples,
1466 llvm::Value* item_index, llvm::Function* fn,
1467 const NonWritableBasicBlock& insert_before, llvm::Value* pool_val) const {
1468 DCHECK(pool_val != nullptr);
1469 const TupleDescriptor* children_tuple_desc = children_tuple_descriptor();
1470 DCHECK(children_tuple_desc != nullptr);
1471
1472 llvm::Type* children_tuple_struct_type = children_tuple_desc->GetLlvmStruct(codegen);
1473 DCHECK(children_tuple_struct_type != nullptr);
1474 llvm::PointerType* children_tuple_type = codegen->GetPtrType(
1475 children_tuple_struct_type);
1476
1477 llvm::Value* children_tuple_array = builder->CreateBitCast(collection_value_ptr,
1478 children_tuple_type, "children_tuple_array");
1479 llvm::Value* children_tuple = builder->CreateInBoundsGEP(children_tuple_array,
1480 item_index, "children_tuple");
1481
1482 CodegenWriteCollectionIterateOverChildren(codegen, builder, children_tuple,
1483 children_tuple, fn, insert_before, pool_val);
1484}
1485
1486void SlotDescriptor::CodegenWriteCollectionIterateOverChildren(LlvmCodeGen* codegen,
1487 LlvmBuilder* builder, llvm::Value* master_tuple, llvm::Value* children_tuple,

Callers

nothing calls this directly

Calls 2

GetLlvmStructMethod · 0.80
GetPtrTypeMethod · 0.80

Tested by

no test coverage detected