summaryrefslogtreecommitdiff
path: root/ujit_compile.c
AgeCommit message (Collapse)Author
2021-10-20Refactor uJIT code into more files for readabilityMaxime Chevalier-Boisvert
2021-10-20Implemented opt_plus in MicroJITMaxime Chevalier-Boisvert
2021-10-20Rename function and variableMaxime Chevalier-Boisvert
2021-10-20MicroJIT: coalesce heap pointer check on selfAlan Wu
2021-10-20Implemented setinstancevariableMaxime Chevalier-Boisvert
2021-10-20Add comment wrt getivar and allocatorsMaxime Chevalier-Boisvert
2021-10-20Remove T_OBJECT runtime checkAaron Patterson
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-20Basic implementation of getivar for MicroJITMaxime Chevalier-Boisvert
2021-10-20Deoptimize on side-exitMaxime Chevalier-Boisvert
2021-10-20Rename variables for clarityMaxime Chevalier-Boisvert
2021-10-20MicroJIT: Count number of compiled instructions betterAlan Wu
2021-10-20Make a bunch of functions compilation unit localAlan Wu
2021-10-20Include disassembly in MicroJIT scraper outputAlan Wu
2021-10-20MicroJIT: avoid having to invalidate running output codeAlan Wu
2021-10-20Update comment for `ujit_compile_insn`Alan Wu
2021-10-20MicroJIT: generate less code for CFUNCsAlan Wu
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-20Don't create a stack frame for Hash#key?Maxime Chevalier-Boisvert
2021-10-20Fix GCC warningMaxime Chevalier-Boisvert
2021-10-20Added stack overflow check to MicroJIT CFUNC callsMaxime Chevalier-Boisvert
2021-10-20Added RUBY_VM_CHECK_INTS to CFUNC callsMaxime Chevalier-Boisvert
2021-10-20Fix compiler warningsMaxime Chevalier-Boisvert
2021-10-20Implemented mechanism for rel32 callMaxime Chevalier-Boisvert
2021-10-20Fixed two CFUNC call bugs thanks to Alan & Aaron!Maxime Chevalier-Boisvert
2021-10-20MicroJIT: Read pointer to call cache from call dataAlan Wu
The call cache changes when the call site becomes polymophic and can result in the generated code falsely assuming cd->cc->cme is not NULL. Here is a crasher: def body(thing) thing.strip end str = "" 10.times { body(str) } body(0) rescue p 'not found' body(str)
2021-10-20Fix MicroJIT argument copying for CFUNC callsMaxime Chevalier-Boisvert
2021-10-20Fixed two issues with MicroJIT CFUNC callsMaxime Chevalier-Boisvert
2021-10-20First pass at CFUNC calls complete. Not yet functional.Maxime Chevalier-Boisvert
2021-10-20Refactor ujit, define named register constants, code cleanupMaxime Chevalier-Boisvert
2021-10-20MicroJIT: switch to example that passes ec as second argumentAlan Wu
opt_send_without_block needs it. Ideally we would use this example only when an instruction in the compiled sequence needs `ec`. We can worry about that later.
2021-10-20MicroJIT: Use R9 in generated code for Ruby stack pointerAlan Wu
2021-10-20Commit before merge.Maxime Chevalier-Boisvert
2021-10-20Updated C function call sketchMaxime Chevalier-Boisvert
2021-10-20Remove comment. Commit before rebase.Maxime Chevalier-Boisvert
2021-10-20MicroJIT: Don't compile trace instructionsAlan Wu
2021-10-20Fixed is-object check in opt_send_without_blockMaxime Chevalier-Boisvert
2021-10-20Check receiver type and klass in MicroJITMaxime Chevalier-Boisvert
2021-10-20Take the VM lock when recompilingAlan Wu
2021-10-20MicroJIT: compile after ten callsAlan Wu
2021-10-20Commit before mergeMaxime Chevalier-Boisvert
2021-10-20Started refactoring opt_send_without_block with codegen-time checksMaxime Chevalier-Boisvert
2021-10-20Add system to implement codegen preconditions in JITMaxime Chevalier-Boisvert
2021-10-20Added print_ptr() util function for debuggingMaxime Chevalier-Boisvert
2021-10-20Bump executable memory allocation sizeAlan Wu
We run out it on CI in test-all.
2021-10-20Try to fix Windows buildAlan Wu
2021-10-20Fix MicroJIT's putobject against GC copmactionAlan Wu
2021-10-20Try to fix Windows buildAlan Wu
2021-10-20Compile with MicroJIT disabled when scrape failsAlan Wu
This is just so we can build successfully on -O0 and other cases that are not supported by the code scraper.
2021-10-20Implemented opt_minus in MicroJITMaxime Chevalier-Boisvert
2021-10-20Added member_opnd() convenience macroMaxime Chevalier-Boisvert
2021-10-20Partially implement opt_send_without_blockAaron Patterson
It will read and check the inline cache now, but we need to actually call the method. Co-Authored-By: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>