
July 10, 1991

1. The enumerated form of the sizes array for CkAllocMsg & CkAllocPrioMsg :
   The enumeration should be complete - that is, the number of parameters
   supplied must match the number of varSize fields in the message.

2. Syntax for varSize :

   <varSize-field> ::= <Type-Identifier> <Identifier> [ varSize ] ;
			    ||
   * Change * ===============

3. packIDs : M4 will insert _CK_9_EPtoPackID[<EP]
   wherever packID is needed. <EP> is the appropriate entry-point argument.
   
   _CK_9_EPtoPackID is a table that maps entrypoints to packIDs of the message
   expected at that  entry point.

   _CK_9_PackFunctionTable and _CK_9_UnPackFunctionTable will be appropriately
   set.

   Following the above "naming," the global function table  (for public and
   module level functions)  will be called _CK_9_GlobalFunctionTable.

-----

July 11, 1991

4.  There is an EPtoMessageNumber Table. There is a PackFunction table.
    There is a count MessagePackCount which represents the number of messages
    that have pack functions. (MessagePackCount is a run-time variable). Another
    variable, TotalMessages, gives the number of total msgs. PackOffset
    denotes TotalMessages-MessagePackCount.

    Message Number for a message is in the range 
    1..PackOffset if the message has no pack function 
    else the Message Number is greater than PackOffset.

    The run-time system compares the message number (obtained from the EPtoMsg#
    table) with MessagePackCount and indexes the PackFunction table with
    index = messagenumber - PackOffset - 1 iff message number > PackOffset.

    If MessageNumber<=PackOffset, there is no valid packID. Message Number 0 
    also implies that the corresponding entry point takes NO message. 
    The "no message" bit is discussed below.

5.  An EP that takes no message looks like
    entry <identifier>  : ( ) { <body> }
  
    [This goes for DataInit,ChareInit and QUIESCENCE.]

    The translator inserts a dummy pointer and a dummy free statement. This
    should work. The user provides NULL instead of msgptr, the run time 
    system passes the envelope which is freed just before leaving the entry
    point.

    Since the current system sends nothing to the DataInit,ChareInit, and
    QUIESCENCE, I shall translate them so as not to expect any envelope.

6.  Note that the single EPtoPackID table consists of two types of
    entry-points : Chare EP points, with indices in the range
    0 ..  ChareEPCount-1, and Branch EP points, with indices in the
    range ChareEPCount .. ChareEPCount+BranchEPCount-1.

    The  indices for the  Chare EP points are in the range
    0 .. ChareEPCount-1, while those for the BranchEP points are
    in the range 0 .. BranchEPCount - 1. As a result, when a branch
    EP is encountered, to obtain the proper index in the EPtoPackId
    table, the branch EP index should be added ChareEPCount (available
    as a global variable) : This has to be done at run time, for each
    call involving a branch EP.

    [ This was from Wednesday's discussion.]

-----
