Displaying 20 results from an estimated 20000 matches similar to: "[LLVMdev] Stack roots and function parameters"
2010 Sep 22
0
[LLVMdev] Stack roots and function parameters
On Mon, Sep 20, 2010 at 3:16 PM, Talin <viridia at gmail.com> wrote:
> So I've managed to get my stack crawler working and passing its unit tests
> - this is the one I've been working on as an alternative to shadow-stack: it
> uses only static constant data structures (no global variables or
> thread-local data), which means that it's fully compatible with a
>
2010 Sep 22
6
[LLVMdev] Stack roots and function parameters
On Tue, Sep 21, 2010 at 8:20 PM, Talin <viridia at gmail.com> wrote:
> On Mon, Sep 20, 2010 at 3:16 PM, Talin <viridia at gmail.com> wrote:
>>
>> So I've managed to get my stack crawler working and passing its unit tests
>> - this is the one I've been working on as an alternative to shadow-stack: it
>> uses only static constant data structures (no
2010 Oct 02
2
[LLVMdev] Function inlining creates uninitialized stack roots
On Sat, Oct 2, 2010 at 12:59 PM, nicolas geoffray <
nicolas.geoffray at gmail.com> wrote:
> Hi Talin,
>
> You are not doing something wrong, it is just that the LLVM optimizers
> consider llvm.gcroot like a regular function call. The alloca is moved in
> the first block most probably because the inliner anticipates another
> optimization pass (the mem2reg).
>
OK, well,
2010 Sep 22
0
[LLVMdev] Stack roots and function parameters
On Wed, Sep 22, 2010 at 5:58 AM, Kenneth Uildriks <kennethuil at gmail.com>wrote:
> On Tue, Sep 21, 2010 at 8:20 PM, Talin <viridia at gmail.com> wrote:
> > On Mon, Sep 20, 2010 at 3:16 PM, Talin <viridia at gmail.com> wrote:
> >>
> >> So I've managed to get my stack crawler working and passing its unit
> tests
> >> - this is the one
2010 Oct 02
2
[LLVMdev] Function inlining creates uninitialized stack roots
I'm still putting the final touches on my stack crawler, and I've run into a
problem having to do with function inlining and local stack roots.
As you know, all local roots must be initialized before you can make any
call to a function which might crawl the stack. My compiler ensures that all
local variables of a function are allocated, declared as root, and
initialized in the first
2010 Oct 02
0
[LLVMdev] Function inlining creates uninitialized stack roots
Sure. I think we can change the GC lowering pass to recognize all
llvm.gcroot (not only the ones in the first block), and move them to the
first block so that they are initialized by the pass later on.
On Sat, Oct 2, 2010 at 10:58 PM, Talin <viridia at gmail.com> wrote:
> On Sat, Oct 2, 2010 at 12:59 PM, nicolas geoffray <
> nicolas.geoffray at gmail.com> wrote:
>
>>
2010 Oct 02
0
[LLVMdev] Function inlining creates uninitialized stack roots
Hi Talin,
You are not doing something wrong, it is just that the LLVM optimizers
consider llvm.gcroot like a regular function call. The alloca is moved in
the first block most probably because the inliner anticipates another
optimization pass (the mem2reg).
Cheers,
Nicolas
On Sat, Oct 2, 2010 at 8:28 PM, Talin <viridia at gmail.com> wrote:
> I'm still putting the final touches on
2010 Sep 25
2
[LLVMdev] Patch to allow llvm.gcroot to work with non-pointer allocas.
I didn't have unions in mind - indeed you need some kind of static
information in such a case. The GC infrastructure in LLVM having so little
love, I think it is good if you can improve it in any ways, as well as
defining new interfaces.
Cheers,
Nicolas
On Sat, Sep 25, 2010 at 6:38 PM, Talin <viridia at gmail.com> wrote:
> On Sat, Sep 25, 2010 at 1:04 AM, nicolas geoffray <
>
2010 Sep 25
2
[LLVMdev] Patch to allow llvm.gcroot to work with non-pointer allocas.
Hi Talin,
On Sat, Sep 25, 2010 at 4:18 AM, Talin <viridia at gmail.com> wrote:
>
>
> Many languages support the notion of a "value type". Value types are always
> passed by value, unlike reference types which are always passed by
> pointer. An example is the "struct" type in C#. Another example is a "tuple"
> type. A value type which is a
2010 Sep 22
3
[LLVMdev] Patch to allow llvm.gcroot to work with non-pointer allocas.
I'm moving this thread to llvm-dev in the hopes of reaching a wider
audience.
This patch relaxes the restriction on llvm.gcroot so that it can work with
non-pointer allocas. The only changes are to Verifier.cpp - it appears from
my testing that llvm.gcroot always worked fine with non-pointer allocas,
except that the verifier wouldn't allow it. I've used this patch to build an
2010 Apr 28
2
[LLVMdev] Using gcroot with value types
On 04/27/10 00:20, Talin wrote:
> On Mon, Apr 26, 2010 at 12:44 AM, Paul Melis
> <llvm at assumetheposition.nl <mailto:llvm at assumetheposition.nl>> wrote:
>
> Hi,
>
> Talin wrote:
> > I'm a little confused as to the rules for the arguments to
> llvm.gcroot,
> > which says it must be a pointer alloca. I'm not sure whether
2010 Sep 25
0
[LLVMdev] Patch to allow llvm.gcroot to work with non-pointer allocas.
On Sat, Sep 25, 2010 at 10:51 AM, nicolas geoffray <
nicolas.geoffray at gmail.com> wrote:
> I didn't have unions in mind - indeed you need some kind of static
> information in such a case. The GC infrastructure in LLVM having so little
> love, I think it is good if you can improve it in any ways, as well as
> defining new interfaces.
So the patch is OK then? All it does
2010 Sep 24
2
[LLVMdev] Patch to allow llvm.gcroot to work with non-pointer allocas.
Thanks for the heads up Chris.
Talin, how is your GC dealing with non-pointers (be it allocas or not)? What
is the use-case (either in C or LLVM)?
Nicolas
On Fri, Sep 24, 2010 at 7:00 PM, Chris Lattner <clattner at apple.com> wrote:
> On Sep 22, 2010, at 8:52 AM, Talin wrote:
> > I'm moving this thread to llvm-dev in the hopes of reaching a wider
> audience.
> >
2012 Apr 06
2
[LLVMdev] Potential Google Summer of Code Applicant
Sorting through all of the discussions would be difficult, as the ideas
have morphed over the years. Also, some of the discussion took place
offline at various LLVM dev conferences.
I can summarize the main points here:
The biggest improvement in GC would be to allow SSA values to be declared
as GC roots - currently only alloca values, that is, values in memory, can
be GC roots. This means that
2012 Apr 16
2
[LLVMdev] Potential Google Summer of Code Applicant
Just a thought, but it would it make sense for garbage collection to be
some sort of minimal debug information for potentially optimized code.
Store just enough debug information to reconstruct call stacks and know
where gc-roots are. Perhaps an approach like this could minimize the work
required as it is shared between gc-support and debug information support.
>From what I understand, DWARF
2010 Sep 25
0
[LLVMdev] Patch to allow llvm.gcroot to work with non-pointer allocas.
On Sat, Sep 25, 2010 at 1:04 AM, nicolas geoffray <
nicolas.geoffray at gmail.com> wrote:
> Hi Talin,
>
> On Sat, Sep 25, 2010 at 4:18 AM, Talin <viridia at gmail.com> wrote:
>>
>>
>> Many languages support the notion of a "value type". Value types are
>> always passed by value, unlike reference types which are always passed by
>>
2010 Sep 25
0
[LLVMdev] Patch to allow llvm.gcroot to work with non-pointer allocas.
On Fri, Sep 24, 2010 at 10:44 AM, nicolas geoffray <
nicolas.geoffray at gmail.com> wrote:
> Thanks for the heads up Chris.
>
> Talin, how is your GC dealing with non-pointers (be it allocas or not)?
> What is the use-case (either in C or LLVM)?
>
Many languages support the notion of a "value type". Value types are always
passed by value, unlike reference types
2010 Sep 25
1
[LLVMdev] Stack roots and function parameters
Forgive my top post but I hate Windows. J
I am surprised you (Talin) say that "we know conservative collectors work"
because my experience has very much been of them not working. Indeed, if you
have 400Mb of allocated heap blocks on a 32-bit machine is there not a 10%
chance of *each* random 32-bit int "pointing" into your heap, i.e. a false
positive? I just did a simple
2010 Apr 26
2
[LLVMdev] Using gcroot with value types
Hi,
Talin wrote:
> I'm a little confused as to the rules for the arguments to llvm.gcroot,
> which says it must be a pointer alloca. I'm not sure whether that means it
> must be an alloca (which is always a pointer by definition) or an alloca
> *of* a pointer.
I'm pretty sure it should be "alloca of a pointer", as the first argument
of llvm.gcroot has type i8**.
2010 May 01
1
[LLVMdev] Using gcroot with value types
On 04/29/10 21:27, Talin wrote:
> On Wed, Apr 28, 2010 at 12:16 PM, Paul Melis
> <llvm at assumetheposition.nl <mailto:llvm at assumetheposition.nl>> wrote:
>
> On 04/27/10 00:20, Talin wrote:
>> On Mon, Apr 26, 2010 at 12:44 AM, Paul Melis
>> <llvm at assumetheposition.nl <mailto:llvm at assumetheposition.nl>> wrote:
>>
>>