mirror of
https://github.com/asmjit/asmjit.git
synced 2025-12-18 04:54:36 +03:00
f5df7a2b1bd942fc1169d0f563dacbe34e6a11ac
During bin-packing, a single function nonOverlappingUnionOf() is called many times to calculate a union of one live ranges with another. Before this change it used ZoneVector::reserve() to make sure that there is enough space for the union, however, in some cases this is not ideal in case that the union grows every time the function is called. In that case it's reallocating the vector many times, which affects performance. Instead of calling reserve(), a new function growingReserve() was added to tell the vector to grow when it needs to reallocate. In addition, this change fixes some documentation regarding the use of JitAllocator (Explicit Code Relocation section in core.h).
AsmJit
AsmJit is a lightweight library for machine code generation written in C++ language.
- Official Home Page (asmjit.com)
- Official Repository (asmjit/asmjit)
- Public Chat Channel
- Zlib License
See asmjit.com page for more details, examples, and documentation.
Documentation
Contributing
- See CONTRIBUTING page for more details
Breaking Changes
Breaking the API is sometimes inevitable, what to do?
- See Breaking Changes Guide, which is now part of AsmJit documentation
- See asmjit tests, they always compile and provide implementation of many use-cases:
- asmjit_test_emitters.cpp - Tests that demonstrate the purpose of emitters
- asmjit_test_assembler_x86.cpp - Tests targeting AsmJit's Assembler (x86/x64)
- asmjit_test_compiler_x86.cpp - Tests targeting AsmJit's Compiler (x86/x64)
- asmjit_test_instinfo.cpp - Tests that query instruction information
- asmjit_test_x86_sections.cpp - Multiple sections test.
- Visit our Gitter Chat if you need a quick help
Project Organization
/- Project root- src - Source code
- asmjit - Source code and headers (always point include path in here)
- core - Core API, backend independent except relocations
- arm - ARM specific API, used only by ARM and AArch64 backends
- x86 - X86 specific API, used only by X86 and X64 backends
- asmjit - Source code and headers (always point include path in here)
- test - Unit and integration tests (don't embed in your project)
- tools - Tools used for configuring, documenting, and generating files
- src - Source code
Ports
- 32-bit ARM/Thumb port (work in progress)
- RISC-V port (not in progress, help welcome)
Support
- AsmJit project has both community and commercial support, see AsmJit's Support Page
- You can help the development and maintenance through Petr Kobalicek's GitHub sponsors Profile
Notable Donors List:
Authors & Maintainers
- Petr Kobalicek kobalicek.petr@gmail.com
Languages
C++
93.2%
JavaScript
3.3%
C
3.2%
CMake
0.3%