Implement greedy versioning. Refactor versioning logic. (#10)

* Implement eager versioning. Refactor versioning logic.

* Add --version-limit and --greedy-versioning command-line args
This commit is contained in:
Maxime Chevalier-Boisvert 2021-04-24 00:16:48 -04:00 committed by Alan Wu
parent 4c7afa64b4
commit 96f4f918b0
7 changed files with 90 additions and 45 deletions

8
yjit.h
View file

@ -30,12 +30,20 @@ typedef struct rb_iseq_struct rb_iseq_t;
#endif
struct rb_yjit_options {
// Enable compilation with YJIT
bool yjit_enabled;
// Number of method calls after which to start generating code
// Threshold==1 means compile on first execution
unsigned call_threshold;
// Generate versions greedily until the limit is hit
bool greedy_versioning;
// Maximum number of versions per block
// 1 means always create generic versions
unsigned version_limit;
// Capture and print out stats
bool gen_stats;
};