Disable GC entirely
Regan Heath
regan at netmail.co.nz
Wed Apr 10 03:59:01 PDT 2013
On Wed, 10 Apr 2013 11:39:20 +0100, Manu <turkeyman at gmail.com> wrote:
> All your examples all hinge on the one case where the optimisation may
> possibly be valid, a is _allocated in the same scope_.
Correct, that was the whole point. I am trying to establish where the
"problem" arises, starting from the most basic examples :)
> Consider:
The example below is, I presume, supposed to be a function call in user
code where A is defined in a library, correct?
If so, I agree with the issues stated.
If not, if A, and B, and any other classes derived from A are all compiled
at the same time(*) and we're producing an exe then the compiler has all
the information it needs to decide which methods MUST be virtual, and all
others should be non-virtual.
This is the point I was trying to establish with my simpler examples :)
(*) Yes, perhaps you compile a.d then b.d separately - this may result in
the same problem case as a library, or it may not - I don't have the
understanding/data to say one way or the other.
> void func(A* a)
> {
> a.isVirt(); // is it? I guess...
> a.notVirt(); // what about this?
> }
>
> We don't even know what a B is, or whether it even exists.
Assuming A and B come from a library and are not present in the source we
are compiling with this function, yes.
> All we know is that A's methods are virtual by default, and they could be
> overridden somewhere else. It's not possible to assume otherwise.
If we're compiling A, and some number of sub-classes of A, and producing
an exe, then from the definition of A, B, and all sub-classes we know
which methods have been overridden, those are virtual, all others are
non-virtual.
R
--
Using Opera's revolutionary email client: http://www.opera.com/mail/
More information about the Digitalmars-d
mailing list