[LLVMdev] TableGen: Requesting feedback for "TGContext"
Chris Lattner
sabre at nondot.org
Wed Oct 3 23:06:25 PDT 2012
It won't cause a negative effect, go for it! Dynamic_cast is realllly slow compared to dyn_cast, it is worth the memory.
-Chris
On Oct 3, 2012, at 9:39 PM, Sean Silva <silvas at purdue.edu> wrote:
> Thanks for the feedback!
>
>>> Does anybody have anything else they think should go into TGContext or
>>> any other responsibilities it should have? Or any feedback about the
>>> idea in general?
>>
>> All memory allocations should go into its bump pointer, RecordKeeper should as well. Any other global state that exist should also.
>
> Sounds good.
>
>>> I'm also hoping that this change should loosen up some of the
>>> calcification that has accumulated on TableGen and get the ball
>>> rolling for transitioning dynamic_cast<> to dyn_cast<> and eliminating
>>> exceptions, along with general improvements in reliability and
>>> performance. Along the way I'm also hoping to pull together proper
>>> reference documentation for the language as it stands right now.
>>
>> This would be really really great. Just moving off dynamic_cast is a quite mechanical change that should be straight-forward to do.
>
> Indeed, the transition to LLVM-style RTTI it is mostly mechanical. The
> thing that has been keeping me is that adding the discriminator---as
> far as I can tell---will increase sizeof() by a pointer due to
> alignment, and I've been too lazy to collect any information about
> whether this will have a detectable performance cost overall.
>
> --Sean Silva
>
> On Wed, Oct 3, 2012 at 11:51 PM, Chris Lattner <sabre at nondot.org> wrote:
>>
>> On Oct 3, 2012, at 7:07 PM, Sean Silva <silvas at purdue.edu> wrote:
>>
>>> Hi all, I'm sure that the last thing that you want to think about is
>>> TableGen's guts, but I'm pursuing a course in bringing TableGen up to
>>> snuff with the rest of LLVM.
>>>
>>> Basically, I would like to introduce a "TGContext" class (by analogy
>>> with LLVMContext) to harbor a proper unique'd type system and BumpPtr
>>> allocate all of TableGen's data (RecTy's, Record's, Init's, etc). This
>>> change should have no effect on the TableGen backends, simply being a
>>> refactoring of the internals.
>>
>> Makes sense to me.
>>
>>> One huge bonus in particular from centralizing all of the memory
>>> allocation is that I plan to hack in a custom memory allocator (in a
>>> local branch) which distributes objects randomly in memory, which will
>>> definitively flush out *all* pointer-value-as-map-key non-determinism
>>> inside TableGen.
>>
>> Cool. It would also help move the "tblgen as a library" idea closer to reality.
>>
>>> Does anybody have anything else they think should go into TGContext or
>>> any other responsibilities it should have? Or any feedback about the
>>> idea in general?
>>
>> All memory allocations should go into its bump pointer, RecordKeeper should as well. Any other global state that exist should also.
>>
>>> I'm also hoping that this change should loosen up some of the
>>> calcification that has accumulated on TableGen and get the ball
>>> rolling for transitioning dynamic_cast<> to dyn_cast<> and eliminating
>>> exceptions, along with general improvements in reliability and
>>> performance. Along the way I'm also hoping to pull together proper
>>> reference documentation for the language as it stands right now.
>>
>> This would be really really great. Just moving off dynamic_cast is a quite mechanical change that should be straight-forward to do.
>>
>> -Chris
More information about the llvm-dev
mailing list