summaryrefslogtreecommitdiff
path: root/yjit/src
AgeCommit message (Collapse)Author
2022-08-29Port bitwise not, gen_check_ints()Maxime Chevalier-Boisvert
2022-08-29Port gen_code_for_exit_from_stub()Maxime Chevalier-Boisvert
2022-08-29Add atomic counter increment instructionMaxime Chevalier-Boisvert
2022-08-29Get side exits working, get miniruby to boot with threshold=1Maxime Chevalier-Boisvert
2022-08-29LDADDAL, STUR, BL (https://github.com/Shopify/ruby/pull/299)Kevin Newton
* LDADDAL instruction * STUR * BL instruction * Remove num_bits from imm and uimm * Tests for imm_fits_bits and uimm_fits_bits * Reorder arguments to LDADDAL
2022-08-29MOVK, MOVZ, BR (https://github.com/Shopify/ruby/pull/296)Kevin Newton
* MOVK instruction * More tests for the A64 entrypoints * Finish testing entrypoints * MOVZ * BR instruction
2022-08-29Port over putnil, putobject, and gen_leave()Maxime Chevalier-Boisvert
* Remove x86-64 dependency from codegen.rs * Port over putnil and putobject * Port over gen_leave() * Complete port of gen_leave() * Fix bug in x86 instruction splitting
2022-08-29Port gen_leave_exit(), add support for labels to backendMaxime Chevalier-Boisvert
2022-08-29Add cpush and cpop IR instructionsMaxime Chevalier-Boisvert
2022-08-29Add conditional jumpsMaxime Chevalier-Boisvert
2022-08-29LDUR (https://github.com/Shopify/ruby/pull/295)Kevin Newton
* LDUR * Fix up immediate masking * Consume operands directly * Consistency and cleanup * More consistency and entrypoints * Cleaner syntax for masks * Cleaner shifting for encodings
2022-08-29Map comments in backendMaxime Chevalier-Boisvert
2022-08-29First pass at porting gen_entry_prologue()Maxime Chevalier-Boisvert
2022-08-29Have Assembler::compile() return a list of GC offsetsMaxime Chevalier-Boisvert
2022-08-29RET A64 instructions (https://github.com/Shopify/ruby/pull/294)Kevin Newton
2022-08-29Remove x86_64 dependency in core.rsMaxime Chevalier-Boisvert
2022-08-29Progress on codegen.rs portMaxime Chevalier-Boisvert
2022-08-29* Arm64 Beginnings (https://github.com/Shopify/ruby/pull/291)Maxime Chevalier-Boisvert
* Initial setup for aarch64 * ADDS and SUBS * ADD and SUB for immediates * Revert moved code * Documentation * Rename Arm64* to A64* * Comments on shift types * Share sig_imm_size and unsig_imm_size
2022-08-29Add test for lea and ret. Fix codegen for lea and ret.Maxime Chevalier-Boisvert
2022-08-29Change codegen.rs to use backend Assembler directlyMaxime Chevalier-Boisvert
2022-08-29Implement gc offset logicMaxime Chevalier-Boisvert
2022-08-29Load GC Value operands into registersMaxime Chevalier-Boisvert
2022-08-29Add CCall IR insn, implement gen_swap()Maxime Chevalier-Boisvert
2022-08-29Add gen_dupnMaxime Chevalier-Boisvert
2022-08-29Add test with register reuseMaxime Chevalier-Boisvert
2022-08-29Fix issue with load, gen_dupMaxime Chevalier-Boisvert
2022-08-29Implement target-specific insn splitting with Kevin. Add tests.Maxime Chevalier-Boisvert
2022-08-29Make assembler methods public, sketch gen_dup with new backendMaxime Chevalier-Boisvert
2022-08-29Fix bug with asm.comment()Maxime Chevalier-Boisvert
2022-08-29Bias register allocator to reuse first operandMaxime Chevalier-Boisvert
2022-08-29Add dbg!() for Assembler. Fix regalloc issue.Maxime Chevalier-Boisvert
2022-08-29Function to map from Opnd => X86OpndMaxime Chevalier-Boisvert
2022-08-29Start work on platform-specific codegenMaxime Chevalier-Boisvert
2022-08-29Split insns (https://github.com/Shopify/ruby/pull/290)Kevin Newton
* Split instructions if necessary * Add a reusable transform_insns function * Split out comments labels from transform_insns * Refactor alloc_regs to use transform_insns
2022-08-29IR register allocationKevin Newton
PR: https://github.com/Shopify/ruby/pull/289
2022-08-29Removed String opnd so that we can derive Copy for OpndMaxime Chevalier-Boisvert
2022-08-29Complete sketch for guard_object_is_heapMaxime Chevalier-Boisvert
2022-08-29Change push insn macrosMaxime Chevalier-Boisvert
2022-08-29Switch IR to use Option<Target>Maxime Chevalier-Boisvert
2022-08-29Add macro to define opsMaxime Chevalier-Boisvert
2022-08-29Progress on IR sketchMaxime Chevalier-Boisvert
2022-08-29WIP backend IR sketchMaxime Chevalier-Boisvert
2022-08-24add --yjit-dump-iseqs param (https://github.com/Shopify/ruby/pull/332)Noah Gibbs
Notes: Merged: https://github.com/ruby/ruby/pull/6278
2022-08-19Rename mjit_exec to jit_exec (#6262)Takashi Kokubun
* Rename mjit_exec to jit_exec * Rename mjit_exec_slowpath to mjit_check_iseq * Remove mjit_exec references from comments Notes: Merged-By: k0kubun <takashikkbn@gmail.com>
2022-08-09Regen YJIT bindingsJeremy Evans
Notes: Merged: https://github.com/ruby/ruby/pull/6158
2022-08-04YJIT: Allow str-concat arg to be any string subtype, not just rb_cString (#6205)Noah Gibbs
Allow str-concat arg to be any string subtype, not just rb_cString Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-08-04YJIT: Add known_* helpers for Type (#6208)John Hawthorn
* YJIT: Add known_* helpers for Type This adds a few helpers to Type which all return Options representing what is known, from a Ruby perspective, about the type. This includes: * known_class_of: If known, the class represented by this type * known_value_type: If known, the T_ value type * known_exact_value: If known, the exact VALUE represented by this type (currently this is only available for true/false/nil) * known_truthy: If known, whether or not this value evaluates as true (not false or nil) The goal of this is to abstract away the specifics of the mappings between types wherever possible from the codegen. For example previously by introducing Type::CString as a more specific version of Type::TString, uses of Type::TString in codegen needed to be updated to check either case. Now by using known_value_type, at least in theory we can introduce new types with minimal (if any) codegen changes. I think rust's Option type allows us to represent this uncertainty fairly well, and should help avoid mistakes, and the matching using this turned out pretty cleanly. * YJIT: Use known_value_type for checktype * YJIT: Use known_value_type for T_STRING check * YJIT: Use known_class_of in guard_known_klass * YJIT: Use known truthyness in jit_rb_obj_not * YJIT: Rename known_class_of => known_class Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-07-28YJIT: Teach getblockparamproxy to handle the no-block case without exiting ↵Matthew Draper
(#6191) Teach getblockparamproxy to handle the no-block case without exiting Co-authored-by: John Hawthorn <john@hawthorn.email> Co-authored-by: John Hawthorn <john@hawthorn.email> Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-07-20YJIT: Skip setlocal WB check for immediate values (#6122)John Hawthorn
Write barriers may be required when VM_ENV_FLAG_WB_REQUIRED is set, however write barriers only affect heap objects being written. If we know an immediate value is being written we can skip this check. Notes: Merged-By: maximecb <maximecb@ruby-lang.org>
2022-07-18Extract vm_ic_entry API to mimic vm_cc behaviorJemma Issroff
Notes: Merged: https://github.com/ruby/ruby/pull/5978