summaryrefslogtreecommitdiff
path: root/ujit_asm.h
AgeCommit message (Collapse)Author
2021-10-20Yet Another Ruby JIT!Jose Narvaez
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
2021-10-20Runtime counters for bailing from opt_send_without_blockAlan Wu
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.
2021-10-20Support memory operands to pushMax Bernstein
2021-10-20Fix jmp encoding. Rename conditional jumps jxx() to jxx_label()Maxime Chevalier-Boisvert
2021-10-20Tally instructions when taking side exists for --ujit-statsAlan Wu
shopify/ruby#29 Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com>
2021-10-20Introduce version_t struct. Will be needed for code invalidation.Maxime Chevalier-Boisvert
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-20Added RUBY_VM_CHECK_INTS to CFUNC callsMaxime Chevalier-Boisvert
2021-10-20Implemented mechanism for rel32 callMaxime Chevalier-Boisvert
2021-10-20First pass at CFUNC calls complete. Not yet functional.Maxime Chevalier-Boisvert
2021-10-20Added int3() to x86 asmMaxime Chevalier-Boisvert
2021-10-20Anonymous union is a C11 feature unavailable to usAlan Wu
2021-10-20Respect redefinition in MicroJIT's opt_minusAlan Wu
2021-10-20Removed inc/dec instructions because usage not recommended.Maxime Chevalier-Boisvert
2021-10-20Move registers into header and make them staticAlan Wu
We were leaking these as global symbols and were having linking errors with Clang 12.
2021-10-20Implemented opt_minus in MicroJITMaxime Chevalier-Boisvert
2021-10-20Comment out jnl to fix Linux build againAlan Wu
2021-10-20Added member_opnd() convenience macroMaxime Chevalier-Boisvert
2021-10-20Added jmp_ptr() to ujit_asm.hMaxime Chevalier-Boisvert
2021-10-20Implemented side-exits to interpreter. setlocal_WC_0Maxime Chevalier-Boisvert
2021-10-20Comment out jnl to avoid conflict with system headerAlan Wu
This is specific to Linux
2021-10-20Added 8-bit and 16-bit general-purpose registers, more tests.Maxime Chevalier-Boisvert
2021-10-20Added method to align code block write positionMaxime Chevalier-Boisvert
2021-10-20Port print_int, movsx. Implement putself.Maxime Chevalier-Boisvert
2021-10-20Add function to print strings from generated codeMaxime Chevalier-Boisvert
2021-10-20Compiling getlocal_WC_0Maxime Chevalier-Boisvert
2021-10-20Ported xor and cmovcc instructionsMaxime Chevalier-Boisvert
2021-10-20Ported neg, and, or instructionsMaxime Chevalier-Boisvert
2021-10-20Remove PC argument from ujit instructionsMaxime Chevalier-Boisvert
2021-10-20Small refactorings in ujit_compile.cMaxime Chevalier-Boisvert
2021-10-20Added cmp, not. Generate code for nop instruction.Maxime Chevalier-Boisvert
2021-10-20Ported inc/dec instructionsMaxime Chevalier-Boisvert
2021-10-20Removed native_pop_code, ported call with labelMaxime Chevalier-Boisvert
2021-10-20Ported label linking and conditional jumpsMaxime Chevalier-Boisvert
2021-10-20Added shift instructionsMaxime Chevalier-Boisvert
2021-10-20Added sub instruction, 32-bit registers, more testsMaxime Chevalier-Boisvert
2021-10-20Added jmp R/M instructionMaxime Chevalier-Boisvert
2021-10-20add and mov instruction encoding ported and testedMaxime Chevalier-Boisvert
2021-10-20Progress on x86 assembler. Encode a few simple instructions.Maxime Chevalier-Boisvert
2021-10-20Started porting instruction encodingMaxime Chevalier-Boisvert
2021-10-20Progress on porting x86 assembler for MicroJITMaxime Chevalier-Boisvert