Related articles |
---|
[25 earlier articles] |
Re: Fat references kkylheku@gmail.com (Kaz Kylheku) (2010-01-04) |
Re: Fat references jon@ffconsultancy.com (Jon Harrop) (2010-01-05) |
Re: Fat references dmr@bell-labs.com (Dennis Ritchie) (2010-01-05) |
Re: Fat references kkylheku@gmail.com (Kaz Kylheku) (2010-01-05) |
Re: Fat references cr88192@hotmail.com (BGB / cr88192) (2010-01-05) |
Re: Fat references jon@ffconsultancy.com (Jon Harrop) (2010-01-06) |
Re: Fat references jon@ffconsultancy.com (Jon Harrop) (2010-01-06) |
Re: Fat references gneuner2@comcast.net (George Neuner) (2010-01-07) |
Re: Fat references gneuner2@comcast.net (George Neuner) (2010-01-07) |
Re: Fat references gneuner2@comcast.net (George Neuner) (2010-01-07) |
From: | Jon Harrop <jon@ffconsultancy.com> |
Newsgroups: | comp.compilers |
Date: | Wed, 06 Jan 2010 02:08:14 +0000 |
Organization: | Flying Frog Consultancy Ltd. |
References: | 09-12-045 09-12-055 10-01-005 10-01-031 |
Keywords: | VM, code |
Posted-Date: | 08 Jan 2010 10:18:38 EST |
Kaz Kylheku wrote:
> Are any of your benchmarks structured as a realistic program with
> function calls going around among separately compiled external module
> (and possibly separately loaded at run-time?)
There is no notion of external module. HLVM uses JIT compilation to
perform whole-program optimization on-the-fly, like the CLR.
> How much leverage are you getting in the benchmarks from just
> accessing those parts of the reference that are relevant to the
> computation (such as the principal pointer to the underlying data),
> avoiding situations where you have to load the whole thing?
Difficult to say. LLVM's optimization passes optimize such things but
generally do not improve performance.
> In real-world programs, there do end up copies of references to heap
> data. Even if the heap itself doesn't have multiple references to an
> object (i.e. most objects in the heap have a unique parent object in
> the heap), the program can still be juggling lots of copies in the
> registers, and throughout the call stack, whose frames may be spread
> among external functions.
Yes.
> Some copies may not even be semantic references. If a function needs
> to save some callee-saved registers to backing memory and re-load
> them, a copy is made twice, even though the backing memory has no
> semantic role other than holding those registers. Fat references will
> create more register pressure of this type.
In theory, yes.
> Say you need a whole bunch of registers to load some fat references
> from memory. Oops, you've run out of the callee-clobbered registers,
> and need to use callee-saved ones. So now your function has to save
> those to memory and then restore them before returning. You've just
> copied the parent frame's data twice, even though you aren't working
> with that data.
That's the concern but it seems to be unfounded in practice.
--
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/?u
Return to the
comp.compilers page.
Search the
comp.compilers archives again.