зеркало из https://github.com/github/ruby.git
symbol/type.c: bug_pindown
* ext/-test-/symbol/type.c (bug_pindown): method for debug, which pins down the given symbol. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45780 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
a80b300416
Коммит
38fd0dc668
|
@ -3,4 +3,5 @@ inits = $srcs.map {|s| File.basename(s, ".*")}
|
|||
inits.delete("init")
|
||||
inits.map! {|s|"X(#{s})"}
|
||||
$defs << "-DTEST_INIT_FUNCS(X)=\"#{inits.join(' ')}\""
|
||||
have_func("rb_pin_dynamic_symbol")
|
||||
create_makefile("-test-/symbol")
|
||||
|
|
|
@ -53,6 +53,17 @@ bug_dynamic_p(VALUE self, VALUE sym)
|
|||
return DYNAMIC_SYM_P(sym) ? Qtrue : Qfalse;
|
||||
}
|
||||
|
||||
#ifdef HAVE_RB_PIN_DYNAMIC_SYMBOL
|
||||
ID rb_pin_dynamic_symbol(VALUE);
|
||||
|
||||
static VALUE
|
||||
bug_pindown(VALUE self, VALUE sym)
|
||||
{
|
||||
rb_pin_dynamic_symbol(sym);
|
||||
return sym;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
Init_type(VALUE klass)
|
||||
{
|
||||
|
@ -61,4 +72,7 @@ Init_type(VALUE klass)
|
|||
rb_define_singleton_method(klass, "id2str", bug_id2str, 1);
|
||||
rb_define_singleton_method(klass, "static?", bug_static_p, 1);
|
||||
rb_define_singleton_method(klass, "dynamic?", bug_dynamic_p, 1);
|
||||
#ifdef HAVE_RB_PIN_DYNAMIC_SYMBOL
|
||||
rb_define_singleton_method(klass, "pindown", bug_pindown, 1);
|
||||
#endif
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче