summaryrefslogtreecommitdiff
path: root/ujit_asm.c
AgeCommit message (Collapse)Author
2021-10-20Yet Another Ruby JIT!Jose Narvaez
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
2021-10-20uJIT: support 64 bit operands for TEST. Use it to check for zeroAlan Wu
It's one byte shorter than `cmp reg64, 0`. To illustrate: ``` 48 83 f9 00 cmp rcx, 0x0 48 85 c9 test rcx, rcx ```
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 popMax Bernstein
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-20oopsAlan Wu
2021-10-20Fix pedantic returning voidAlan Wu
2021-10-20ujit_asm: if mmap() fails with the address hint, try withoutMike Dalessio
valgrind doesn't seem to support the address hint, and so the fallback to using NULL will allow valgrind to run.
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-20Add sign-extended mode for test() instructionMaxime 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-20Added int3() to x86 asmMaxime Chevalier-Boisvert
2021-10-20Anonymous union is a C11 feature unavailable to usAlan Wu
2021-10-20Explicitly convert function pointer to void pointerAlan Wu
2021-10-20_GNU_SOURCE has to be before includesAlan Wu
2021-10-20Get access to MAP_ANONYMOUS in pedantic compile modeAlan Wu
2021-10-20Small build fixesAlan Wu
2021-10-20Try to fix Windows buildAlan 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-20Added jmp_ptr() to ujit_asm.hMaxime Chevalier-Boisvert
2021-10-20Implemented side-exits to interpreter. setlocal_WC_0Maxime Chevalier-Boisvert
2021-10-20Added 8-bit and 16-bit general-purpose registers, more tests.Maxime Chevalier-Boisvert
2021-10-20Add location hint to code block mmap callMaxime 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