Commit graph

47 commits

Author SHA1 Message Date
Alan Wu
56ce40e8be Only compile iseqs with simple parameters. Enable get_local_wc1 2021-10-20 18:19:28 -04:00
Maxime Chevalier-Boisvert
e85e0e2fa9 Commit WIP setlocal_WC_1 implementation 2021-10-20 18:19:28 -04:00
Maxime Chevalier-Boisvert
439e1089b7 Implement opt_le, opt_ge in ujit 2021-10-20 18:19:28 -04:00
Maxime Chevalier-Boisvert
020f745041 Fix overflow check in ujit 2021-10-20 18:19:28 -04:00
Maxime Chevalier-Boisvert
6a29131439 Implement Ruby-to-Ruby calls in ujit (opt_send_without_block) 2021-10-20 18:19:28 -04:00
Maxime Chevalier-Boisvert
53bd13edf3 Implement opt_and in ujit 2021-10-20 18:19:28 -04:00
Maxime Chevalier-Boisvert
2e561ff255 Restore interpreter regs in ujit hook. Implement leave bytecode. 2021-10-20 18:19:28 -04:00
Alan Wu
3c7251b41b Tally instructions when taking side exists for --ujit-stats
shopify/ruby#29

Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>
2021-10-20 18:19:28 -04:00
Maxime Chevalier-Boisvert
81c57ab9b8 Reduce size of ctx_t 2021-10-20 18:19:28 -04:00
Maxime Chevalier-Boisvert
a14015e9b5 Report unknown --ujit-* options 2021-10-20 18:19:28 -04:00
Alan Wu
b7f93e81df Implement --ujit-stats and instructoin counting
VM and ujit instruction counting in debug builds.

shopify/ruby#19
2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
36232a48a6 Set T_FIXNUM type tags in opt_plus, opt_minus 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
c61238a276 Optimize putobject codegen 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
e7909467df Eliminate type checks in opt_lt 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
63e85de33a Fix bug, block added with wrong blockid. 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
dea4db16c0 Add support for multiple versions per block 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
0a42428098 Implement branchif in ujit 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
0a6e824ad2 Prototype type-specialization for temp values 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
cf4021ca78 Take VM lock in branch_stub_hit(), fix ractor deadlock. 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
37ad374607 Added gen_direct_jump() for unary branches 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
187435c117 Complete refactoring to eliminate recursion in ujit's compilation 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
02a9700475 End current block after opt_send_without_block 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
79331368b9 Added block end index 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
59eb98fbaa Fix ujit cc/cme invalidation code for opt_send_without_block 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
4a57107696 Sketch code to invalidate basic blocks. Rename version_t to block_t. 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
92e9b24586 Keep track of incoming branches in ujit 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
2cf32e5505 Refactor ujit logic for generating iseq entry points 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
ef08af9376 Progress on code invalidation 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
3a74011ff8 Introduce version_t struct. Will be needed for code invalidation. 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
a251059070 Fix hash map key issue 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
7e60ce357b Fix uint cast bug caught by Alan 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
2cc0db12fe Refactorings in ujit. Implement Ruby jump instruction. 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
1744c15578 Avoid generating redundant interpreter exit code after branches 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
97cffcf79a Fix sneaky ujit side-exit bug. Reduce ujit call threshold to 1. 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
542f2ba09e Use a versioning context when compiling blocks 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
df16bf97ec Split out context object into jitstate_t and ctx_t 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
5e39d83fbd Split out compile_entry() from compile_block() 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
4592ef9d76 Fixed one bug in compile_block. 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
e9344ae408 Stub logic working for fib test, but still crashing in other cases 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
7d7e58d352 Implement branch stub logic 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
40b70ef7c7 WIP branch generation code 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
bd7cc9ed98 Thread insn_idx through context object 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
8ae354e9be Implemented opt_lt. Prelude to branch instructions. 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
20f5b7426e Start implementing BBV primitives 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
f7717b1d46 Start refactoring JIT engine 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
f761e9ee64 Move code into ujit_iface.c 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
e4c65ec49c Refactor uJIT code into more files for readability 2021-10-20 18:19:26 -04:00
Renamed from ujit_compile.c (Browse further)