mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Add NEWS entries about JIT optimizations
and a related VM improvement. JIT related commits: * Code size reduction * Deduplicate functions on JIT compaction818d6d3336
* Avoid always inlining cold paths of ivarfcd2576290
* Inline only fast path of rb_class_ofb16a2aa938
* Eliminate a call instruction on deopt61b14bb32b
* Cold path partitioning * Mark method call slow paths as COLDFUNC0e5a58b6bf
* Mark vm_stackoverflow as NOINLINE COLDFUNC9d71373c23
* Create mjit_exec_slowpath and mark it as NOINLINE COLDFUNC083a17a82a
* Primitive.attr! 'inline' / Integer#zero?7561db8c00
* Kernel#class946e5cc668
* (more to come...) * Properly generate opt_send for cfunc cc7982dc1dfd
* Optimize exivar accessb736ea63bd
* Make JIT-ed leave leaf151f8be40d
* Inline vm_call_cfuncb9d3ceee8f
VM: * Enable fastpath on invokesuper5c27681813
* History: https://speakerdeck.com/k0kubun/ruby-3-samituto?slide=40 (in Japanese)
This commit is contained in:
parent
4949df498a
commit
200c5f4075
1 changed files with 22 additions and 0 deletions
22
NEWS.md
22
NEWS.md
|
@ -235,6 +235,28 @@ Excluding feature bug fixes.
|
||||||
a keyword splat to a method that accepts specific keywords
|
a keyword splat to a method that accepts specific keywords
|
||||||
does not allocate a hash.
|
does not allocate a hash.
|
||||||
|
|
||||||
|
* `super` is optimized when the same type of method is called in the previous call,
|
||||||
|
when it's not refinements or an attr reader or writer.
|
||||||
|
|
||||||
|
### JIT
|
||||||
|
|
||||||
|
* Native functions shared by multiple methods are deduplicated on JIT compaction.
|
||||||
|
|
||||||
|
* Decrease code size of hot paths by some optimizations and partitioning cold paths.
|
||||||
|
|
||||||
|
* Not only pure Ruby methods but also some C methods skip pushing a method frame.
|
||||||
|
|
||||||
|
* `Kernel#class`, `Integer#zero?`
|
||||||
|
|
||||||
|
* Always generate appropriate code for `==`, `nil?`, and `!` calls depending on
|
||||||
|
a receiver class.
|
||||||
|
|
||||||
|
* Optimize instance variable access in some core classes like Hash and their subclasses
|
||||||
|
|
||||||
|
* Eliminate VM register access on a method return
|
||||||
|
|
||||||
|
* Optimize C method call a little
|
||||||
|
|
||||||
## Miscellaneous changes
|
## Miscellaneous changes
|
||||||
|
|
||||||
* Methods using `ruby2_keywords` will no longer keep empty keyword
|
* Methods using `ruby2_keywords` will no longer keep empty keyword
|
||||||
|
|
Loading…
Reference in a new issue