Source-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: basesrc/libexec/ld.elf_so
Module Name: basesrc
Committed By: mycroft
Date: Thu Oct 3 20:35:20 UTC 2002
Modified Files:
basesrc/libexec/ld.elf_so: load.c rtld.c rtld.h symbol.c
Log Message:
As seen on tech-userlevel...
There are several optimizations here:
1) Objects on _rtld_list_main do not participate in the DAG structures
at all. This is okay because all symbols must be resolvable at
link/load time, and _rtld_list_main is always searched first, so
any references from those objects must necessarily be resolved to
other objects on _rtld_list_main.
(Making this work completely required setting obj->main a bit
earlier; hence the RTLD_MAIN hack.)
2) Objects on _rtld_list_main are not put on _rtld_list_global,
preventing an extra search.
3) A bit is used to keep track of whether an object is on
_rtld_list_global, so we don't have to do a silly linear search.
4) A small attempt is made to prevent objects being put on the DAG
lists multiple times (using a silly linear search).
The sum of this appears to be a ~10% (.3s) reduction in Mozilla's
startup time on my 800MHz box.
Also, make sure _rtld_objmain->path is always set, just to make the
debug output nicer.
To generate a diff of this commit:
cvs rdiff -r1.19 -r1.20 basesrc/libexec/ld.elf_so/load.c
cvs rdiff -r1.83 -r1.84 basesrc/libexec/ld.elf_so/rtld.c
cvs rdiff -r1.61 -r1.62 basesrc/libexec/ld.elf_so/rtld.h
cvs rdiff -r1.22 -r1.23 basesrc/libexec/ld.elf_so/symbol.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Home |
Main Index |
Thread Index |
Old Index