------------------------------------------------------------------------ This Fixpak is provided as a set of files. To install this Fixpak perform the following steps : (1) Unzip this Fixpak to an empty directory (i.e. f:\ibmcsd). If you are using PKUNZIP*, use -d, to have the files unzipped into directories. Do not unzip into a directory with a blank in its name. (2) Change the current directory to the directory containing service.exe. (3) Issue the following command : SERVICE This Fixpak may be installed to any disk accessible to your system, including LAN drives. The service program itself must run within an OS/2 2.11 or later session. (4) If you performed a basic install, you will be asked if you want to backup the previous version. You may choose to do this or not, but you SHOULD NOT ATTEMPT TO RESTORE THE PREVIOUS LEVEL, using the Installation Utility - Restore Action, if problems occur. You should delete and re-install the component if an error occurs during installation of this Fixpak. ------------------------------------------------------------------------ The following conditions must exist for Fixpak installation to be successful: (1) You must have already installed the IBM VisualAge C++ for OS/2 product via a basic install from CD-ROM, diskette or from a server to which the CD-ROM/diskettes were copied to. You can also install this FIxpak to a server to which the CD-ROM install image was copied to. Users who have performed a shared install will have to delete and re-install this product from their workstation, once this Fixpak has been applied to the server. (2) No IBM VisualAge C++ for OS/2 tools can be open in any session when you install the Fixpak. If the copy of the product being serviced resides on a LAN drive, you must ensure that no other LAN user has any of these files open. (3) Make sure that the directory for this Fixpak contains only the files from this Fixpak. If other files are present, it may cause the installation to fail. It would best to unpack the Fixpak ZIP file into an empty directory. ------------------------------------------------------------------------ This Fixpak applies fixes to the compiler component of the IBM VisualAge C++ for OS/2 product. A list of the fixes contained in this Fixpak can be found in the file CTC305.LST. The fixes are cumulative, meaning that this Fixpak contains all fixes described in CTC305.LST, even if they were fixed on a prior Fixpak. The complete list of files in this Fixpak can be found in the file SERVICE.LST. ---------------------------------------------------------------------------------- Please read the following information regarding SOM enabled C++ classes. This Fixpak fixes a minor bug (APAR 52703) in which the Direct-To-SOM C++ template class names were incorrectly mangled. This bug was caused by the fact the the C++ and SOM mangled name of a DTS C++ template class were mixed together. Fix 52703 corrects this behaviour, however the new mangled names for DTS C++ template classes will break binary compatibility with existing code. This fix only effects source containing DTS C++ template classes having a class type as a template argument type. The user is asked not to use this fix from the current Fixpak. To disable fix for APAR 52703: When invoking the compiler use option "-yxqcompatsommangling" . You can use option -yxcompatsommangling when compiling source containing DTS enabled template classes, however it is recommended you use this option at all times when dealing with DTS C++ classes. ------------------------------------------------------------------------ New functions/macros added are all prototyped within umalloc.h (I) int _upool(Heap_t uh, size_t minsz, size_t maxsz, size_t res, size_t flags) This function will create a transparent pool for all allocations performed on the 'uh' heap via malloc/_umalloc for sizes between 'minsz' and 'maxsz' The 'res' argument is reserved and thus zero should be passed in for it The 'flags' argument may be zero of _POOL_PRESERVE to indicate that a heapmin operation on pool 'uh' should not attempt to minimize the subpool previously created. This function is ideal for applications that allocate and free objects of a finite range size and where heap operations account for a significant part of execution time. Since a faster subpool is created for the size range provided by the user, allocation and frees will be significantly faster. To remove a previously created pool for a heap, a call to _upool is made with the minsz and maxsz parameters set to 0. All items within the pool will be returned back the heap specified in the call. The return code of 0 indicates that the pool was created successfully. Example: Heap_t uh; void *p; uh = _ucreate(....); - create a user heap _upool(uh, 1, 128, 0, 0); - create a subpool for sizes 1..128 p = _umalloc(uh, 100); - allocation will be from subpool p = _umalloc(uh, 500); - allocation will be from heap _upool(uh,0 , 0, 0, 0); - remove previous subpool for heap (II) int _uflush(Heap_t uh, size_t size) This function will release all objects of the provided 'size' within the subpool back to the heap. A size of zero will flush the entire pool. return code of zero indicated no errors have been detected. (III) The structure _HEAPSTATS defined within has been expanded to include the following members, _pool_minsize - Minimum size of pool _pool_maxsize - Maximum size of pool _pool_freebytes - Total size of objects available within pool _pool_allocs - Quantity of allocations performed within pool _pool_frees - Quantity of releases performed within pool _allocs - Quantity of allocations performed within heap and pool _frees - Quantity of releases performed within heap and pool These statistics can be obtained by using _ustats to indicate the success of the pooling sizes specified via _upool.