зеркало из https://github.com/github/ruby.git
Count unsupported method types
This commit is contained in:
Родитель
64074ca4df
Коммит
fa9a0cb970
|
@ -992,8 +992,35 @@ module RubyVM::MJIT
|
|||
case cme.def.type
|
||||
when C.VM_METHOD_TYPE_ISEQ
|
||||
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
|
||||
asm.incr_counter(:send_not_iseq)
|
||||
asm.incr_counter(:send_not_implemented_type)
|
||||
return CantCompile
|
||||
end
|
||||
end
|
||||
|
|
10
mjit_c.h
10
mjit_c.h
|
@ -114,10 +114,18 @@ MJIT_RUNTIME_COUNTERS(
|
|||
send_kw_splat,
|
||||
send_kwarg,
|
||||
send_missing_cme,
|
||||
send_not_iseq,
|
||||
send_private,
|
||||
send_protected,
|
||||
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_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) }
|
||||
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
|
||||
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_CFUNC) }
|
||||
end
|
||||
|
@ -419,6 +431,22 @@ module RubyVM::MJIT # :nodoc: all
|
|||
Primitive.cexpr! %q{ UINT2NUM(VM_METHOD_TYPE_ISEQ) }
|
||||
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
|
||||
Primitive.cexpr! %q{ ULONG2NUM(INVALID_SHAPE_ID) }
|
||||
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_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_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_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_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_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)")],
|
||||
|
|
|
@ -380,6 +380,13 @@ generator = BindingGenerator.new(
|
|||
VM_FRAME_MAGIC_METHOD
|
||||
VM_METHOD_TYPE_CFUNC
|
||||
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[
|
||||
INVALID_SHAPE_ID
|
||||
|
|
Загрузка…
Ссылка в новой задаче