Quick thoughts on WebKit’s B3

I just finished reading Introducing the B3 JIT Compiler and wanted to jot down some thoughts.  Fair warning, this post is being written in a hurry.  I’m focusing on getting down my initial reactions rather than trying for a really well thought out post.  That may follow at a later time or it may not. …

Continue reading ‘Quick thoughts on WebKit’s B3’ »

A perspective on friendly C

I was talking about John Regehr’s Friendly C proposal and recent follow-on post tonight with a friend, and decide to jot down some thoughts in a sharable format. I believe the idea of a friendly C variant is entirely feasible, but it posses an incredibly challenging design problem.  Every change considered needs to be validated …

Continue reading ‘A perspective on friendly C’ »

How much does it cost to maintain LLVM?

In early October of 2014, I started collecting changes that I saw fly by on llvm-commits that I thought would be straight-forward to automate.  I was trying to be pretty conservative, so these tend to be pretty basic things: fixing deceptive white space around an if clause, removing the name of a method from it’s …

Continue reading ‘How much does it cost to maintain LLVM?’ »

Statepoints vs gcroot for representing call safepoints

I recent discussion on LLVM commits w.r.t. the statepoint changes which are up for review, I managed to get myself confused and made a couple of inaccurate statements regarding the existing capabilities of gcroots vs the newly proposed statepoints.  This post is a (hopefully correct) summary of the similarities and differences. For the purposes of …

Continue reading ‘Statepoints vs gcroot for representing call safepoints’ »

Statepoint changes up for review

Last week, the first set of patches for our work on garbage collection support in LLVM hit the mailing list.  The review process will probably take a few weeks, but hopefully these should have landed by the 2014 LLVM Developers Meeting at the end of this month.  At that conference, my co-worker Sanjoy and I …

Continue reading ‘Statepoint changes up for review’ »

IR Restrictions for Late Safepoint Placement

The late safepoint placement pass we released recently has a couple of restrictions on the IR it can handle.  I’ve described those restrictions a couple of different times now, so I figured it was time to put them up somewhere I could reference and that google might find.  A shorter version of this post will …

Continue reading ‘IR Restrictions for Late Safepoint Placement’ »

Code for late safepoint placement available

This post contains the text of an email I sent to the LLVMdev mailing list a few moments ago.  I would encourage you to direct technical questions and comments to that thread, though I will also respond to technical questions in comments posted here. As I’ve mentioned on the mailing list a couple of times …

Continue reading ‘Code for late safepoint placement available’ »

Late Safepoint Placement: An Update

A couple of weeks ago, I promised further detail on the late safepoint placement approach.  Since that hasn’t developed – yet – I wanted to give a small update. All along, we’ve had two designs in mind for representing safepoints.  One was “clearly the right one” for long term usage, but was a bit more …

Continue reading ‘Late Safepoint Placement: An Update’ »

Late Safepoint Placement Overview

In a previous post, I sketched out some of the problems with the existing gcroot mechanism for garbage collection in LLVM.  This post is going to layout the general approach of what we’ve started referring to as “late safepoint placement.”  This will be both fairly high level and fairly short.  Details will follow in future …

Continue reading ‘Late Safepoint Placement Overview’ »

Why not use gcroot?

In a couple of recent threads on llvmdev the question of what’s wrong with the existing garbage collection support in llvm has come up.  I’ve partially answered this in a couple of different places, but this post series is an attempt to group everything together into one consistent answer. This post will focus on what …

Continue reading ‘Why not use gcroot?’ »