The advantages of this would be:
- No code using GNUstep or other frameworks compiled with clang/LLVM
(which we are almost in a position to do) would break if it
inherited from a class whose layout changed.
- No ABI breakage would be needed - code compiled with GCC would
still work on the modified runtime, although the existing
constraints on modification would still apply.
The disadvantages are:
- Currently ivar accesses on most platforms will be a single load /
store instruction in an indirect addressing mode with a constant
offset embedded in the instruction. This would add another load and
addition to every ivar access.
- The extra work that the runtime would do would increase load times
slightly.
So, my questions is, is this worth doing?