Ticket UUID: | 1530474 | |||
Title: | Shrink the .exe size | |||
Type: | Patch | Version: | None | |
Submitter: | afredd | Created on: | 2006-07-28 15:46:01 | |
Subsystem: | None | Assigned To: | dkf | |
Priority: | 4 | Severity: | ||
Status: | Closed | Last Modified: | 2006-08-10 19:19:54 | |
Resolution: | Fixed | Closed By: | dkf | |
Closed on: | 2006-08-10 12:19:54 | |||
Description: |
By converting the 24 calls of: Tcl_Panic("<function> called with shared object"); in the core, into a (new) function call of TclSharedObjPanic("<function>"); ...where TclSharedObjPanic() constructs the previous message before calling Tcl_Panic() then the static .exe shrinks by about 4K (from 770048 to 765952). This is more than i'd expected, so compilers other than VS6 may give less impressive savings. Attached patch includes the trivial changes to tclBinary.c tclDictObj.c tclInt.h tclListObj.c tclObj.c tclStringObj.c | |||
User Comments: |
dkf added on 2006-08-10 19:19:53:
Logged In: YES user_id=79902 Applied fixes suggested. Will not backport. afredd added on 2006-08-07 21:17:33: File Deleted - 186616: File Added - 188005: tclVar.c-patch Logged In: YES user_id=1386588 Another few bytes can be saved by removing the redundant first "if (objc < 1)" test in Tcl_UnsetObjCmd. ie. are there a negative number of command arguments. Looks like a harmless mistranslation of the code for the old behaviour when [unset] was an error. Anyways saves a few bytes (257) from the tclVar.obj, and possibly from the .exe too. afredd added on 2006-08-07 16:03:08: File Added - 187948: called_with_shared_object.patch Logged In: YES user_id=1386588 > can you (afredd) please provide the alternate patch? thx Sure - here it is. I've also added in the reworded Tcl_Panic for TclIncrObj. Note, while i haven't changed them there are 2 possible typos in the (original) panic messages. (1) The panic at ~1323 of tclListObj.c says "Tcl_ListObjSetElement" but is really in TclListObjSetElement (no underscore). (2) Similarly, at ~344 in tclBinary.c the panic in the function Tcl_SetByteArrayLength says Tcl_SetObjLength. hobbs added on 2006-08-05 05:59:34: Logged In: YES user_id=72656 can you (afredd) please provide the alternate patch? thx afredd added on 2006-08-04 15:36:45: Logged In: YES user_id=1386588 > I'm interested to know if the same effect can be had by > just using: > > Tcl_Panic("%s called with shared object", <function>); Good idea... yes, this gives the same 4K file size reduction as with using a TclSharedObjPanic(). Also, spotted in tclExecute.c: ~1043: Tcl_Panic("shared object passed to TclIncrObj") which could be reworded to match the others. hobbs added on 2006-08-04 01:31:05: Logged In: YES user_id=72656 I'm interested to know if the same effect can be had by just using: Tcl_Panic("%s called with shared object", <function>); as the string would remain the same, and no new function is needed (Tcl_Panic already handles varargs). If so, that would be a trivially easy to add in patch. dkf added on 2006-08-04 00:04:45: Logged In: YES user_id=79902 Putting this on the back-burner for now; better to do this sort of thing during (towards the end of?) the beta cycle. afredd added on 2006-07-28 23:59:09: File Added - 186627: tclClock.c-patch Logged In: YES user_id=1386588 ...and one for tclClock.c that shrinks tclClock.obj from 23,417 to 23,201 by condensing the clock command initialisation code. afredd added on 2006-07-28 23:08:14: File Added - 186622: tclBasic.c-patch afredd added on 2006-07-28 23:08:13: Logged In: YES user_id=1386588 To go with the previous changes, here's a patch that removes the need for the "::tcl::mathfunc::" prefix on all math function name static strings in tclBasic.c. For me this shrinks tclBasic.obj from 80963 to 79965, a saving of 998bytes. afredd added on 2006-07-28 22:46:02: File Added - 186616: TclSharedObjPanic.patch |
Attachments:
- tclVar.c-patch [download] added by afredd on 2006-08-07 21:17:33. [details]
- called_with_shared_object.patch [download] added by afredd on 2006-08-07 16:03:08. [details]
- tclClock.c-patch [download] added by afredd on 2006-07-28 23:59:09. [details]
- tclBasic.c-patch [download] added by afredd on 2006-07-28 23:08:14. [details]