diff options
author | John Hawthorn <[email protected]> | 2021-11-25 11:56:58 -0800 |
---|---|---|
committer | GitHub <[email protected]> | 2021-11-25 11:56:58 -0800 |
commit | de9a1e4a9654ea305f11ce8602ee32f394e44338 (patch) | |
tree | 0cb841ee3da562313f773287ba9536775d1c6acb /yjit.c | |
parent | e469ebd7d35bbb190395378c37f1f1051d243948 (diff) |
YJIT: Implement new struct accessors (#5161)
* YJIT: Implement optimized_method_struct_aref
* YJIT: Implement struct_aref without method call
Struct member reads can be compiled directly into a memory read (with
either one or two levels of indirection).
* YJIT: Implement optimized struct aset
* YJIT: Update tests for struct access
* YJIT: Add counters for remaining optimized methods
* Check for INT32_MAX overflow
It only takes a struct with 0x7fffffff/8+1 members. Also add some
cheap compile time checks.
* Add tests for non-embedded struct aref/aset
Co-authored-by: Alan Wu <[email protected]>
Notes
Notes:
Merged-By: jhawthorn <[email protected]>
Diffstat (limited to 'yjit.c')
-rw-r--r-- | yjit.c | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -69,6 +69,9 @@ YJIT_DECLARE_COUNTERS( send_zsuper_method, send_undef_method, send_optimized_method, + send_optimized_method_send, + send_optimized_method_call, + send_optimized_method_block_call, send_missing_method, send_bmethod, send_refined_method, |