Issue #14491 has been updated by sam.saffron (Sam Saffron).


### MJIT.pause use cases

1. Measure impact of --jit when all jitting is disabled

2. Disable MJIT in large application to avoid extra cost over time, for example in a big Rails app run MJIT for 10 minutes and then stop it from adding any new methods

### MJIT.trace use case

1. Measure how long it takes to JIT all methods (avg, median, max, total)

2. Measure how many methods got JITted

3. Measure slowest to JIT methods

4. Report on methods that can not be JITted

----------------------------------------
Feature #14491: MJIT needs internal debugging methods
https://bugs.ruby-lang.org/issues/14491#change-70445

* Author: sam.saffron (Sam Saffron)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
### Issue

Doing careful analysis of MJIT performance is very hard cause there is no way of instrumenting this in runtime 

### Proposal

1. Add `MJIT.enable`, `MJIT.disable`, `MJIT.pause` methods. 

   - `MJIT.pause` will continue using MJIT for execution but will no longer compile new fragments

2. Add `MJIT.trace` or similar that returns a block for key compile start / compile end operations. 
   
```
MJIT.trace do |klass, method, line, operation, duration|
end
```

This will allow simpler analysis of MJITs performance.



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>