Babysitter Register Allocation

Expert skill for register allocation algorithms including graph coloring, linear scan, and spill code generation

install
source · Clone the upstream repo
git clone https://github.com/a5c-ai/babysitter
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/programming-languages/skills/register-allocation" ~/.claude/skills/a5c-ai-babysitter-register-allocation && rm -rf "$T"
manifest: library/specializations/programming-languages/skills/register-allocation/SKILL.md
source content

Register Allocation Skill

Overview

Expert skill for register allocation algorithms including graph coloring, linear scan, and spill code generation.

Capabilities

  • Implement graph coloring register allocation
  • Implement linear scan register allocation
  • Generate spill code with minimal overhead
  • Handle calling convention register constraints
  • Implement register coalescing
  • Handle pre-colored nodes and fixed registers
  • Implement live range splitting
  • Design register pressure analysis

Target Processes

  • jit-compiler-development.js
  • code-generation-llvm.js
  • bytecode-vm-implementation.js

Dependencies

None (algorithmic skill)

Usage Guidelines

  1. Algorithm Selection: Use linear scan for JIT (fast), graph coloring for AOT (optimal)
  2. Live Ranges: Compute accurate live ranges before allocation
  3. Spill Costs: Use heuristics to minimize spill costs (loop depth, usage frequency)
  4. Calling Conventions: Handle caller/callee-saved registers correctly
  5. Coalescing: Implement aggressive coalescing to reduce moves

Output Schema

{
  "type": "object",
  "properties": {
    "algorithm": {
      "type": "string",
      "enum": ["graph-coloring", "linear-scan", "second-chance-binpacking"]
    },
    "spillStrategy": { "type": "string" },
    "registerClasses": {
      "type": "array",
      "items": { "type": "string" }
    },
    "generatedFiles": {
      "type": "array",
      "items": { "type": "string" }
    }
  }
}