> If it is preferable to specify the cache size via an environment variable, instead of just the ability to disable the cache, I can work on that approach instead. My 2 cents, since we have had `RUBY_{THREAD_VM,THREAD_MACHINE,FIBE...alanwu (Alan Wu)
(More precisely, the invalidation happens with any method override in the range between `singleton_class.ancestors.first` and the first non-singleton class.) I'll use YJIT for the example because it has counters in the default build f...alanwu (Alan Wu)
IMO using an ivar for `__members__` was an implementation limitation from back when we didn't have variable width GC allocations. Now that we can have it as a struct field on the T_CLASS directly, caching the read of that ivar seems espe...alanwu (Alan Wu)
Frankly, I don't want to parse through this huge wall of LLM generated prose. Please be mindful of what you're asking readers to do. Your request boils down to wanting to expose some internal primitive that is used to implement Ruby's m...alanwu (Alan Wu)
> To be clear, both stackprof and the datadog profiler avoid this because they still sample the stack inside the signal handler -- the postponed jobs mechanism handles only the recording of the stack (which might e.g. involve expanding m...alanwu (Alan Wu)
Postponed jobs are overall not great for sample collection because it's biased: C methods can run arbitrarily long without checking interrupts which then frames whatever ruby method afterwards with many samples. We've seen this happen wi...alanwu (Alan Wu)
BTW, the cost analysis to non-users is incomplete in the PoC. Quantifying JIT time cost in terms of extra instructions doesn't talk about the optimizations otherwise possible that this inhibits. The space analysis doesn't talk about all ...alanwu (Alan Wu)