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.mdsource 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
- Algorithm Selection: Use linear scan for JIT (fast), graph coloring for AOT (optimal)
- Live Ranges: Compute accurate live ranges before allocation
- Spill Costs: Use heuristics to minimize spill costs (loop depth, usage frequency)
- Calling Conventions: Handle caller/callee-saved registers correctly
- 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" } } } }