summaryrefslogtreecommitdiff
path: root/yjit_asm.c
AgeCommit message (Collapse)Author
2021-10-20YJIT: Show GCC that the mmap probing loop runs at least onceAlan Wu
Fixes: ./src/yjit_asm.c:196:8: warning: 'mem_block' may be used uninitialized [-Wmaybe-uninitialized]
2021-10-20Fix non RUBY_DEBUG build warningsAlan Wu
On non RUBY_DEBUG builds, assert() compiles to nothing and the compiler warns about uninitialized variables in those code paths. Replace those asserts with rb_bug() to fix the warnings and do the assert in all builds. Since yjit_asm_tests.c compiles outside of Ruby, it needed a distinct version of rb_bug(). Also put YJIT_STATS check for function delcaration that is only defined in YJIT_STATS builds.
2021-10-20Put YJIT into a single compilation unitAlan Wu
For upstreaming, we want functions we export either prefixed with "rb_" or made static. Historically we haven't been following this rule, so we were "leaking" a lot of symbols as `make leak-globals` would tell us. This change unifies everything YJIT into a single compilation unit, yjit.o, and makes everything unprefixed static to pass `make leak-globals`. This manual "unified build" setup is similar to that of vm.o. Having everything in one compilation unit allows static functions to be visible across YJIT files and removes the need for declarations in headers in some cases. Unnecessary declarations were removed. Other changes of note: - switched to MJIT_SYMBOL_EXPORT_BEGIN which indicates stuff as being off limits for native extensions - the first include of each YJIT file is change to be "internal.h" - undefined MAP_STACK before explicitly redefining it since it collide's with a definition in system headers. Consider renaming?
2021-10-20style: line break before "else"Alan Wu
2021-10-20style: switch statements indentAlan Wu
Case labels get half an indent and the opening brace is on the same line as "switch".
2021-10-20style: align pointer "*" to the rightAlan Wu
2021-10-20Try to break the code page refactoring into smaller stepsMaxime Chevalier-Boisvert
2021-10-20Include errno message in mmap failure outputJean Boussier
It might help figure out why it is failing.
2021-10-20First pass at code page GC object.Maxime Chevalier-Boisvert
2021-10-20Code page allocation codeMaxime Chevalier-Boisvert
2021-10-20Implement basic encodings for xchgMaxime Chevalier-Boisvert
2021-10-20Fix encoding of test x86 instructionMaxime Chevalier-Boisvert
2021-10-20Try to alloc executable memory within rel32 range on Linux machines (#12)Maxime Chevalier-Boisvert
* Use INT32_MIN, INT32_MAX, etc. constants in yjit_asm.c * Print warning on stderr when code past rel32 jump range * Fix preprocessor snafu * Move rel32 warning into --yjit-stats * Try to allocate within rel32 offset on Linux machines * Update yjit_asm.c Co-authored-by: Alan Wu <XrXr@users.noreply.github.com> * On Linux, use sysconf to get the page size Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
2021-10-20Update yjit_asm.cMaxime Chevalier-Boisvert
2021-10-20Fill uninitialized memory with int3Maxime Chevalier-Boisvert
2021-10-20Fix GCC warningsAlan Wu
Mostly unused and uninitialized warnings here and there
2021-10-20Fix condition in cb_align_pos which should return early when alignedDylan Thacker-Smith
2021-10-20Yet Another Ruby JIT!Jose Narvaez
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.