[LLVMdev] Writing LLVM front-end

mats petersson mats at planetcatfish.com
Fri Feb 20 06:34:55 PST 2015


A lot of good suggestions above.

I think one COULD write a compiler (frontend) that has
pointers/references to objects which are "behind the scenes"
implemented similar to smart pointers. I have never tried to do this,
however. You would need to have the language generate
constructor/destructor/assign operations in some way, but shouldn't be
particularly hard. (David Jones just wrote a similar reply!)

I have implemented my own Pascal compiler (which doesn't have garbage
collection) - in itself, it uses the ostrich method of memory
management [stick your head in the sand and hope nothing bad happens
while you are not watching] - the runtime component does `malloc` and
`free` to implement the Pascal "new" and "dispose" functions. It
supports standard pascal, so "objects" don't exist (I have vague plans
to do that at some point!)
Here's my project: https://github.com/Leporacanthicus/lacsap
(It is something I work on in evenings and on weekends, and it's just
"for fun", but I try to make sure it does work reasonably well - there
are several things that aren't great at the moment, mostly error
handling [give it the right kind of "bad" code and it will fail to
compile with some assert in LLVM] - most covered in the README, but
some are only documented in my head...)

In general, I find LLVM pretty easy and straight forward to work with.

--
Mats

On 20 February 2015 at 14:01, Ahmed Taj elsir <meedo456123 at gmail.com> wrote:
> Thank you all,
>
> David Jones
>
>>>> You would then implement your own garbage collector in your runtime. If you don't >>> want to do that, then consider using the Boehm-Demers-Weiser conservative
>>>> collector. It requires no special support from LLVM.
>
> I was thinking to implement smart pointer instead of using GC , I mean
> like this:
>>>> obj b = new obj();
> b will automatically be instantiate as smart pointer (which will be
> deleted automatic also).
> I don't know if it's bad idea or not , but that what I thought .
>
> Another solution is to implement GC using LLVM GC (described here
> http://llvm.org/docs/GarbageCollection.html) , but I don't know its
> performance .
>
> Can you advice me to the best solution , between the first and the
> second solution ? does LLVM GC better than python's GC and other
> equivalents ?
>
> Thanks.
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev



More information about the llvm-dev mailing list