mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
Skip optimized method check for most method IDs
Previously every time a method was defined on a module, we would recursively walk all subclasses to see if the module was included in a class which the VM optimizes for (such as Integer#+). For most method definitions we can tell immediately that this won't be the case based on the method's name. To do this we just keep a hash with method IDs of optimized methods and if our new method isn't in that list we don't need to check subclasses at all.
This commit is contained in:
parent
9245462499
commit
254477248c
Notes:
git
2019-12-18 02:19:26 +09:00
3 changed files with 24 additions and 2 deletions
|
@ -2282,6 +2282,7 @@ const char *rb_source_location_cstr(int *pline);
|
|||
MJIT_STATIC void rb_vm_pop_cfunc_frame(void);
|
||||
int rb_vm_add_root_module(ID id, VALUE module);
|
||||
void rb_vm_check_redefinition_by_prepend(VALUE klass);
|
||||
int rb_vm_check_optimizable_mid(VALUE mid);
|
||||
VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
|
||||
MJIT_STATIC VALUE ruby_vm_special_exception_copy(VALUE);
|
||||
PUREFUNC(st_table *rb_vm_fstring_table(void));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue