Paul Bone


— 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.