- 
                            Key: CORBA3-42
- 
                            Legacy Issue Number: 4796
- 
                            Status: closed
- 
                            Source: hursley.ibm.com ( Simon Nash)
- 
                            Summary:This issues was previously raised as issue 4294, and was deferred to the 
 GIOP 1.3 wishlist. Now that GIOP 1.3 is about to become a reality, I am
 re-raising the issue because of its importance for efficient RMI-IIOP
 communications. This is an interop issue, but I am also copying the
 Java to IDL list because of its impact on RMI-IIOP performance.CDR should allow TypeCode indirections that refer to top-level TypeCodes. 
 The current prohibition of this causes servere performance penalties for
 RMI-IIOP because the Java to IDL mapping requires that Java objects of
 declared type java.lang.Object are marshalled as CORBA anys. In the case
 of a Vector or HashTable with 100 elements, this means that 100 anys must
 be marshalled. If all of these are of actual type foo, the restriction
 on TypeCode indirections means that all 100 of these data values must repeat
 the TypeCode for foo, which could be very large. This causes very substantial
 overheads, since the space and time needed to marshal the TypeCode for foo
 can greatly exceed that needed to marshal the data for foo.I understand why a nested indirection cannot refer to any TypeCode outside 
 the scope of its enclosing top-level TypeCode. However, this restriction
 does not need to apply to a top-level TypeCode. We have made this change
 experimentally without any adverse effects and we have discovered that
 using indirections for all repeated top-level TypeCodes can speed up some
 common scenarios by at least a factor of 5 on end-to-end measurements.
 There appears to be no downside to making this change.Proposed Resolution: In the section headed "Indirection: Recursive and Repeated TypeCodes" within 
 section 15.3.5.1, replace the current first bullet:The indirection applies only to TypeCodes nested within some “top-level” 
 TypeCode. Indirected TypeCodes are not “freestanding,” but only exist inside
 some other encoded TypeCode.by the following two bullets: For GIOP 1.2 and below, the indirection applies only to TypeCodes nested 
 within some “top-level” TypeCode. Indirected TypeCodes are not “freestanding,”
 but only exist inside some other encoded TypeCode.For GIOP 1.3 and above, the indirection applies only to TypeCodes nested 
 within some “top-level” TypeCode, or from one top-level TypeCode to another.
 Indirected TypeCodes nested within a top-level TypeCode can only reference
 TypeCodes that are part of the same top-level TypeCode, including the
 top-level TypeCode itself. Indirected top-level TypeCodes can reference
 other top-level TypeCodes but cannot reference TypeCodes nested within
 some other top-level TypeCode.
- 
                            Reported: CORBA 2.6 — Fri, 21 Dec 2001 05:00 GMT
- 
                            Disposition: Resolved — CORBA 3.0.2
- 
                            Disposition Summary:see above 
- 
                            Updated: Fri, 6 Mar 2015 20:58 GMT