1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 16:08:10 +00:00
serenity/Libraries/LibC
Brian Gianforcaro bbc7e8429b LibC: Remove duplicate gs touch during gettid()/getpid() fast path
While profiling I noticed that gettid() was hitting gs register
twice, once for the initial fetch of s_cache_tid out of TLS for
the initialization check, and then again when we return the actual
value.

Optimize the implementation to cache the value so we avoid the
double fetch during the 99% case where it's already set. With
this change gettid() goes from being the 3rd most sampled function
in test-js, to pretty much disappearing into  ~20th place.

Additionally add the same optimization to getpid().
2020-07-23 12:28:11 +02:00
..
arpa LibC: Add inet_aton, based on inet_pton 2020-05-11 09:50:42 +02:00
bits Meta: Add a script check the presence of "#pragma once" in header files 2020-05-29 07:59:45 +02:00
net Meta: Add a script check the presence of "#pragma once" in header files 2020-05-29 07:59:45 +02:00
netinet LibC: Add IPPORT_RESERVED and IPPORT_USERRESERVED 2020-06-08 21:50:45 +02:00
sys LibC: add mkfifo(3) 2020-07-19 11:46:37 +02:00
alloca.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
assert.cpp LibC: Remove endless loop after abort() call 2020-05-26 14:35:10 +02:00
assert.h AK+LibC: Add TODO() as an alternative to ASSERT_NOT_REACHED() 2020-05-30 11:31:49 +02:00
byteswap.h Meta: Add missing copyright headers 2020-04-06 11:09:01 +02:00
CMakeLists.txt Toolchain: Allow building using CMake on macOS 2020-07-13 08:46:44 +02:00
crt0.cpp Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
crti.S Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
crtn.S Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
ctype.cpp Revert "LibC: Implement isblank()" 2020-02-16 10:47:54 +01:00
ctype.h LibC: Don't let ctype isfoo() helpers access array out of bounds 2020-05-17 22:35:25 +02:00
cxxabi.cpp Revert "LibC: Implement Itanium C++ ABI for static variable guards" 2020-05-20 16:24:26 +02:00
dirent.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
dirent.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
dlfcn.cpp AK: Rename FileSystemPath -> LexicalPath 2020-05-26 14:35:10 +02:00
dlfcn.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
endian.h LibC: Fix big endian definitions 2020-02-19 16:08:28 +01:00
errno.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
errno_numbers.h Kernel+LibC: Remove ESUCCESS 2020-04-10 13:09:35 +02:00
fcntl.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
fcntl.h Kernel+LibC: Switch isatty() to use a fcntl() 2020-05-20 08:31:31 +02:00
fd_set.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
float.h Meta: Add a script check the presence of "#pragma once" in header files 2020-05-29 07:59:45 +02:00
getopt.cpp Meta: Scale back overly informal user-facing strings 2020-06-17 18:35:49 +02:00
getopt.h LibC: Rewrite getopt() 2020-05-30 15:01:18 +02:00
grp.cpp AK: Make string-to-number conversion helpers return Optional 2020-06-12 21:28:55 +02:00
grp.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
iconv.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
inttypes.h LibC: Add some missing macros to inttypes.h 2020-02-20 06:51:16 +01:00
ioctl.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
libcinit.cpp LibWeb: Move everything into the Web namespace 2020-03-07 10:27:02 +01:00
libgen.cpp Meta: Claim copyright for files created by me 2020-01-24 15:15:16 +01:00
libgen.h Meta: Claim copyright for files created by me 2020-01-24 15:15:16 +01:00
limits.h LibC: Use more flexible digit parsing code, deduplicate 2020-05-11 10:52:24 +02:00
locale.cpp Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
locale.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
malloc.cpp LibC: Make sure malloc chunks are 8-byte aligned 2020-07-21 22:48:17 +02:00
mallocdefs.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
memory.h Meta: Add a script check the presence of "#pragma once" in header files 2020-05-29 07:59:45 +02:00
mman.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
mman.h Kernel+LibC: Add minherit() and MAP_INHERIT_ZERO 2020-04-12 20:22:26 +02:00
mntent.cpp Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
mntent.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
netdb.cpp AK: Make string-to-number conversion helpers return Optional 2020-06-12 21:28:55 +02:00
netdb.h LibC: getprotoent() family of functions 2020-04-18 10:11:55 +02:00
poll.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
poll.h LibC+Kernel: Implement ppoll 2020-06-23 14:12:20 +02:00
pwd.cpp AK: Make string-to-number conversion helpers return Optional 2020-06-12 21:28:55 +02:00
pwd.h LibC: Implement putpwent() 2020-02-02 10:58:45 +01:00
qsort.cpp LibC: Replace Berkley's qsort() with AK::dual_pivot_quick_sort() wrapper 2020-07-03 19:29:36 +02:00
scanf.cpp LibC: Some build fixes for strange platforms 2019-09-29 21:02:13 +02:00
sched.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
sched.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
serenity.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
serenity.h LibC: Communicate malloc() and free() operations to UserspaceEmulator 2020-07-15 23:25:20 +02:00
setjmp.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
setjmp.S Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
signal.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
signal.h LibC: Declare pthread_sigmask() in signal.h. 2020-06-16 09:34:00 +02:00
signal_numbers.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
spawn.cpp LibC: In posix_spawn(), use _exit instead of exit on child error 2020-06-20 14:43:27 +02:00
spawn.h Add manpages for posix_spawn 2020-07-06 10:01:14 +02:00
stat.cpp LibC: add mkfifo(3) 2020-07-19 11:46:37 +02:00
stdarg.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
stdbool.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
stddef.h LibC: Move ssize_t from <stddef.h> to <sys/types.h> 2020-05-23 17:03:41 +02:00
stdint.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
stdio.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
stdio.h Kernel+LibC: Fix various build issues introduced by ssize_t 2020-05-23 15:27:33 +02:00
stdlib.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
stdlib.h LibC: Add posix_openpt(), grantpt() and unlockpt() 2020-02-05 21:17:41 +01:00
string.cpp LibC: Implement strchrnul() 2020-02-22 21:36:54 +01:00
string.h LibC: Implement strchrnul() 2020-02-22 21:36:54 +01:00
strings.cpp Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
strings.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
syslog.cpp AK: Add a forward declaration header 2020-02-14 23:31:18 +01:00
syslog.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
termcap.cpp Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
termcap.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
termios.cpp LibC: Implement tcflush(3) 2020-07-11 11:33:33 +02:00
termios.h LibC: Implement cf{g,s}et{i,o}speed 2020-07-04 10:49:36 +02:00
time.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
time.h LibC: Add nanosleep() wrapper around clock_nanosleep(CLOCK_REALTIME) 2020-06-08 21:53:41 +02:00
times.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
ulimit.cpp LibC: Log calls to getrusage 2020-05-07 23:32:11 +02:00
ulimit.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
unistd.cpp LibC: Remove duplicate gs touch during gettid()/getpid() fast path 2020-07-23 12:28:11 +02:00
unistd.h LibC+Kernel: Start implementing sysconf 2020-07-15 00:07:20 +02:00
utime.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
utime.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
utmp.h LibC: Add missing <sys/time.h> include in <utmp.h> 2020-05-11 09:50:42 +02:00
utsname.cpp Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
wchar.cpp Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
wchar.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00