зеркало из https://github.com/github/ruby.git
RJIT: Group blockarg exit reasons
This commit is contained in:
Родитель
cd1cd8030c
Коммит
5cc644b147
|
@ -3844,7 +3844,7 @@ module RubyVM::RJIT
|
|||
jit_chain_guard(:jne, jit, ctx, asm, counted_exit(side_exit, :send_block_not_proxy))
|
||||
return C.rb_block_param_proxy
|
||||
else
|
||||
asm.incr_counter(:send_blockarg_not_nil_or_proxy)
|
||||
asm.incr_counter(:send_block_arg)
|
||||
return CantCompile
|
||||
end
|
||||
elsif blockiseq != 0
|
||||
|
@ -4838,7 +4838,7 @@ module RubyVM::RJIT
|
|||
asm.incr_counter(:send_c_tracingg)
|
||||
return CantCompile
|
||||
elsif flags & C::VM_CALL_ARGS_BLOCKARG != 0
|
||||
asm.incr_counter(:send_attrset_blockarg)
|
||||
asm.incr_counter(:send_block_arg)
|
||||
return CantCompile
|
||||
end
|
||||
|
||||
|
@ -4897,7 +4897,7 @@ module RubyVM::RJIT
|
|||
|
||||
# Not handling block_handler
|
||||
if flags & C::VM_CALL_ARGS_BLOCKARG != 0
|
||||
asm.incr_counter(:send_ivar_blockarg)
|
||||
asm.incr_counter(:send_block_arg)
|
||||
return CantCompile
|
||||
end
|
||||
|
||||
|
@ -4959,7 +4959,7 @@ module RubyVM::RJIT
|
|||
def jit_call_optimized(jit, ctx, asm, cme, calling, known_recv_class)
|
||||
if calling.flags & C::VM_CALL_ARGS_BLOCKARG != 0
|
||||
# Not working yet
|
||||
asm.incr_counter(:send_optimized_blockarg)
|
||||
asm.incr_counter(:send_block_arg)
|
||||
return CantCompile
|
||||
end
|
||||
|
||||
|
|
5
rjit_c.h
5
rjit_c.h
|
@ -47,12 +47,12 @@ RJIT_RUNTIME_COUNTERS(
|
|||
send_is_a_class_mismatch,
|
||||
send_instance_of_class_mismatch,
|
||||
|
||||
send_blockarg_not_nil_or_proxy,
|
||||
send_blockiseq,
|
||||
send_block_handler,
|
||||
send_block_setup,
|
||||
send_block_not_nil,
|
||||
send_block_not_proxy,
|
||||
send_block_arg,
|
||||
|
||||
send_iseq_kwparam,
|
||||
send_iseq_accepts_no_kwarg,
|
||||
|
@ -83,11 +83,9 @@ RJIT_RUNTIME_COUNTERS(
|
|||
send_attrset_splat,
|
||||
send_attrset_kwarg,
|
||||
send_attrset_method,
|
||||
send_attrset_blockarg,
|
||||
|
||||
send_ivar_splat,
|
||||
send_ivar_opt_send,
|
||||
send_ivar_blockarg,
|
||||
|
||||
send_optimized_send_no_args,
|
||||
send_optimized_send_not_sym_or_str,
|
||||
|
@ -100,7 +98,6 @@ RJIT_RUNTIME_COUNTERS(
|
|||
send_optimized_call_splat,
|
||||
send_optimized_struct_aref_error,
|
||||
|
||||
send_optimized_blockarg,
|
||||
send_optimized_block_call,
|
||||
send_optimized_struct_aset,
|
||||
|
||||
|
|
|
@ -1334,12 +1334,12 @@ module RubyVM::RJIT # :nodoc: all
|
|||
send_c_tracing: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_c_tracing)")],
|
||||
send_is_a_class_mismatch: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_is_a_class_mismatch)")],
|
||||
send_instance_of_class_mismatch: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_instance_of_class_mismatch)")],
|
||||
send_blockarg_not_nil_or_proxy: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_blockarg_not_nil_or_proxy)")],
|
||||
send_blockiseq: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_blockiseq)")],
|
||||
send_block_handler: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_block_handler)")],
|
||||
send_block_setup: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_block_setup)")],
|
||||
send_block_not_nil: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_block_not_nil)")],
|
||||
send_block_not_proxy: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_block_not_proxy)")],
|
||||
send_block_arg: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_block_arg)")],
|
||||
send_iseq_kwparam: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_iseq_kwparam)")],
|
||||
send_iseq_accepts_no_kwarg: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_iseq_accepts_no_kwarg)")],
|
||||
send_iseq_has_opt: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_iseq_has_opt)")],
|
||||
|
@ -1367,10 +1367,8 @@ module RubyVM::RJIT # :nodoc: all
|
|||
send_attrset_splat: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_attrset_splat)")],
|
||||
send_attrset_kwarg: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_attrset_kwarg)")],
|
||||
send_attrset_method: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_attrset_method)")],
|
||||
send_attrset_blockarg: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_attrset_blockarg)")],
|
||||
send_ivar_splat: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_ivar_splat)")],
|
||||
send_ivar_opt_send: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_ivar_opt_send)")],
|
||||
send_ivar_blockarg: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_ivar_blockarg)")],
|
||||
send_optimized_send_no_args: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_optimized_send_no_args)")],
|
||||
send_optimized_send_not_sym_or_str: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_optimized_send_not_sym_or_str)")],
|
||||
send_optimized_send_mid_class_changed: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_optimized_send_mid_class_changed)")],
|
||||
|
@ -1381,7 +1379,6 @@ module RubyVM::RJIT # :nodoc: all
|
|||
send_optimized_call_kwarg: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_optimized_call_kwarg)")],
|
||||
send_optimized_call_splat: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_optimized_call_splat)")],
|
||||
send_optimized_struct_aref_error: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_optimized_struct_aref_error)")],
|
||||
send_optimized_blockarg: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_optimized_blockarg)")],
|
||||
send_optimized_block_call: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_optimized_block_call)")],
|
||||
send_optimized_struct_aset: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_optimized_struct_aset)")],
|
||||
send_bmethod_not_iseq: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_rjit_runtime_counters *)NULL)), send_bmethod_not_iseq)")],
|
||||
|
|
Загрузка…
Ссылка в новой задаче