diff options
author | Takashi Kokubun <takashikkbn@gmail.com> | 2020-12-16 06:24:07 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-16 06:24:07 -0800 |
commit | 53babf35ef5b643774636550ea23851e2607e076 (patch) | |
tree | a18e660dd7f39718188fb161fd453c6c39097a14 /mjit.c | |
parent | bfb374be2342d7822cd37a1b100cb1715f85ca74 (diff) |
Inline getconstant on JIT (#3906)
* Inline getconstant on JIT
* Support USE_MJIT=0
Notes
Notes:
Merged-By: k0kubun <takashikkbn@gmail.com>
Diffstat (limited to 'mjit.c')
-rw-r--r-- | mjit.c | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -82,6 +82,24 @@ mjit_gc_exit_hook(void) CRITICAL_SECTION_FINISH(4, "mjit_gc_exit_hook"); } +// Lock setinlinecache +void +rb_mjit_before_vm_ic_update(void) +{ + if (!mjit_enabled) + return; + CRITICAL_SECTION_START(3, "before vm_ic_update"); +} + +// Unlock setinlinecache +void +rb_mjit_after_vm_ic_update(void) +{ + if (!mjit_enabled) + return; + CRITICAL_SECTION_FINISH(3, "after vm_ic_update"); +} + // Deal with ISeq movement from compactor void mjit_update_references(const rb_iseq_t *iseq) @@ -378,6 +396,14 @@ rb_mjit_recompile_inlining(const rb_iseq_t *iseq) mjit_recompile(iseq); } +// Recompile iseq, disabling getconstant inlining +void +rb_mjit_recompile_const(const rb_iseq_t *iseq) +{ + rb_mjit_iseq_compile_info(iseq->body)->disable_const_cache = true; + mjit_recompile(iseq); +} + extern VALUE ruby_archlibdir_path, ruby_prefix_path; // Initialize header_file, pch_file, libruby_pathflag. Return true on success. |