diff options
author | Jean Boussier <[email protected]> | 2023-11-07 18:09:55 +0100 |
---|---|---|
committer | Jean Boussier <[email protected]> | 2023-11-08 11:02:55 +0100 |
commit | d898e8d6f89fba34a9ee5c0e139f38ac807059e6 () | |
tree | bf9d79ff3b3502565b5b718427f192bcd472dc64 /yjit/bindgen/src/main.rs | |
parent | 4abf6cde583f3ebe562bd9d62e0126b2cbf4dfac (diff) |
Refactor rb_shape_transition_shape_capa out
Right now the `rb_shape_get_next` shape caller need to first check if there is capacity left, and if not call `rb_shape_transition_shape_capa` before it can call `rb_shape_get_next`. And on each of these it needs to checks if we got a TOO_COMPLEX back. All this logic is duplicated in the interpreter, YJIT and RJIT. Instead we can have `rb_shape_get_next` do the capacity transition when needed. The caller can compare the old and new shapes capacity to know if resizing is needed. It also can check for TOO_COMPLEX only once.
-rw-r--r-- | yjit/bindgen/src/main.rs | 1 |
1 files changed, 0 insertions, 1 deletions
@@ -101,7 +101,6 @@ fn main() { .allowlist_function("rb_shape_get_iv_index") .allowlist_function("rb_shape_get_next") .allowlist_function("rb_shape_id") - .allowlist_function("rb_shape_transition_shape_capa") .allowlist_function("rb_shape_obj_too_complex") .allowlist_var("SHAPE_ID_NUM_BITS") .allowlist_var("OBJ_TOO_COMPLEX_SHAPE_ID") |