mirror of
https://github.com/ruby/ruby.git
synced 2025-08-25 22:14:37 +02:00
Count unsupported method types
This commit is contained in:
parent
64074ca4df
commit
fa9a0cb970
4 changed files with 81 additions and 3 deletions
|
@ -992,8 +992,35 @@ module RubyVM::MJIT
|
||||||
case cme.def.type
|
case cme.def.type
|
||||||
when C.VM_METHOD_TYPE_ISEQ
|
when C.VM_METHOD_TYPE_ISEQ
|
||||||
jit_call_iseq_setup(jit, ctx, asm, ci, cme, flags, argc)
|
jit_call_iseq_setup(jit, ctx, asm, ci, cme, flags, argc)
|
||||||
|
# when C.VM_METHOD_TYPE_NOTIMPLEMENTED
|
||||||
|
when C.VM_METHOD_TYPE_CFUNC
|
||||||
|
asm.incr_counter(:send_cfunc)
|
||||||
|
return CantCompile
|
||||||
|
when C.VM_METHOD_TYPE_ATTRSET
|
||||||
|
asm.incr_counter(:send_attrset)
|
||||||
|
return CantCompile
|
||||||
|
when C.VM_METHOD_TYPE_IVAR
|
||||||
|
asm.incr_counter(:send_ivar)
|
||||||
|
return CantCompile
|
||||||
|
# when C.VM_METHOD_TYPE_MISSING
|
||||||
|
when C.VM_METHOD_TYPE_BMETHOD
|
||||||
|
asm.incr_counter(:send_bmethod)
|
||||||
|
return CantCompile
|
||||||
|
when C.VM_METHOD_TYPE_ALIAS
|
||||||
|
asm.incr_counter(:send_alias)
|
||||||
|
return CantCompile
|
||||||
|
when C.VM_METHOD_TYPE_OPTIMIZED
|
||||||
|
asm.incr_counter(:send_optimized)
|
||||||
|
return CantCompile
|
||||||
|
# when C.VM_METHOD_TYPE_UNDEF
|
||||||
|
when C.VM_METHOD_TYPE_ZSUPER
|
||||||
|
asm.incr_counter(:send_zsuper)
|
||||||
|
return CantCompile
|
||||||
|
when C.VM_METHOD_TYPE_REFINED
|
||||||
|
asm.incr_counter(:send_refined)
|
||||||
|
return CantCompile
|
||||||
else
|
else
|
||||||
asm.incr_counter(:send_not_iseq)
|
asm.incr_counter(:send_not_implemented_type)
|
||||||
return CantCompile
|
return CantCompile
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
10
mjit_c.h
10
mjit_c.h
|
@ -114,10 +114,18 @@ MJIT_RUNTIME_COUNTERS(
|
||||||
send_kw_splat,
|
send_kw_splat,
|
||||||
send_kwarg,
|
send_kwarg,
|
||||||
send_missing_cme,
|
send_missing_cme,
|
||||||
send_not_iseq,
|
|
||||||
send_private,
|
send_private,
|
||||||
send_protected,
|
send_protected,
|
||||||
send_tailcall,
|
send_tailcall,
|
||||||
|
send_not_implemented_type,
|
||||||
|
send_cfunc,
|
||||||
|
send_ivar,
|
||||||
|
send_attrset,
|
||||||
|
send_bmethod,
|
||||||
|
send_alias,
|
||||||
|
send_optimized,
|
||||||
|
send_zsuper,
|
||||||
|
send_refined,
|
||||||
|
|
||||||
send_guard_nil,
|
send_guard_nil,
|
||||||
send_guard_true,
|
send_guard_true,
|
||||||
|
|
38
mjit_c.rb
38
mjit_c.rb
|
@ -411,6 +411,18 @@ module RubyVM::MJIT # :nodoc: all
|
||||||
Primitive.cexpr! %q{ UINT2NUM(VM_FRAME_MAGIC_METHOD) }
|
Primitive.cexpr! %q{ UINT2NUM(VM_FRAME_MAGIC_METHOD) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def C.VM_METHOD_TYPE_ALIAS
|
||||||
|
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_ALIAS) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def C.VM_METHOD_TYPE_ATTRSET
|
||||||
|
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_ATTRSET) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def C.VM_METHOD_TYPE_BMETHOD
|
||||||
|
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_BMETHOD) }
|
||||||
|
end
|
||||||
|
|
||||||
def C.VM_METHOD_TYPE_CFUNC
|
def C.VM_METHOD_TYPE_CFUNC
|
||||||
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_CFUNC) }
|
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_CFUNC) }
|
||||||
end
|
end
|
||||||
|
@ -419,6 +431,22 @@ module RubyVM::MJIT # :nodoc: all
|
||||||
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_ISEQ) }
|
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_ISEQ) }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def C.VM_METHOD_TYPE_IVAR
|
||||||
|
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_IVAR) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def C.VM_METHOD_TYPE_OPTIMIZED
|
||||||
|
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_OPTIMIZED) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def C.VM_METHOD_TYPE_REFINED
|
||||||
|
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_REFINED) }
|
||||||
|
end
|
||||||
|
|
||||||
|
def C.VM_METHOD_TYPE_ZSUPER
|
||||||
|
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_ZSUPER) }
|
||||||
|
end
|
||||||
|
|
||||||
def C.INVALID_SHAPE_ID
|
def C.INVALID_SHAPE_ID
|
||||||
Primitive.cexpr! %q{ ULONG2NUM(INVALID_SHAPE_ID) }
|
Primitive.cexpr! %q{ ULONG2NUM(INVALID_SHAPE_ID) }
|
||||||
end
|
end
|
||||||
|
@ -884,10 +912,18 @@ module RubyVM::MJIT # :nodoc: all
|
||||||
send_kw_splat: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_kw_splat)")],
|
send_kw_splat: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_kw_splat)")],
|
||||||
send_kwarg: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_kwarg)")],
|
send_kwarg: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_kwarg)")],
|
||||||
send_missing_cme: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_missing_cme)")],
|
send_missing_cme: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_missing_cme)")],
|
||||||
send_not_iseq: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_not_iseq)")],
|
|
||||||
send_private: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_private)")],
|
send_private: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_private)")],
|
||||||
send_protected: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_protected)")],
|
send_protected: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_protected)")],
|
||||||
send_tailcall: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_tailcall)")],
|
send_tailcall: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_tailcall)")],
|
||||||
|
send_not_implemented_type: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_not_implemented_type)")],
|
||||||
|
send_cfunc: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_cfunc)")],
|
||||||
|
send_ivar: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_ivar)")],
|
||||||
|
send_attrset: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_attrset)")],
|
||||||
|
send_bmethod: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_bmethod)")],
|
||||||
|
send_alias: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_alias)")],
|
||||||
|
send_optimized: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_optimized)")],
|
||||||
|
send_zsuper: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_zsuper)")],
|
||||||
|
send_refined: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_refined)")],
|
||||||
send_guard_nil: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_guard_nil)")],
|
send_guard_nil: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_guard_nil)")],
|
||||||
send_guard_true: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_guard_true)")],
|
send_guard_true: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_guard_true)")],
|
||||||
send_guard_false: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_guard_false)")],
|
send_guard_false: [CType::Immediate.parse("size_t"), Primitive.cexpr!("OFFSETOF((*((struct rb_mjit_runtime_counters *)NULL)), send_guard_false)")],
|
||||||
|
|
|
@ -380,6 +380,13 @@ generator = BindingGenerator.new(
|
||||||
VM_FRAME_MAGIC_METHOD
|
VM_FRAME_MAGIC_METHOD
|
||||||
VM_METHOD_TYPE_CFUNC
|
VM_METHOD_TYPE_CFUNC
|
||||||
VM_METHOD_TYPE_ISEQ
|
VM_METHOD_TYPE_ISEQ
|
||||||
|
VM_METHOD_TYPE_IVAR
|
||||||
|
VM_METHOD_TYPE_ATTRSET
|
||||||
|
VM_METHOD_TYPE_BMETHOD
|
||||||
|
VM_METHOD_TYPE_ALIAS
|
||||||
|
VM_METHOD_TYPE_OPTIMIZED
|
||||||
|
VM_METHOD_TYPE_ZSUPER
|
||||||
|
VM_METHOD_TYPE_REFINED
|
||||||
],
|
],
|
||||||
ULONG: %w[
|
ULONG: %w[
|
||||||
INVALID_SHAPE_ID
|
INVALID_SHAPE_ID
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue