mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Add NEWS entries about JIT in Jul ~ Dec
* Instance variables * Merge ivar guards on JITa69dd699ee
e4f7eee009
* Prefer RB_OBJ_FROZEN_RAW5611066e03
* Skip checking ROBJECT_EMBED81a8d1cf09
* Method inlining * Mark some Integer methods as inline0703e01471
* Allow inlining Integer#-@ and #~dbb4f19969
* Inline builtin struct aref167d139487
* Make Kernel#then, #yield_self, #frozen? builtin24fa37d87a
* (For future) Rewrite Kernel#tap with Rubyf3a0d7a203
* Other optimizations * Inline constant references53babf35ef
* Lazily move PC with RUBY_VM_CHECK_INTS5d74894f2b
* Cache access to reg_cfp->self on JITd409837729
* JIT compaction * Shrink the blocking region for compile_compact_jit_codeed8e552d4d
* Stop leaving .c files for JIT compaction in /tmpfa1250a506
* GC of JIT-ed code * Run unload_units in the JIT worker thread16dab6b692
* Avoid unloading units which have enough total_callsd80226e7bd
* Throttle unload_units122cd35939
* Throttle JIT compaction096f54428d
* Compilation speed * Eliminate IVC sync between JIT and Ruby threads0960f56a1d
* Lazily move units from active_units to stale_units5d8f227d0e
Please see200c5f4075
for other improvements in Jan ~ Jun.
This commit is contained in:
parent
8aa299de24
commit
176b75747c
1 changed files with 38 additions and 9 deletions
47
NEWS.md
47
NEWS.md
|
@ -630,22 +630,51 @@ Excluding feature bug fixes.
|
|||
|
||||
### JIT
|
||||
|
||||
* Native functions shared by multiple methods are deduplicated on JIT compaction.
|
||||
* Performance improvements of JIT-ed code
|
||||
|
||||
* Decrease code size of hot paths by some optimizations and partitioning cold paths.
|
||||
* Microarchitectural optimizations
|
||||
|
||||
* Not only pure Ruby methods but also some C methods skip pushing a method frame.
|
||||
* Native functions shared by multiple methods are deduplicated on JIT compaction.
|
||||
|
||||
* `Kernel#class`, `Integer#zero?`
|
||||
* Decrease code size of hot paths by some optimizations and partitioning cold paths.
|
||||
|
||||
* Always generate appropriate code for `==`, `nil?`, and `!` calls depending on
|
||||
a receiver class.
|
||||
* Instance variables
|
||||
|
||||
* Optimize instance variable access in some core classes like Hash and their subclasses.
|
||||
* Eliminate some redundant checks.
|
||||
|
||||
* Eliminate VM register access on a method return.
|
||||
* Skip checking a class and a object multiple times in a method when possible.
|
||||
|
||||
* Optimize C method calls a little.
|
||||
* Optimize accesses in some core classes like Hash and their subclasses.
|
||||
|
||||
* Method inlining support for some C methods
|
||||
|
||||
* `Kernel`: `#class`, `#frozen?`
|
||||
|
||||
* `Integer`: `#-@`, `#~`, `#abs`, `#bit_length`, `#even?`, `#integer?`, `#magnitude`,
|
||||
`#odd?`, `#ord`, `#to_i`, `#to_int`, `#zero?`
|
||||
|
||||
* `Struct`: reader methods for 10th or later members
|
||||
|
||||
* Constant references are inlined.
|
||||
|
||||
* Always generate appropriate code for `==`, `nil?`, and `!` calls depending on
|
||||
a receiver class.
|
||||
|
||||
* Reduce the number of VM register accesses on branches and method returns.
|
||||
|
||||
* Optimize C method calls a little.
|
||||
|
||||
* Compilation process improvements
|
||||
|
||||
* It does not keep temporary files in /tmp anymore.
|
||||
|
||||
* Throttle GC and compaction of JIT-ed code.
|
||||
|
||||
* Avoid GC-ing JIT-ed code when not necessary.
|
||||
|
||||
* GC-ing JIT-ed code is executed in a background thread.
|
||||
|
||||
* Reduce the number of locks between Ruby and JIT threads.
|
||||
|
||||
## Static analysis
|
||||
|
||||
|
|
Loading…
Reference in a new issue