mirror of
https://github.com/ruby/ruby.git
synced 2025-08-26 06:25:31 +02:00
![]() 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. |
||
---|---|---|
.. | ||
assembler.rb | ||
block.rb | ||
branch_stub.rb | ||
c_pointer.rb | ||
c_type.rb | ||
code_block.rb | ||
compiler.rb | ||
context.rb | ||
entry_stub.rb | ||
exit_compiler.rb | ||
hooks.rb | ||
insn_compiler.rb | ||
invariants.rb | ||
jit_state.rb | ||
stats.rb | ||
type.rb |