search for: dieblock

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...