🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

1 total messages Started by Jim ADCOCK Mon, 06 Aug 1990 23:09
Packing Order Question Restated
#305
Author: Jim ADCOCK
Date: Mon, 06 Aug 1990 23:09
55 lines
2891 bytes
Let me try to restate my original packing order question more clearly:

---
Should all vendors of all standard C++ compilers be prohibited for all time
from providing a standard C++ compiler that optimizes based on packing order?
If so, why?
---

People have posted many eloquent reasons why some vendor might want *not*
to offer such a compiler -- or might want a reason to allow packing to
be turned off:

I want my C++ compiler to be compatible with my C compiler.
I want my C++ compiler to work like I'm use to C compilers working.
I need predictable C++ lay-out order for operating systems work.
I want control over my C++ compiler.  I don't want it to control me.

That's fine.  There is nothing stopping a C++ compiler vendor from offering
a compiler to meet the needs of these people -- whether or not restrictions
on packing order are removed.  What the present C++ proposal *does* prevent is
for a vendor offering compilers to meet the needs of the following people:

I want my C++ compiler to generate the fastest and smallest code possible,
using the least amount of memory possible.  I want my C++ code to be as good
or better than any object oriented language now, or in the future.

Such a future compiler could do many things with packing order:

1) A derived class could fill the holes in a base class with some of its
members.

2) Partial bit fields could be shared with base classes.

3) Based on profiling data, the compiler could automatically [upon recompilationof a hierarchy] switch the ordering of two base classes withing an child class,
such that the more commonly used vtptr falls into slot 0 [typically resulting
in faster code.]

4) Based on profiling data, the compiler could automatically 
[upon recompilation] switch the ordering of fields in a region to move the 
more commonly used fields to the front.  Then, bus prefetch and on-chip 
caching would more likely allow access to the commonly-used fields faster, 
through better locality of reference.

5) etc, etc.


Frankly, I just don't see where forcing an ordering on the fields of region
helps anyone write legitimate [portable] C++ code.  What does it mean to be 
able to know the relative ordering of two things that *are not* elements of 
an array ??????

I want C++ compilers to be able to generate code as fast or faster than 
compilers for other OOPLs present or future.  This will not be the case
if C++ compilers must maintain backwards compatibility with non-portable 
C coding hacks.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads