 |
|
|
|
Actions
|
|
[ Date Prev][ Date Next][ Thread Prev][ Thread Next][ Date Index][ Thread Index]
Re: [cxx-abi-dev] __base_class_type_info offset_flags
- To: cxx-abi-dev@xxxxxxxxxxxxxxxx
- Subject: Re: [cxx-abi-dev] __base_class_type_info offset_flags
- From: Daveed Vandevoorde <daveed@xxxxxxx>
- Date: Wed, 4 Dec 2002 08:49:20 -0500
On Tuesday, December 3, 2002, at 06:35 PM, Mark Mitchell wrote:
[...]
Note:
In an ABI for a machine with 32-bit addresses, the offset becomes a
32-bit field, and the flags are in the low-order byte of a second
32-bit field.
I think we should remove the note.
I'm not sure I agree.
First, G++ does not honor the note; it just uses "long" on all
platforms.
What do the other compilers do (HP? Intel?)?
That's a particular hard thing to change going forward;
the runtime support routines would have to somehow detect which
version of the type_info structures they were dealing with. So, I
don't fancy trying to make this change in GCC.
Second, what's the point? If you just deleted the note, you'd be
limited to objects whose sizes are representable in 24-bits on a
32-bit machine. Well, more properly, if you made bigger objects,
you'd not be able to dynamic_cast between subobjects.
I would find this a weird limitation. If you do remove the note,
at least add a requirement that implementations must issue errors
on non-POD types whose size is 2^24 or larger.
Daveed
|
|