Speed ISeq marking by using a bitmap and rearranging inline caches by tenderlove
Today we have to disassemble instruction sequences in order to mark them. The disassembly process looks for GC allocated objects and marks them. To disassemble an iseq, we have to iterate over each instruction, convert the instruction from an address back to the original op code integer, then look up the parameters for the op code. Once we know the parameter types, we can iterate though them and mark "interesting" references. We can see this process in the iseq_extract_values function.According to profile results, the biggest bottleneck in this function is converting addresses back to instruction ids.
Speed ISeq marking by using a bitmap and rearranging inline caches by tenderlove #ruby #rails #rubyonrails #bosnia #programming #tutorials #rubydeveloper #railsdeveloper