John Hawthorn
6c80150d40
Introduce ctx_{get,set}_opnd_mapping
2021-10-20 18:19:38 -04:00
John Hawthorn
4ea69e5c0b
Rename to ctx_upgrade_opnd_type
2021-10-20 18:19:38 -04:00
Aaron Patterson
84a1e04e58
Change register definitions to match the entry point calling convention
...
The JIT entry point passes the CFP as RSI and the EC as RDI. Lets match
that so we don't have to shuffle registers around.
2021-10-20 18:19:38 -04:00
Maxime Chevalier-Boisvert
350b686a2c
First pass at code page GC object.
2021-10-20 18:19:37 -04:00
John Hawthorn
9e0a56fb24
Add FLONUM detection
2021-10-20 18:19:37 -04:00
John Hawthorn
dfc5e5e35b
Support guards against symbols and integers
...
This adds guards
2021-10-20 18:19:37 -04:00
John Hawthorn
ea33b0a9ba
Add concatstrings to yjit codegen ( #58 )
...
* Add ETYPE_TRUE and ETYPE_FALSE
* Implement checktype
* Implement concatstrings
* Update deps
2021-10-20 18:19:35 -04:00
John Hawthorn
764740c661
Merge pull request #50 from jhawthorn/detect_type
...
Detect types from putobject and getinlinecache
2021-10-20 18:19:35 -04:00
Alan Wu
7eef8f09c0
Implement getblockparamproxy
...
* Implement getblockparamproxy
* Parallel runner: wait for timeout thread to terminate after killing
Or else the leak cheaker could sees the thread as running and cause test
failures in test-tool.
* Add a comment, use jne
* Comment about where 0x3 comes from
2021-10-20 18:19:35 -04:00
Maxime Chevalier-Boisvert
0cc73ca2a9
Malloc branch entries ( #112 )
...
* Malloc branch entries
* Add ASM comment for stack overflow check
* WIP
* Fix branch GC code. Add rb_darray_remove_unordered().
* Fix block end_pos after branch rewriting. Remove dst_patched bits.
2021-10-20 18:19:33 -04:00
Maxime Chevalier-Boisvert
6164274c76
Re-enable local type tracking, until first call
2021-10-20 18:19:33 -04:00
Maxime Chevalier-Boisvert
7ee3636f61
Remove unnamed enums because MSVC sux
2021-10-20 18:19:33 -04:00
Maxime Chevalier-Boisvert
f6e3f75c2b
Introduce concept of YJIT instruction operands
2021-10-20 18:19:33 -04:00
Alan Wu
b626dd7211
YJIT: Fancier opt_getinlinecache
...
Make sure `opt_getinlinecache` is in a block all on its own, and
invalidate it from the interpreter when `opt_setinlinecache`.
It will recompile with a filled cache the second time around.
This lets YJIT runs well when the IC for constant is cold.
2021-10-20 18:19:33 -04:00
Maxime Chevalier-Boisvert
42af04efee
Add flag bits to avoid compiling stubs multiple times.
...
Fixes bug involving ractors and branch stubs.
2021-10-20 18:19:33 -04:00
Maxime Chevalier-Boisvert
cbbae12a96
Keep track of local types in the context
2021-10-20 18:19:33 -04:00
Maxime Chevalier-Boisvert
e98d2c5ec8
Add ctcx_stack_push_local()
2021-10-20 18:19:33 -04:00
Alan Wu
21a6345023
YJIT: adjust branch shape properly when target already exists
...
The old code decides branch->shape based on the write position of the
native code block, which is unsound in case the block already exists
and no new code is written to the write position.
Make this decision with the start address of the target block instead.
Also handle when the branch becomes smaller after patching.
2021-10-20 18:19:32 -04:00
Maxime Chevalier-Boisvert
c299112fd7
use ctx_stack_push_self()
2021-10-20 18:19:32 -04:00
Maxime Chevalier-Boisvert
aee44e4f2b
Part 1 of improved type tracking logic
2021-10-20 18:19:32 -04:00
Maxime Chevalier-Boisvert
e47dd8bb88
WIP
2021-10-20 18:19:32 -04:00
Maxime Chevalier-Boisvert
c5f3126428
Commit WIP
2021-10-20 18:19:32 -04:00
Maxime Chevalier-Boisvert
ac1aa84c1a
First sketch at temp type mapping
2021-10-20 18:19:32 -04:00
Alan Wu
ec1cbbb07d
Get rid of dependency on rb_call_cache
2021-10-20 18:19:32 -04:00
Alan Wu
f505446d1f
Yjit: rename context struct
2021-10-20 18:19:32 -04:00
Jose Narvaez
4e2eb7695e
Yet Another Ruby JIT!
...
Renaming uJIT to YJIT. AKA s/ujit/yjit/g.
2021-10-20 18:19:31 -04:00