68722 Commits

Author SHA1 Message Date
Maxime Chevalier-Boisvert
dde69ab5c6 Fix ujit block hash table bug 2021-10-20 18:19:27 -04:00
Maxime Chevalier-Boisvert
136bf983be Fix bug with ujit code invalidation 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
868a6809e7 Add sign-extended mode for test() instruction 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
Maxime Chevalier-Boisvert
7be67a6c08 Implemented opt_plus in MicroJIT 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
ec42378196 Rename function and variable 2021-10-20 18:19:26 -04:00
Alan Wu
fa04478e9e MicroJIT: coalesce heap pointer check on self 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
4d964e2582 Implemented setinstancevariable 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
e2e70f69f3 Add comment wrt getivar and allocators 2021-10-20 18:19:26 -04:00
Aaron Patterson
be91995a5e Remove T_OBJECT runtime check
If the cached class uses the default allocator, then all instances
coming from the class should be T_OBJECT instances.  Meaning we can just
check the allocator function at compile time, then skip the runtime
T_OBJECT check
2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
e17053c720 Basic implementation of getivar for MicroJIT 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
1cd4c8b294 Deoptimize on side-exit 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
64072dd3a6 Rename variables for clarity 2021-10-20 18:19:26 -04:00
Alan Wu
b75169a440 Fix typo 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
6a9a516dc5 Print to stderr in ujit_utils.c 2021-10-20 18:19:26 -04:00
Alan Wu
50d8c3d443 MicroJIT: Count number of compiled instructions better 2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
ba92d40d9b Fix warning 2021-10-20 18:19:26 -04:00
Alan Wu
68b0f69a0d Make a bunch of functions compilation unit local 2021-10-20 18:19:26 -04:00
Alan Wu
5f9beb9b1b Include disassembly in MicroJIT scraper output 2021-10-20 18:19:26 -04:00
Alan Wu
188c54428c MicroJIT: avoid having to invalidate running output code 2021-10-20 18:19:26 -04:00
Alan Wu
9ce9f613b0 Update comment for ujit_compile_insn 2021-10-20 18:19:26 -04:00
Alan Wu
c378c7a7cb MicroJIT: generate less code for CFUNCs
Added UJIT_CHECK_MODE. Set to 1 to double check method dispatch in
generated code.

It's surprising to me that we need to watch both cc and cme. There might
be opportunities to simplify there.
2021-10-20 18:19:26 -04:00
Maxime Chevalier-Boisvert
0c52371c47 Don't create a stack frame for Hash#key? 2021-10-20 18:19:25 -04:00