Related articles |
---|
Optimization Question braung@ert.rwth-aachen.de (Gunnar Braun) (2000-07-27) |
Re: Optimization Question gunnar@moria.net.dhis.org (Gunnar Braun) (2000-07-30) |
Re: Optimization Question rkrayhawk@aol.com (2000-07-31) |
Re: Optimization Question chase@naturalbridge.com (David Chase) (2000-08-04) |
From: | Gunnar Braun <gunnar@moria.net.dhis.org> |
Newsgroups: | comp.compilers |
Date: | 30 Jul 2000 08:44:12 -0400 |
Organization: | Aachen University of Technology (RWTH) |
References: | <UTC200007300215.EAA05971.pmontgom@bark.cwi.nl> |
Keywords: | architecture, optimize |
Hi Peter,
thank you for your answer. To clear up things a bit:
pStage is a two dimensional array, with the integer indicies StageNr
(from 0 to 5) and i (from 0 to maximum 8). Each array element is a
struct consisting of a pointer to another table (pInsnTableLine) and a
function pointer to member function of the class the function
with the loop belongs to, too.
On Sun, 30 Jul 2000 Peter-Lawrence.Montgomery@cwi.nl wrote:
> You seem to be referring to the loop:
>
> > for (StageNr = 5; StageNr >= 0; StageNr--)
> > {
> > i = 0;
> > while (m_pStaticTable[m_TableNr][m_CurrentLine].pStage[StageNr][i].OpFuncPtr)
> > {
> > itab = m_pStaticTable[m_TableNr][m_CurrentLine].pStage[StageNr][i].pInsnTableLine;
> > (this->*m_pStaticTable[m_TableNr][m_CurrentLine].pStage[StageNr][i++].OpFuncPtr)(itab);
> > }
> > }
>
> (whereas StageNr is local). Set up a pointer to
> m_pStaticTable[m_TableNr][m_CurrentLine] before the StageNr loop.
> If pStage is an array of pointers (rather than a two-dimensional array),
> set up another pointer to (first pointer)->pStage[StageNr]
> at the spot where you initialize i = 0.
The problem is, that the compiler does not allow to call the function
that belongs to OpFuncPtr, if I set up a pointer
m_pStaticTable[m_TableNr][m_CurrentLine] or
(firstpointer)->pStage[StageNr]
The compiler detects that the pointer refers to a member function of the
class and tells me, that I have to call the function via the this
pointer. It might be possible if I define the help variable for the
pointers as member variables, too. I'll try that in a minute.
> If each pStage[StageNr] is a pointer to a variably-sized
> region (length possibly dependent on how high i should go), try to
> organize memory so the regions for different StageNr values are nearby,
> This should help your cache locality.
pStage[StageNr] is a fixed sized region to always 8 entries. Therefore
I guess the entries are lying one by another in memory.
Thanks for the help,
Gunnar
--
** EMail: Gunnar Braun <gunnar.braun@post.rwth-aachen.de> **
** Homepage: http://www-users.rwth-aachen.de/gunnar.braun/index.html **
** PGP encrypted messages welcome - key via homepage or pgp-net **
** Fingerprint: 19 43 D7 FF 3A 42 D7 E9 D9 4C 49 30 DC CD 75 EE **
Return to the
comp.compilers page.
Search the
comp.compilers archives again.