C++ and Java CNI: Check Java references

Mark Mitchell mark@codesourcery.com
Wed Apr 25 10:02:00 GMT 2001


>>>>> "Andrew" == Andrew Haley <aph@cambridge.redhat.com> writes:

 Andrew> Anyway, it's just dawned on me that this solution could
 Andrew> never work: the `this' pointer in C++ isn't a smart
That's because `this' should never be NULL. (Really `this' should
have reference type, not pointer type, but nobody realized this until
too late in the game.)
You'll have already checked for the non-NULLness of `this' before
calling the member function. For example, if you have:
 
 JavaPointer<Foo> f;
 f->bar();
You don't need to check `this' in `Foo::bar'; you'll have checked at
the call-site.
If you didn't get to Foo::bar via a pointer, like this:
 Foo f;
 f.bar();
then there's no point in checking the `this' pointer in that case
either; you called it directly on an object. 
So, you magically do the right thing.
I think this shows that there will be a huge efficiency win over the
patch as posted: you'll not check all the references through `this'
because `this' is always known to be non-NULL.
 
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /