Itcl - the [incr Tcl] extension

Check-in [0020101e54]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:avoid duplicates of vlookup by same var (protected vars of ancestor class), can use same handle across all namespaces
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | sebres-on-dmnd-resolver-perf-branch
Files: files | file ages | folders
SHA3-256: 0020101e543feb0069e2c35850a6e91d7bcb14f891469c2305d91631b2ee1f48
User & Date: sebres 2019-04-17 20:41:31.590
Context
2019-04-17
20:42
*interim* try to implement on demand var-resolver virtual table check-in: c3440a6f46 user: sebres tags: sebres-on-dmnd-resolver-perf-branch
20:41
avoid duplicates of vlookup by same var (protected vars of ancestor class), can use same handle across all namespaces check-in: 0020101e54 user: sebres tags: sebres-on-dmnd-resolver-perf-branch
20:40
Itcl_BuildVirtualTables: avoid whole recreation of var-resolver table (huge speed-up of class creation) check-in: 4744d4ba35 user: sebres tags: sebres-on-dmnd-resolver-perf-branch
Changes
Unified Diff Ignore Whitespace Patch
Changes to generic/itclClass.c.
1807
1808
1809
1810
1811
1812
1813

1814

1815
1816
1817
1818
1819
1820
1821
			}
			/* check leastQualName correction needed */
			if (!vlookup->leastQualName) {
			    vlookup->leastQualName = 
				Tcl_GetHashKey(&iclsPtr->resolveVars, hPtr);
			}
			/* reset vlookup for full-qualified names - new lookup */

			vlookup = NULL;

		    }
		}
		if (newEntry) {
		    if (!vlookup) {
			/* create new (or overwrite) */
			vlookup = (ItclVarLookup *)ckalloc(sizeof(ItclVarLookup));
			vlookup->usage = 0;







>
|
>







1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
			}
			/* check leastQualName correction needed */
			if (!vlookup->leastQualName) {
			    vlookup->leastQualName = 
				Tcl_GetHashKey(&iclsPtr->resolveVars, hPtr);
			}
			/* reset vlookup for full-qualified names - new lookup */
			if (vlookup->ivPtr != ivPtr) {
			    vlookup = NULL;
			}
		    }
		}
		if (newEntry) {
		    if (!vlookup) {
			/* create new (or overwrite) */
			vlookup = (ItclVarLookup *)ckalloc(sizeof(ItclVarLookup));
			vlookup->usage = 0;