Specialized ops#7322
Merged
youknowone merged 12 commits intoRustPython:mainfrom Mar 4, 2026
Merged
Conversation
Contributor
📝 WalkthroughWalkthroughThis PR makes bytecode slots atomic for concurrent specialization, centralizes adaptive inline-caching and deoptimization flows, moves JIT cache storage to a mutex-protected optional, strengthens several atomic ordering choices across types/dicts, and distinguishes Python-level methods from native slots in slot lookup/update logic. Changes
Sequence Diagram(s)sequenceDiagram
participant Frame as ExecutingFrame
participant CodeUnits as Code Storage
participant Adaptive as Adaptive Engine
participant Specialized as Specialized Handler
participant Base as Base Handler
Frame->>CodeUnits: read_op(index) (Acquire)
CodeUnits-->>Frame: opcode
Frame->>Adaptive: check adaptive counter & candidate (Relaxed)
Adaptive->>Adaptive: increment counter (Relaxed)
Adaptive->>Specialized: attempt specialization
alt Success
Specialized->>CodeUnits: compare_exchange_op(index, expected, new) (Release)
CodeUnits-->>Specialized: CAS success
Specialized-->>Frame: execute specialized path
else Fail
Specialized->>CodeUnits: write base opcode (Release)
CodeUnits-->>Base: base opcode written
Specialized-->>Frame: fall back to base handler
end
sequenceDiagram
participant Setter as PyType SetAttr
participant Version as Version Tag
participant Readers as Concurrent Readers
Setter->>Version: modified() (SeqCst store)
Version->>Readers: readers load version (Acquire)
Setter->>Setter: perform attribute insert/remove
Setter-->>Readers: changes ordered via version operations
Estimated code review effort🎯 4 (Complex) | ⏱️ ~50 minutes Possibly related PRs
Suggested reviewers
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
|
Summary by CodeRabbit
Performance & Stability
Refactor
Behavior