Blog
- — The right amount of poison
-
Firefox poisons memory, but how much poison is the right amount?
- — Waiting for web content to do something in a Firefox mochitest
-
How to write a Firefox test that waits for a tab to wait for a web worker and avoid (most) races.
- — Running the AWSY benchmark in the Firefox profiler
-
A post for future me who may wish to profile AWSY again
- — Project MemShrink
-
I’m starting a new project to reduce Firefox’s memory footprint
- — Case Sensitivity In Grammars
-
A recent change to Plasma caused me to think choices that various languages make with regard to ambiguity in their grammar that is often resolved by case.
- — Reorg’d
-
I no-longer work on Firefox’s garbage collector
- — Cpu Cache
-
CPU-bound performance often involves CPU caches. So lets dive in to CPU caches, some basics of how they’re implemented, how they keep a consistent view of data in multicore systems and some other types of caches that are also found in a CPU.
- — Recursive Lambdas In Plasma
-
I found an interesting case where due to syntax sugar internal consistency and external consistency were in conflict and I could not have both.
- — Happy Holidays
-
Here’s something I annoyed everyone at work about last Christmas.
- — Falsehoods Programmers Believe about Garbage Collection
-
It’s about time I joined the cottage industry of falsehood articles.
- — PZ Machine Calling Conventions
-
I’ve been stuck for a while implementing Plasma’s closures, calling conventions and inter-module references. This article summarises some of that process and how I hope to solve it.
- — x86 Addressing Under the Hood
-
In this article we take a look at how the operands of x86 instructions are encoded.
- — Blogging
-
Inspired by an e-mail from a colleague, I blog about blogging.
- — Avoiding large immediate values
-
I improved Firefox performance by 2.5% with knowledge of machine code.
- — A crash course in x86 addressing modes
-
A crash course in x86 addressing modes
- — Good First Bugs
-
Good First Bugs
- — Dissassembling Jit Code In Gdb
-
Some notes of how to disassemble JITed code in gdb
- — Upcomming and Recent talks
-
Short announcment about upcomming Compose Melbourne 2018 talk and past Haskell Meetup talk.
- — Static Assert Type In Cplusplus
-
I like static type checks, but they can’t check everything, particularly when working on a GC or JIT. This neat C++ feature helps us ensure we can have more type-correct code in the SpiderMonkey JIT.
- — Mentoring
-
Recently I had the opportunity to do some mentoring and would like to reflect and share some insights.
- — Bytecode Interpreter
-
In this article I’m going to explain how basic bytecode interpreters work, such as the first one written for Plasma’s bytecode format.
- — Plasma And Wasm
-
Considerations for supporting WebAssembly in Plasma.
- — Cfps
-
A list of CFP lists, and an idea for finding them more easilly
- — More on closures
-
I describe two papers describing how closures are compiled in some other languages and describe how this relates to Plasma.
- — Compiling closures
-
When a function pointer takes a single machine word, and a closure two or more, how can you represent closures in a polymorphic way?
- — Low vision and how I see the web
-
I finally wrote about my eye sight and how this affects my use of the web.
- — icecc and ccache - Compiling lots of C++ quickly
-
Firefox is a big project and takes quite some time to compile. I’ve set up icecc and ccache to help speed up these compilations. This article may guide anyone wanting to set up these tools to speed up their own lengthy C/C++ compilations.
- — Scopes
-
A reddit discussion led me to write down some ideas I’d been considering for scopes in Plasma.
- — Gc Vs Other Memory Management
-
In response to a question on reddit, I share my thoughts about GC vs ref counting and Rust’s object lifetime system.
- — Tail Recursion
-
We’re introduced to tail recursion early in our functional programming journey. But it is well worth revisiting for the seasoned or advanced functional programmer, it can be more subtle than you know.
- — Back In The Usa
-
I took a trip to the USA for a job interview and also took a look around San Francisco.
- — More about Memory Fragmentation in BDW GC
-
This is a follow up article about memory fragmentation. I show how heap usage and utilisation changes over time for Prince and demonstrate the kind of information that can be extracted from BDW GC without too much effort.
- — How to Allocate Memory — Code Generation
-
How do you generate code that allocates memory? This isn’t about memory management algorithms, or language design concepts. But how to translate Plasma code that allocates memory (like use of a data constructor) into PZ abstract machine code.
- — Explaining GADTs
-
In this article I work through a problem that can be solved elegantly with GADTs
- — Memory Fragmentation in The Boehm-Demers-Weiser Garbage Collector
-
In this article I explore an interesting memory fragmentation situation in the BDW Garbage Collector. This covers a program that crashes due to fragmentation (despite 288MB free within the heap), BDWBC’s heap organisation and why the 288MB cannot be used for this allocation and some potential solutions.
- — Code Loading and Security
-
In this article I explain the interaction between execute protection and code loading.
- — Compose :: Melbourne Conference
-
Today I attended and presented at Compose Melbourne
- — Conversation with William Byrd
-
I had an interesting chat with William Byrd about logic programming, relational programming and parallelism.
Subscribe using Atom.