summaryrefslogtreecommitdiff
path: root/ujit_iface.h
Commit message (Collapse)AuthorAgeFilesLines
* uJIT: Add exit counters for leave and refactor stats printout codeAlan Wu2021-10-201-0/+3
| | | | | | | | | | | | Filter out counters that are zero and make it easier to have multiple printout groups. On `railsbench`: ``` opt_send_without_block exit reasons: se_finish_frame 184809 (100.0%) ```
* uJIT: add guards for protected opt_send_without_block callsAlan Wu2021-10-201-1/+1
| | | | | These account for about 12% of the time when we were bailing from calls in railsbench. `ratio_in_ujit` went up 0.1% with this change.
* Runtime counters for bailing from opt_send_without_blockAlan Wu2021-10-201-1/+41
| | | | | | This allows counting things in generated code such as side exits or different reasons for failing to compile. Runtime counters are exposed to Ruby as `UJIT.runtime_stats` for ease of reporting and analysis.
* Update ec->cfp->pc when hitting a stub.Maxime Chevalier-Boisvert2021-10-201-0/+1
|
* uJIT: Implement opt_getinlinecacheAlan Wu2021-10-201-0/+7
| | | | | | | | | | | | | | | | | * ujit: implement opt_getinlinecache Aggressively bet that writes to constants don't happen and invalidate all opt_getinlinecache blocks on any and all constant writes. Use alignment padding on block_t to track this assumption. No change to sizeof(block_t). * Fix compile warnings when not RUBY_DEBUG * Fix reversed condition * Switch to st_table to keep track of assumptions Co-authored-by: Aaron Patterson <aaron.patterson@gmail.com> Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
* Fix compiled iseq count statMaxime Chevalier-Boisvert2021-10-201-0/+1
|
* Tie lifetime of uJIT blocks to iseqsAlan Wu2021-10-201-0/+1
| | | | | | | | | | | | | | | | | | | | * Tie lifetime of uJIT blocks to iseqs Blocks weren't being freed when iseqs are collected. * Add rb_dary. Use it for method dependency table * Keep track of blocks per iseq Remove global version_tbl * Block version bookkeeping fix * dary -> darray * free ujit_blocks * comment about size of ujit_blocks
* Tally instructions when taking side exists for --ujit-statsAlan Wu2021-10-201-0/+2
| | | | | | shopify/ruby#29 Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>
* Implement --ujit-stats and instructoin countingAlan Wu2021-10-201-0/+3
| | | | | | VM and ujit instruction counting in debug builds. shopify/ruby#19
* End current block after opt_send_without_blockMaxime Chevalier-Boisvert2021-10-201-0/+4
|
* Fix ujit cc/cme invalidation code for opt_send_without_blockMaxime Chevalier-Boisvert2021-10-201-1/+1
|
* Move code into ujit_iface.cMaxime Chevalier-Boisvert2021-10-201-0/+2
|
* Refactor uJIT code into more files for readabilityMaxime Chevalier-Boisvert2021-10-201-0/+27