Notes from the meeting

Jim Dehnert dehnert at baalbek.engr.sgi.com
Thu Jul 6 21:09:25 UTC 2000


>From today's (6 July) meeting agenda:

1-4) Mark's runtime proposals were all accepted.  I will incorporate
     them in the draft, and close the issues except where non-cursory
     review seems desirable.

  5) The vector allocator/deallocator runtimes will be extern "C".

  6) Covariant returns.  It is the concensus that further wording is
     required.  I agree with Jason's latest mail on the subject.
     Could Jason and Mark please attempt to identify where comments
     are required?  (I will too, but...)

  7) I will remove the extra flags from __vmi_class_type_info.

  8) I will attempt a more consistent renaming of the type_info data
     members, without prefixes.

  9) We generally accepted Alex's proposed mangling grammar modifications,
     with a couple of minor changes that will appear in the draft.

     There is one significant problem, related to covariant return
     types.  When the overridden function is defined in the primary
     base class of the class defining the overriding function, they
     require the same 'this' adjustment, which is what is used for our
     mangling, but differ in their result adjustments.  We concluded
     that we needed to include the result adjustments in the mangling.

     Upon further thought, though, I don't think this is needed.  The
     two functions have different definitions, with different
     hierarchical names.  The result adjustment is determined by which
     function is called and where it is called from, and there
     shouldn't be an opportunity to confuse them.

     Am I missing something?

Also, on Alex's request, we revisited the issue of thread-safe one-time
initialization.  We agreed that, if there's to be any hope of
interoperability of compilers supporting it, they need the same API for
handling the guard variable.

The proposed solution is to strongly suggest that implementors who
hope ever to support this call a routine:

	extern "C" int __cxx_gv_test_and_set ( long long *gv );

The routine returns "true" to only one caller, and "false" to all
others after the first has released the lock.  We neglected to note
that the release also needs specification.  How about:

	extern "C" void __cxx_gv_release ( long long *gv );

Comments?

Next meeting 20 July.

Jim

-		Jim Dehnert  x3-4272




More information about the cxx-abi-dev mailing list