lkml.org 
[lkml]   [2011]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v3 0/4] exec: unify native/compat code
    On Wed, Mar 2, 2011 at 11:40 AM, David Miller <davem@davemloft.net> wrote:
    >
    > We purposely don't do that "page table entry typedef'd to aggregate" stuff
    > on sparc32 because otherwise such values get passed on the stack.
    >
    > Architectures can currently avoid this bad code generation for the
    > page table case, but with this new code they won't be able to avoid
    > pass-by-value.

    Well, the thing is, on architectures that _can_ pass by value, it
    avoids one indirection.

    And if you do pass it on stack, then the code generated will be the
    same as if we passed a pointer. So sparc may not be able to take
    advantage of the optimization, but I don't think the code generation
    would be worse.

    For the page table case, we don't have that kind of trade-off: the
    trade-off there is literally just between "pass in registers, or pass
    on stack". Here the trade-off is "pass as an aggregate value or pass
    as a pointer to an aggregate value".

    That said, since I suspect that the main user will always just get
    inlined (ie the helper function that actually fetches the pointers), I
    suspect even sparc will see the advantage of the pass-by-value model.

    But you might want to actually test the difference and look at the
    code generation.

    Linus


    \
     
     \ /
      Last update: 2011-03-02 20:51    [W:0.023 / U:0.524 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site