Displaying 5 results from an estimated 5 matches for "dieblock".
2016 Feb 05
6
Reducing DWARF emitter memory consumption
...DWARF emitter needs to accommodate incomplete entities
that may be completed elsewhere during tree construction (e.g. abstract origins
for inlined functions, special members for types), so here's a quick high-level
sketch of the data structures that I believe could support this design:
struct DIEBlock {
SmallVector<char, 1> Data;
std::vector<InternalReloc> IntRelocs;
std::vector<ExternalReloc> ExtRelocs;
DIEBlock *Next;
};
// This would be used to represent things like DW_AT_type references to types
struct InternalReloc {
size_t Offset; // offset within DIEBlock::Dat...
2016 Feb 06
2
Reducing DWARF emitter memory consumption
...t may be completed elsewhere during tree construction (e.g. abstract
> > origins
> > for inlined functions, special members for types), so here's a quick
> > high-level
> > sketch of the data structures that I believe could support this design:
> >
> > struct DIEBlock {
> > SmallVector<char, 1> Data;
> > std::vector<InternalReloc> IntRelocs;
> > std::vector<ExternalReloc> ExtRelocs;
> > DIEBlock *Next;
> > };
> >
> > // This would be used to represent things like DW_AT_type references to
> &g...
2015 May 20
5
[LLVMdev] RFC: Reduce the memory footprint of DIEs (and DIEValues)
...14 MB 168551 0 5.14 MB 168551 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
0 llvm::DIELoc 3.41 MB 13154 0 3.41 MB 13154 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
0 llvm::DIELocList 1.86 MB 61055 0 1.86 MB 61055 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
0 llvm::DIEBlock 11.69 KB 44 0 11.69 KB 44 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
0 llvm::DIEExpr 32 Bytes 1 0 32 Bytes 1 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
We can do better.
1. DIEValue should be a discriminated union that's passed by value
instead of pointer. Most typ...
2011 Jan 18
2
[LLVMdev] Dwarf info for byref register variables
...ddress() and
addComplexAddress(), contain this snippet of code:
// Decode the original location, and use that as the start of the byref
// variable's location.
const TargetRegisterInfo *RI = Asm->TM.getRegisterInfo();
unsigned Reg = RI->getDwarfRegNum(Location.getReg(), false);
DIEBlock *Block = new (DIEValueAllocator) DIEBlock();
if (Location.isReg()) {
if (Reg < 32)
addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_reg0 + Reg);
else {
Reg = Reg - dwarf::DW_OP_reg0;
addUInt(Block, 0, dwarf::DW_FORM_data1, dwarf::DW_OP_breg0 + Reg);
addUInt...
2015 May 21
2
[LLVMdev] RFC: Reduce the memory footprint of DIEs (and DIEValues)
...B 168551 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
>> 0 llvm::DIELoc 3.41 MB 13154 0 3.41 MB 13154 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
>> 0 llvm::DIELocList 1.86 MB 61055 0 1.86 MB 61055 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
>> 0 llvm::DIEBlock 11.69 KB 44 0 11.69 KB 44 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
>> 0 llvm::DIEExpr 32 Bytes 1 0 32 Bytes 1 <XRRatioObject: 0x608025658ea0> %0.00, %0.00
>>
>> We can do better.
>>
>> 1. DIEValue should be a discriminated union that's passed...