A while ago, I wrote about my work to speed up GDB’s DWARF reader. I thought I’d write again with a few updates. Sharding Back then, I wrote: “maybe GDB could trade memory for performance and shard the resulting index and do separate canonicalizations in each worker thread”. I did end up doing this. Recall […]
I was curious about DWARF abbrev table efficiency the other day, so I instrumented gdb to record some simple stats about abbrevs: how many are seen, how many duplicates are seen, and how many bytes are used. Running gdb on itself, I discovered that abbrevs are largely redundant. In particular, removing redundant abbrevs will remove […]
After literally years of false starts and failed attempts, last week I finally checked in a series of patches that speed up GDB’s DWARF reader. The speedup for ordinary C++ code is dramatic — I regularly see a 7x performance improvement. For example, on this machine, startup on gdb itself drops from 2.2 seconds to […]
One of my hobbies in GDB is cleaning things up. A lot of this is modernizing and C++-ifying the code, but I’ve also enabled a number of warnings and other forms of code checking in the last year or two. I thought it might be interesting to look at the impact, on GDB, of these […]
I’ve been working a bit more on my Emacs JIT, in particular on improving function calling. This has been a fun project so I thought I’d talk about it a bit. Background Under the hood, the Emacs Lisp implementation has a few different ways to call functions. Calls to or from Lisp are dispatched depending […]
There have been a few efforts at writing an Emacs JIT — the original one, Burton Samograd’s, and also Nick LLoyd’s. So, what else to do except write my own? Like the latter two, I based mine on GNU libjit. I did look at a few other JIT libraries: LLVM, gcc-jit, GNU Lightning, MyJit. libjit […]
I’ve recently switched groups at Mozilla to start working full-time on improving Rust debugging. To kick this off and to meet people from the various projects I’m working on — the Rust compiler, lldb, llvm, gdb, and (eventually) the DWARF standard — I will speak about this work at FOSDEM. If you’re going and want […]
A year or so ago I was asked to debug a crash in the Firefox devtools. Crashes are easy! I fired up gdb and reproduced the crash… which turned out to be in some code JITted by SpiderMonkey. I was immediately lost; even a simple bt did not work. Someone more familiar with the JIT […]
I originally posted this on G+ but I thought maybe I should expand it a little and archive it here. The patch to delete gcj went in recently. When I was put on the gcj project at Cygnus, I remember thinking that Java was just a fad and that this was just a temporary thing […]
In firefox development, it’s normal to do most development tasks via the mach command. Build? Use mach. Update UUIDs? Use mach. Run tests? Use mach. Debug tests? Yes, mach mochitest --debugger gdb. Now, normally I run gdb inside emacs, of course. But this is hard to do when I’m also using mach to set up […]