1
0
Fork 0
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 compaction 818d6d3336
  * Avoid always inlining cold paths of ivar fcd2576290
  * Inline only fast path of rb_class_of b16a2aa938
  * Eliminate a call instruction on deopt 61b14bb32b
* Cold path partitioning
  * Mark method call slow paths as COLDFUNC 0e5a58b6bf
  * Mark vm_stackoverflow as NOINLINE COLDFUNC 9d71373c23
  * Create mjit_exec_slowpath and mark it as NOINLINE COLDFUNC 083a17a82a
* Primitive.attr! 'inline' / Integer#zero? 7561db8c00
  * Kernel#class 946e5cc668
  * (more to come...)
* Properly generate opt_send for cfunc cc 7982dc1dfd
* Optimize exivar access b736ea63bd
* Make JIT-ed leave leaf 151f8be40d
* Inline vm_call_cfunc b9d3ceee8f

VM:

* Enable fastpath on invokesuper 5c27681813
  * History: https://speakerdeck.com/k0kubun/ruby-3-samituto?slide=40 (in Japanese)
This commit is contained in:
Takashi Kokubun 2020-06-26 00:54:05 -07:00
parent 4949df498a
commit 200c5f4075
No known key found for this signature in database
GPG key ID: 6FFC433B12EE23DD

22
NEWS.md
View file

@ -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