Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.    By clickin

ruby / ruby Public

submited by
Style Pass
2021-10-21 00:00:06

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

This PR introduces YJIT, a just-in-time compiler built using a Lazy Basic Block Versioning (LBBV) compiler architecture. For more details about the technique, please refer to Maxime’s published paper and recorded talks:

YJIT currently provides average speedups of 23% over the CRuby interpreter on realistic benchmarks, and near-instant warm-up time. Plans are to include YJIT in the Ruby 3.1 preview release so that more users can test it out and benefit from potential performance gains.

YJIT integrates closely with the interpreter and some core runtime routines such as rb_obj_is_kind_of() and rb_str_eql_internal(). YJIT also introduces a number of callbacks (see yjit.h) so that it can be notified of certain events, such as constants or methods being redefined. These changes are necessary so that YJIT can deoptimize code. These callbacks could potentially be useful for MJIT as well.

Leave a Comment
Related Posts