diff options
Diffstat (limited to 'yjit')
-rw-r--r-- | yjit/bindgen/src/main.rs | 1 | ||||
-rw-r--r-- | yjit/src/codegen.rs | 2 | ||||
-rw-r--r-- | yjit/src/cruby_bindings.inc.rs | 215 |
3 files changed, 109 insertions, 109 deletions
diff --git a/yjit/bindgen/src/main.rs b/yjit/bindgen/src/main.rs index a961c1290a..74280e4362 100644 --- a/yjit/bindgen/src/main.rs +++ b/yjit/bindgen/src/main.rs @@ -141,6 +141,7 @@ fn main() { .allowlist_function("rb_ary_tmp_new_from_values") // From include/ruby/internal/intern/class.h + .allowlist_function("rb_class_attached_object") .allowlist_function("rb_singleton_class") // From include/ruby/internal/core/rclass.h diff --git a/yjit/src/codegen.rs b/yjit/src/codegen.rs index 15d2c0598f..b83dfa15cc 100644 --- a/yjit/src/codegen.rs +++ b/yjit/src/codegen.rs @@ -3863,7 +3863,7 @@ fn jit_guard_known_klass( } } else if unsafe { FL_TEST(known_klass, VALUE(RUBY_FL_SINGLETON as usize)) != VALUE(0) - && sample_instance == rb_attr_get(known_klass, id__attached__ as ID) + && sample_instance == rb_class_attached_object(known_klass) } { // Singleton classes are attached to one specific object, so we can // avoid one memory access (and potentially the is_heap check) by diff --git a/yjit/src/cruby_bindings.inc.rs b/yjit/src/cruby_bindings.inc.rs index 8cd61ac8c4..59d065dabd 100644 --- a/yjit/src/cruby_bindings.inc.rs +++ b/yjit/src/cruby_bindings.inc.rs @@ -377,66 +377,65 @@ pub const tProc: ruby_method_ids = 190; pub const tLambda: ruby_method_ids = 191; pub const tSend: ruby_method_ids = 192; pub const t__send__: ruby_method_ids = 193; -pub const t__attached__: ruby_method_ids = 194; -pub const t__recursive_key__: ruby_method_ids = 195; -pub const tInitialize: ruby_method_ids = 196; -pub const tInitialize_copy: ruby_method_ids = 197; -pub const tInitialize_clone: ruby_method_ids = 198; -pub const tInitialize_dup: ruby_method_ids = 199; -pub const tTo_int: ruby_method_ids = 200; -pub const tTo_ary: ruby_method_ids = 201; -pub const tTo_str: ruby_method_ids = 202; -pub const tTo_sym: ruby_method_ids = 203; -pub const tTo_hash: ruby_method_ids = 204; -pub const tTo_proc: ruby_method_ids = 205; -pub const tTo_io: ruby_method_ids = 206; -pub const tTo_a: ruby_method_ids = 207; -pub const tTo_s: ruby_method_ids = 208; -pub const tTo_i: ruby_method_ids = 209; -pub const tTo_f: ruby_method_ids = 210; -pub const tTo_r: ruby_method_ids = 211; -pub const tBt: ruby_method_ids = 212; -pub const tBt_locations: ruby_method_ids = 213; -pub const tCall: ruby_method_ids = 214; -pub const tMesg: ruby_method_ids = 215; -pub const tException: ruby_method_ids = 216; -pub const tLocals: ruby_method_ids = 217; -pub const tNOT: ruby_method_ids = 218; -pub const tAND: ruby_method_ids = 219; -pub const tOR: ruby_method_ids = 220; -pub const tDiv: ruby_method_ids = 221; -pub const tDivmod: ruby_method_ids = 222; -pub const tFdiv: ruby_method_ids = 223; -pub const tQuo: ruby_method_ids = 224; -pub const tName: ruby_method_ids = 225; -pub const tNil: ruby_method_ids = 226; -pub const tPath: ruby_method_ids = 227; -pub const tUScore: ruby_method_ids = 228; -pub const tNUMPARAM_1: ruby_method_ids = 229; -pub const tNUMPARAM_2: ruby_method_ids = 230; -pub const tNUMPARAM_3: ruby_method_ids = 231; -pub const tNUMPARAM_4: ruby_method_ids = 232; -pub const tNUMPARAM_5: ruby_method_ids = 233; -pub const tNUMPARAM_6: ruby_method_ids = 234; -pub const tNUMPARAM_7: ruby_method_ids = 235; -pub const tNUMPARAM_8: ruby_method_ids = 236; -pub const tNUMPARAM_9: ruby_method_ids = 237; -pub const tDefault: ruby_method_ids = 238; -pub const tTOKEN_LOCAL_END: ruby_method_ids = 239; -pub const tTOKEN_INSTANCE_BEGIN: ruby_method_ids = 238; -pub const tTOKEN_INSTANCE_END: ruby_method_ids = 239; -pub const tTOKEN_GLOBAL_BEGIN: ruby_method_ids = 238; -pub const tLASTLINE: ruby_method_ids = 239; -pub const tBACKREF: ruby_method_ids = 240; -pub const tERROR_INFO: ruby_method_ids = 241; -pub const tTOKEN_GLOBAL_END: ruby_method_ids = 242; -pub const tTOKEN_CONST_BEGIN: ruby_method_ids = 241; -pub const tTOKEN_CONST_END: ruby_method_ids = 242; -pub const tTOKEN_CLASS_BEGIN: ruby_method_ids = 241; -pub const tTOKEN_CLASS_END: ruby_method_ids = 242; -pub const tTOKEN_ATTRSET_BEGIN: ruby_method_ids = 241; -pub const tTOKEN_ATTRSET_END: ruby_method_ids = 242; -pub const tNEXT_ID: ruby_method_ids = 242; +pub const t__recursive_key__: ruby_method_ids = 194; +pub const tInitialize: ruby_method_ids = 195; +pub const tInitialize_copy: ruby_method_ids = 196; +pub const tInitialize_clone: ruby_method_ids = 197; +pub const tInitialize_dup: ruby_method_ids = 198; +pub const tTo_int: ruby_method_ids = 199; +pub const tTo_ary: ruby_method_ids = 200; +pub const tTo_str: ruby_method_ids = 201; +pub const tTo_sym: ruby_method_ids = 202; +pub const tTo_hash: ruby_method_ids = 203; +pub const tTo_proc: ruby_method_ids = 204; +pub const tTo_io: ruby_method_ids = 205; +pub const tTo_a: ruby_method_ids = 206; +pub const tTo_s: ruby_method_ids = 207; +pub const tTo_i: ruby_method_ids = 208; +pub const tTo_f: ruby_method_ids = 209; +pub const tTo_r: ruby_method_ids = 210; +pub const tBt: ruby_method_ids = 211; +pub const tBt_locations: ruby_method_ids = 212; +pub const tCall: ruby_method_ids = 213; +pub const tMesg: ruby_method_ids = 214; +pub const tException: ruby_method_ids = 215; +pub const tLocals: ruby_method_ids = 216; +pub const tNOT: ruby_method_ids = 217; +pub const tAND: ruby_method_ids = 218; +pub const tOR: ruby_method_ids = 219; +pub const tDiv: ruby_method_ids = 220; +pub const tDivmod: ruby_method_ids = 221; +pub const tFdiv: ruby_method_ids = 222; +pub const tQuo: ruby_method_ids = 223; +pub const tName: ruby_method_ids = 224; +pub const tNil: ruby_method_ids = 225; +pub const tPath: ruby_method_ids = 226; +pub const tUScore: ruby_method_ids = 227; +pub const tNUMPARAM_1: ruby_method_ids = 228; +pub const tNUMPARAM_2: ruby_method_ids = 229; +pub const tNUMPARAM_3: ruby_method_ids = 230; +pub const tNUMPARAM_4: ruby_method_ids = 231; +pub const tNUMPARAM_5: ruby_method_ids = 232; +pub const tNUMPARAM_6: ruby_method_ids = 233; +pub const tNUMPARAM_7: ruby_method_ids = 234; +pub const tNUMPARAM_8: ruby_method_ids = 235; +pub const tNUMPARAM_9: ruby_method_ids = 236; +pub const tDefault: ruby_method_ids = 237; +pub const tTOKEN_LOCAL_END: ruby_method_ids = 238; +pub const tTOKEN_INSTANCE_BEGIN: ruby_method_ids = 237; +pub const tTOKEN_INSTANCE_END: ruby_method_ids = 238; +pub const tTOKEN_GLOBAL_BEGIN: ruby_method_ids = 237; +pub const tLASTLINE: ruby_method_ids = 238; +pub const tBACKREF: ruby_method_ids = 239; +pub const tERROR_INFO: ruby_method_ids = 240; +pub const tTOKEN_GLOBAL_END: ruby_method_ids = 241; +pub const tTOKEN_CONST_BEGIN: ruby_method_ids = 240; +pub const tTOKEN_CONST_END: ruby_method_ids = 241; +pub const tTOKEN_CLASS_BEGIN: ruby_method_ids = 240; +pub const tTOKEN_CLASS_END: ruby_method_ids = 241; +pub const tTOKEN_ATTRSET_BEGIN: ruby_method_ids = 240; +pub const tTOKEN_ATTRSET_END: ruby_method_ids = 241; +pub const tNEXT_ID: ruby_method_ids = 241; pub const idMax: ruby_method_ids = 2721; pub const idMin: ruby_method_ids = 2737; pub const idFreeze: ruby_method_ids = 2753; @@ -461,54 +460,53 @@ pub const idProc: ruby_method_ids = 3041; pub const idLambda: ruby_method_ids = 3057; pub const idSend: ruby_method_ids = 3073; pub const id__send__: ruby_method_ids = 3089; -pub const id__attached__: ruby_method_ids = 3105; -pub const id__recursive_key__: ruby_method_ids = 3121; -pub const idInitialize: ruby_method_ids = 3137; -pub const idInitialize_copy: ruby_method_ids = 3153; -pub const idInitialize_clone: ruby_method_ids = 3169; -pub const idInitialize_dup: ruby_method_ids = 3185; -pub const idTo_int: ruby_method_ids = 3201; -pub const idTo_ary: ruby_method_ids = 3217; -pub const idTo_str: ruby_method_ids = 3233; -pub const idTo_sym: ruby_method_ids = 3249; -pub const idTo_hash: ruby_method_ids = 3265; -pub const idTo_proc: ruby_method_ids = 3281; -pub const idTo_io: ruby_method_ids = 3297; -pub const idTo_a: ruby_method_ids = 3313; -pub const idTo_s: ruby_method_ids = 3329; -pub const idTo_i: ruby_method_ids = 3345; -pub const idTo_f: ruby_method_ids = 3361; -pub const idTo_r: ruby_method_ids = 3377; -pub const idBt: ruby_method_ids = 3393; -pub const idBt_locations: ruby_method_ids = 3409; -pub const idCall: ruby_method_ids = 3425; -pub const idMesg: ruby_method_ids = 3441; -pub const idException: ruby_method_ids = 3457; -pub const idLocals: ruby_method_ids = 3473; -pub const idNOT: ruby_method_ids = 3489; -pub const idAND: ruby_method_ids = 3505; -pub const idOR: ruby_method_ids = 3521; -pub const idDiv: ruby_method_ids = 3537; -pub const idDivmod: ruby_method_ids = 3553; -pub const idFdiv: ruby_method_ids = 3569; -pub const idQuo: ruby_method_ids = 3585; -pub const idName: ruby_method_ids = 3601; -pub const idNil: ruby_method_ids = 3617; -pub const idPath: ruby_method_ids = 3633; -pub const idUScore: ruby_method_ids = 3649; -pub const idNUMPARAM_1: ruby_method_ids = 3665; -pub const idNUMPARAM_2: ruby_method_ids = 3681; -pub const idNUMPARAM_3: ruby_method_ids = 3697; -pub const idNUMPARAM_4: ruby_method_ids = 3713; -pub const idNUMPARAM_5: ruby_method_ids = 3729; -pub const idNUMPARAM_6: ruby_method_ids = 3745; -pub const idNUMPARAM_7: ruby_method_ids = 3761; -pub const idNUMPARAM_8: ruby_method_ids = 3777; -pub const idNUMPARAM_9: ruby_method_ids = 3793; -pub const idDefault: ruby_method_ids = 3809; -pub const idLASTLINE: ruby_method_ids = 3831; -pub const idBACKREF: ruby_method_ids = 3847; -pub const idERROR_INFO: ruby_method_ids = 3863; +pub const id__recursive_key__: ruby_method_ids = 3105; +pub const idInitialize: ruby_method_ids = 3121; +pub const idInitialize_copy: ruby_method_ids = 3137; +pub const idInitialize_clone: ruby_method_ids = 3153; +pub const idInitialize_dup: ruby_method_ids = 3169; +pub const idTo_int: ruby_method_ids = 3185; +pub const idTo_ary: ruby_method_ids = 3201; +pub const idTo_str: ruby_method_ids = 3217; +pub const idTo_sym: ruby_method_ids = 3233; +pub const idTo_hash: ruby_method_ids = 3249; +pub const idTo_proc: ruby_method_ids = 3265; +pub const idTo_io: ruby_method_ids = 3281; +pub const idTo_a: ruby_method_ids = 3297; +pub const idTo_s: ruby_method_ids = 3313; +pub const idTo_i: ruby_method_ids = 3329; +pub const idTo_f: ruby_method_ids = 3345; +pub const idTo_r: ruby_method_ids = 3361; +pub const idBt: ruby_method_ids = 3377; +pub const idBt_locations: ruby_method_ids = 3393; +pub const idCall: ruby_method_ids = 3409; +pub const idMesg: ruby_method_ids = 3425; +pub const idException: ruby_method_ids = 3441; +pub const idLocals: ruby_method_ids = 3457; +pub const idNOT: ruby_method_ids = 3473; +pub const idAND: ruby_method_ids = 3489; +pub const idOR: ruby_method_ids = 3505; +pub const idDiv: ruby_method_ids = 3521; +pub const idDivmod: ruby_method_ids = 3537; +pub const idFdiv: ruby_method_ids = 3553; +pub const idQuo: ruby_method_ids = 3569; +pub const idName: ruby_method_ids = 3585; +pub const idNil: ruby_method_ids = 3601; +pub const idPath: ruby_method_ids = 3617; +pub const idUScore: ruby_method_ids = 3633; +pub const idNUMPARAM_1: ruby_method_ids = 3649; +pub const idNUMPARAM_2: ruby_method_ids = 3665; +pub const idNUMPARAM_3: ruby_method_ids = 3681; +pub const idNUMPARAM_4: ruby_method_ids = 3697; +pub const idNUMPARAM_5: ruby_method_ids = 3713; +pub const idNUMPARAM_6: ruby_method_ids = 3729; +pub const idNUMPARAM_7: ruby_method_ids = 3745; +pub const idNUMPARAM_8: ruby_method_ids = 3761; +pub const idNUMPARAM_9: ruby_method_ids = 3777; +pub const idDefault: ruby_method_ids = 3793; +pub const idLASTLINE: ruby_method_ids = 3815; +pub const idBACKREF: ruby_method_ids = 3831; +pub const idERROR_INFO: ruby_method_ids = 3847; pub const tLAST_OP_ID: ruby_method_ids = 169; pub const idLAST_OP_ID: ruby_method_ids = 10; pub type ruby_method_ids = u32; @@ -1071,6 +1069,7 @@ pub const RUBY_OFFSET_RSTRING_EMBED_LEN: rstring_offsets = 16; pub type rstring_offsets = u32; pub type rb_seq_param_keyword_struct = rb_iseq_constant_body__bindgen_ty_1_rb_iseq_param_keyword; extern "C" { + pub fn rb_class_attached_object(klass: VALUE) -> VALUE; pub fn rb_singleton_class(obj: VALUE) -> VALUE; pub fn rb_get_alloc_func(klass: VALUE) -> rb_alloc_func_t; pub fn rb_method_basic_definition_p(klass: VALUE, mid: ID) -> ::std::os::raw::c_int; |