diff --git a/class.c b/class.c index 0714f54e16..2e8710194d 100644 --- a/class.c +++ b/class.c @@ -1746,6 +1746,9 @@ rb_singleton_class(VALUE obj) * \{ */ +#ifdef rb_define_singleton_method +#undef rb_define_singleton_method +#endif /*! * Defines a singleton method for \a obj. * \param obj an arbitrary object diff --git a/eval.c b/eval.c index bde02d545f..614bb043ee 100644 --- a/eval.c +++ b/eval.c @@ -355,7 +355,7 @@ ruby_exec_node(void *n) */ static VALUE -rb_mod_nesting(void) +rb_mod_nesting(VALUE _) { VALUE ary = rb_ary_new(); const rb_cref_t *cref = rb_vm_cref(); @@ -1614,7 +1614,7 @@ used_modules_i(VALUE _, VALUE mod, VALUE ary) * [B, A] */ static VALUE -rb_mod_s_used_modules(void) +rb_mod_s_used_modules(VALUE _) { const rb_cref_t *cref = rb_vm_cref(); VALUE ary = rb_ary_new(); diff --git a/ext/readline/readline.c b/ext/readline/readline.c index ad0bd4e0c0..b686f99645 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -1382,7 +1382,7 @@ readline_s_set_basic_word_break_characters(VALUE self, VALUE str) * Raises NotImplementedError if the using readline library does not support. */ static VALUE -readline_s_get_basic_word_break_characters(VALUE self, VALUE str) +readline_s_get_basic_word_break_characters(VALUE self) { if (rl_basic_word_break_characters == NULL) return Qnil; @@ -1437,7 +1437,7 @@ readline_s_set_completer_word_break_characters(VALUE self, VALUE str) * Raises NotImplementedError if the using readline library does not support. */ static VALUE -readline_s_get_completer_word_break_characters(VALUE self, VALUE str) +readline_s_get_completer_word_break_characters(VALUE self) { if (rl_completer_word_break_characters == NULL) return Qnil; @@ -1552,7 +1552,7 @@ readline_s_set_basic_quote_characters(VALUE self, VALUE str) * Raises NotImplementedError if the using readline library does not support. */ static VALUE -readline_s_get_basic_quote_characters(VALUE self, VALUE str) +readline_s_get_basic_quote_characters(VALUE self) { if (rl_basic_quote_characters == NULL) return Qnil; @@ -1608,7 +1608,7 @@ readline_s_set_completer_quote_characters(VALUE self, VALUE str) * Raises NotImplementedError if the using readline library does not support. */ static VALUE -readline_s_get_completer_quote_characters(VALUE self, VALUE str) +readline_s_get_completer_quote_characters(VALUE self) { if (rl_completer_quote_characters == NULL) return Qnil; @@ -1662,7 +1662,7 @@ readline_s_set_filename_quote_characters(VALUE self, VALUE str) * Raises NotImplementedError if the using readline library does not support. */ static VALUE -readline_s_get_filename_quote_characters(VALUE self, VALUE str) +readline_s_get_filename_quote_characters(VALUE self) { if (rl_filename_quote_characters == NULL) return Qnil; diff --git a/ext/socket/basicsocket.c b/ext/socket/basicsocket.c index 1371672850..fb5beed81a 100644 --- a/ext/socket/basicsocket.c +++ b/ext/socket/basicsocket.c @@ -672,7 +672,7 @@ bsock_recv_nonblock(VALUE sock, VALUE len, VALUE flg, VALUE str, VALUE ex) * BasicSocket.do_not_reverse_lookup #=> false */ static VALUE -bsock_do_not_rev_lookup(void) +bsock_do_not_rev_lookup(VALUE _) { return rsock_do_not_reverse_lookup?Qtrue:Qfalse; } diff --git a/ext/socket/socket.c b/ext/socket/socket.c index 0059595e1b..f1017910ce 100644 --- a/ext/socket/socket.c +++ b/ext/socket/socket.c @@ -1042,7 +1042,7 @@ sock_s_gethostbyname(VALUE obj, VALUE host) * */ static VALUE -sock_s_gethostbyaddr(int argc, VALUE *argv) +sock_s_gethostbyaddr(int argc, VALUE *argv, VALUE _) { VALUE addr, family; struct hostent *h; @@ -1104,7 +1104,7 @@ sock_s_gethostbyaddr(int argc, VALUE *argv) * Socket.getservbyname("syslog", "udp") #=> 514 */ static VALUE -sock_s_getservbyname(int argc, VALUE *argv) +sock_s_getservbyname(int argc, VALUE *argv, VALUE _) { VALUE service, proto; struct servent *sp; @@ -1145,7 +1145,7 @@ sock_s_getservbyname(int argc, VALUE *argv) * */ static VALUE -sock_s_getservbyport(int argc, VALUE *argv) +sock_s_getservbyport(int argc, VALUE *argv, VALUE _) { VALUE port, proto; struct servent *sp; @@ -1203,7 +1203,7 @@ sock_s_getservbyport(int argc, VALUE *argv) * If Addrinfo object is preferred, use Addrinfo.getaddrinfo. */ static VALUE -sock_s_getaddrinfo(int argc, VALUE *argv) +sock_s_getaddrinfo(int argc, VALUE *argv, VALUE _) { VALUE host, port, family, socktype, protocol, flags, ret, revlookup; struct addrinfo hints; @@ -1257,7 +1257,7 @@ sock_s_getaddrinfo(int argc, VALUE *argv) * If Addrinfo object is preferred, use Addrinfo#getnameinfo. */ static VALUE -sock_s_getnameinfo(int argc, VALUE *argv) +sock_s_getnameinfo(int argc, VALUE *argv, VALUE _) { VALUE sa, af = Qnil, host = Qnil, port = Qnil, flags, tmp; char *hptr, *pptr; diff --git a/file.c b/file.c index b33b5f652c..b1ba4c3cfc 100644 --- a/file.c +++ b/file.c @@ -2538,7 +2538,7 @@ chmod_internal(const char *path, void *mode) */ static VALUE -rb_file_s_chmod(int argc, VALUE *argv) +rb_file_s_chmod(int argc, VALUE *argv, VALUE _) { mode_t mode; @@ -2610,7 +2610,7 @@ lchmod_internal(const char *path, void *mode) */ static VALUE -rb_file_s_lchmod(int argc, VALUE *argv) +rb_file_s_lchmod(int argc, VALUE *argv, VALUE _) { mode_t mode; @@ -2669,7 +2669,7 @@ chown_internal(const char *path, void *arg) */ static VALUE -rb_file_s_chown(int argc, VALUE *argv) +rb_file_s_chown(int argc, VALUE *argv, VALUE _) { struct chown_args arg; @@ -2741,7 +2741,7 @@ lchown_internal(const char *path, void *arg) */ static VALUE -rb_file_s_lchown(int argc, VALUE *argv) +rb_file_s_lchown(int argc, VALUE *argv, VALUE _) { struct chown_args arg; @@ -2919,7 +2919,7 @@ utime_internal_i(int argc, VALUE *argv, int follow) */ static VALUE -rb_file_s_utime(int argc, VALUE *argv) +rb_file_s_utime(int argc, VALUE *argv, VALUE _) { return utime_internal_i(argc, argv, FALSE); } @@ -2938,7 +2938,7 @@ rb_file_s_utime(int argc, VALUE *argv) */ static VALUE -rb_file_s_lutime(int argc, VALUE *argv) +rb_file_s_lutime(int argc, VALUE *argv, VALUE _) { return utime_internal_i(argc, argv, TRUE); } @@ -3217,7 +3217,7 @@ rb_file_s_rename(VALUE klass, VALUE from, VALUE to) */ static VALUE -rb_file_s_umask(int argc, VALUE *argv) +rb_file_s_umask(int argc, VALUE *argv, VALUE _) { mode_t omask = 0; @@ -4032,6 +4032,13 @@ rb_file_expand_path_fast(VALUE fname, VALUE dname) return expand_path(fname, dname, 0, 0, EXPAND_PATH_BUFFER()); } +VALUE +rb_file_s_expand_path(int argc, const VALUE *argv) +{ + rb_check_arity(argc, 1, 2); + return rb_file_expand_path(argv[0], argc > 1 ? argv[1] : Qnil); +} + /* * call-seq: * File.expand_path(file_name [, dir_string] ) -> abs_file_name @@ -4060,11 +4067,10 @@ rb_file_expand_path_fast(VALUE fname, VALUE dname) * parent, the root of the project and appends +lib/mygem.rb+. */ -VALUE -rb_file_s_expand_path(int argc, const VALUE *argv) +static VALUE +s_expand_path(int c, const VALUE * v, VALUE _) { - rb_check_arity(argc, 1, 2); - return rb_file_expand_path(argv[0], argc > 1 ? argv[1] : Qnil); + return rb_file_s_expand_path(c, v); } VALUE @@ -4074,6 +4080,13 @@ rb_file_absolute_path(VALUE fname, VALUE dname) return expand_path(fname, dname, 1, 1, EXPAND_PATH_BUFFER()); } +VALUE +rb_file_s_absolute_path(int argc, const VALUE *argv) +{ + rb_check_arity(argc, 1, 2); + return rb_file_absolute_path(argv[0], argc > 1 ? argv[1] : Qnil); +} + /* * call-seq: * File.absolute_path(file_name [, dir_string] ) -> abs_file_name @@ -4087,11 +4100,10 @@ rb_file_absolute_path(VALUE fname, VALUE dname) * File.absolute_path("~oracle/bin") #=> "/~oracle/bin" */ -VALUE -rb_file_s_absolute_path(int argc, const VALUE *argv) +static VALUE +s_absolute_path(int c, const VALUE * v, VALUE _) { - rb_check_arity(argc, 1, 2); - return rb_file_absolute_path(argv[0], argc > 1 ? argv[1] : Qnil); + return rb_file_s_absolute_path(c, v); } enum rb_realpath_mode { @@ -4556,7 +4568,7 @@ ruby_enc_find_basename(const char *name, long *baselen, long *alllen, rb_encodin */ static VALUE -rb_file_s_basename(int argc, VALUE *argv) +rb_file_s_basename(int argc, VALUE *argv, VALUE _) { VALUE fname, fext, basename; const char *name, *p; @@ -4800,7 +4812,7 @@ static VALUE rb_file_s_split(VALUE klass, VALUE path) { FilePathStringValue(path); /* get rid of converting twice */ - return rb_assoc_new(rb_file_dirname(path), rb_file_s_basename(1,&path)); + return rb_assoc_new(rb_file_dirname(path), rb_file_s_basename(1,&path,Qundef)); } static VALUE @@ -6032,7 +6044,7 @@ nogvl_mkfifo(void *ptr) */ static VALUE -rb_file_s_mkfifo(int argc, VALUE *argv) +rb_file_s_mkfifo(int argc, VALUE *argv, VALUE _) { VALUE path; struct mkfifo_arg ma; @@ -6490,8 +6502,8 @@ Init_File(void) rb_define_singleton_method(rb_cFile, "umask", rb_file_s_umask, -1); rb_define_singleton_method(rb_cFile, "truncate", rb_file_s_truncate, 2); rb_define_singleton_method(rb_cFile, "mkfifo", rb_file_s_mkfifo, -1); - rb_define_singleton_method(rb_cFile, "expand_path", rb_file_s_expand_path, -1); - rb_define_singleton_method(rb_cFile, "absolute_path", rb_file_s_absolute_path, -1); + rb_define_singleton_method(rb_cFile, "expand_path", s_expand_path, -1); + rb_define_singleton_method(rb_cFile, "absolute_path", s_absolute_path, -1); rb_define_singleton_method(rb_cFile, "realpath", rb_file_s_realpath, -1); rb_define_singleton_method(rb_cFile, "realdirpath", rb_file_s_realdirpath, -1); rb_define_singleton_method(rb_cFile, "basename", rb_file_s_basename, -1); diff --git a/gc.c b/gc.c index 32b7807d74..18ae189421 100644 --- a/gc.c +++ b/gc.c @@ -9108,6 +9108,16 @@ gc_stress_set_m(VALUE self, VALUE flag) return flag; } +VALUE +rb_gc_enable(void) +{ + rb_objspace_t *objspace = &rb_objspace; + int old = dont_gc; + + dont_gc = FALSE; + return old ? Qtrue : Qfalse; +} + /* * call-seq: * GC.enable -> true or false @@ -9120,15 +9130,10 @@ gc_stress_set_m(VALUE self, VALUE flag) * GC.enable #=> false * */ - -VALUE -rb_gc_enable(void) +static VALUE +gc_enable(VALUE _) { - rb_objspace_t *objspace = &rb_objspace; - int old = dont_gc; - - dont_gc = FALSE; - return old ? Qtrue : Qfalse; + return rb_gc_enable(); } VALUE @@ -9140,6 +9145,15 @@ rb_gc_disable_no_rest(void) return old ? Qtrue : Qfalse; } + +VALUE +rb_gc_disable(void) +{ + rb_objspace_t *objspace = &rb_objspace; + gc_rest(objspace); + return rb_gc_disable_no_rest(); +} + /* * call-seq: * GC.disable -> true or false @@ -9152,12 +9166,10 @@ rb_gc_disable_no_rest(void) * */ -VALUE -rb_gc_disable(void) +static VALUE +gc_disable(VALUE _) { - rb_objspace_t *objspace = &rb_objspace; - gc_rest(objspace); - return rb_gc_disable_no_rest(); + return rb_gc_disable(); } static int @@ -10794,7 +10806,7 @@ gc_prof_set_heap_info(rb_objspace_t *objspace) */ static VALUE -gc_profile_clear(void) +gc_profile_clear(VALUE _) { rb_objspace_t *objspace = &rb_objspace; void *p = objspace->profile.records; @@ -10859,7 +10871,7 @@ gc_profile_clear(void) */ static VALUE -gc_profile_record_get(void) +gc_profile_record_get(VALUE _) { VALUE prof; VALUE gc_profile = rb_ary_new(); @@ -11046,7 +11058,7 @@ gc_profile_dump_on(VALUE out, VALUE (*append)(VALUE, VALUE)) */ static VALUE -gc_profile_result(void) +gc_profile_result(VALUE _) { VALUE str = rb_str_buf_new(0); gc_profile_dump_on(str, rb_str_buf_append); @@ -11120,7 +11132,7 @@ gc_profile_enable_get(VALUE self) */ static VALUE -gc_profile_enable(void) +gc_profile_enable(VALUE _) { rb_objspace_t *objspace = &rb_objspace; objspace->profile.run = TRUE; @@ -11137,7 +11149,7 @@ gc_profile_enable(void) */ static VALUE -gc_profile_disable(void) +gc_profile_disable(VALUE _) { rb_objspace_t *objspace = &rb_objspace; @@ -11669,8 +11681,8 @@ Init_GC(void) rb_mGC = rb_define_module("GC"); rb_define_singleton_method(rb_mGC, "start", gc_start_internal, -1); - rb_define_singleton_method(rb_mGC, "enable", rb_gc_enable, 0); - rb_define_singleton_method(rb_mGC, "disable", rb_gc_disable, 0); + rb_define_singleton_method(rb_mGC, "enable", gc_enable, 0); + rb_define_singleton_method(rb_mGC, "disable", gc_disable, 0); rb_define_singleton_method(rb_mGC, "stress", gc_stress_get, 0); rb_define_singleton_method(rb_mGC, "stress=", gc_stress_set_m, 1); rb_define_singleton_method(rb_mGC, "count", gc_count, 0); diff --git a/hash.c b/hash.c index 4671adfd55..b61784af3a 100644 --- a/hash.c +++ b/hash.c @@ -4808,7 +4808,7 @@ rb_f_getenv(VALUE obj, VALUE name) * be returned when no block is given. */ static VALUE -env_fetch(int argc, VALUE *argv) +env_fetch(int argc, VALUE *argv, VALUE _) { VALUE key; long block_given; @@ -5138,12 +5138,6 @@ env_aset(VALUE nm, VALUE val) return val; } -/* - * call-seq: - * ENV.keys -> Array - * - * Returns every environment variable name in an Array - */ static VALUE env_keys(void) { @@ -5163,6 +5157,19 @@ env_keys(void) return ary; } +/* + * call-seq: + * ENV.keys -> Array + * + * Returns every environment variable name in an Array + */ + +static VALUE +env_f_keys(VALUE _) +{ + return env_keys(); +} + static VALUE rb_env_size(VALUE ehash, VALUE args, VALUE eobj) { @@ -5202,12 +5209,6 @@ env_each_key(VALUE ehash) return ehash; } -/* - * call-seq: - * ENV.values -> Array - * - * Returns every environment variable value as an Array - */ static VALUE env_values(void) { @@ -5227,6 +5228,19 @@ env_values(void) return ary; } +/* + * call-seq: + * ENV.values -> Array + * + * Returns every environment variable value as an Array + */ + +static VALUE +env_f_values(VALUE _) +{ + return env_values(); +} + /* * call-seq: * ENV.each_value { |value| block } -> Hash @@ -5354,7 +5368,7 @@ env_delete_if(VALUE ehash) * the given names. See also ENV.select. */ static VALUE -env_values_at(int argc, VALUE *argv) +env_values_at(int argc, VALUE *argv, VALUE _) { VALUE result; long i; @@ -5465,7 +5479,7 @@ env_keep_if(VALUE ehash) * ENV.slice("TERM","HOME") #=> {"TERM"=>"xterm-256color", "HOME"=>"/Users/rhc"} */ static VALUE -env_slice(int argc, VALUE *argv) +env_slice(int argc, VALUE *argv, VALUE _) { int i; VALUE key, value, result; @@ -5485,12 +5499,6 @@ env_slice(int argc, VALUE *argv) return result; } -/* - * call-seq: - * ENV.clear - * - * Removes every environment variable. - */ VALUE rb_env_clear(void) { @@ -5508,6 +5516,18 @@ rb_env_clear(void) return envtbl; } +/* + * call-seq: + * ENV.clear + * + * Removes every environment variable. + */ +static VALUE +env_clear(VALUE _) +{ + return rb_env_clear(); +} + /* * call-seq: * ENV.to_s -> "ENV" @@ -5515,7 +5535,7 @@ rb_env_clear(void) * Returns "ENV" */ static VALUE -env_to_s(void) +env_to_s(VALUE _) { return rb_usascii_str_new2("ENV"); } @@ -5527,7 +5547,7 @@ env_to_s(void) * Returns the contents of the environment as a String. */ static VALUE -env_inspect(void) +env_inspect(VALUE _) { char **env; VALUE str, i; @@ -5566,7 +5586,7 @@ env_inspect(void) * */ static VALUE -env_to_a(void) +env_to_a(VALUE _) { char **env; VALUE ary; @@ -5593,7 +5613,7 @@ env_to_a(void) * compatibility with Hash. */ static VALUE -env_none(void) +env_none(VALUE _) { return Qnil; } @@ -5606,7 +5626,7 @@ env_none(void) * Returns the number of environment variables. */ static VALUE -env_size(void) +env_size(VALUE _) { int i; char **env; @@ -5625,7 +5645,7 @@ env_size(void) * Returns true when there are no environment variables */ static VALUE -env_empty_p(void) +env_empty_p(VALUE _) { char **env; @@ -5782,13 +5802,6 @@ env_index(VALUE dmy, VALUE value) return env_key(dmy, value); } -/* - * call-seq: - * ENV.to_hash -> hash - * - * Creates a hash with a copy of the environment variables. - * - */ static VALUE env_to_hash(void) { @@ -5809,6 +5822,20 @@ env_to_hash(void) return hash; } +/* + * call-seq: + * ENV.to_hash -> hash + * + * Creates a hash with a copy of the environment variables. + * + */ + +static VALUE +env_f_to_hash(VALUE _) +{ + return env_to_hash(); +} + /* * call-seq: * ENV.to_h -> hash @@ -5818,7 +5845,7 @@ env_to_hash(void) * */ static VALUE -env_to_h(void) +env_to_h(VALUE _) { VALUE hash = env_to_hash(); if (rb_block_given_p()) { @@ -5836,7 +5863,7 @@ env_to_h(void) * environment. */ static VALUE -env_reject(void) +env_reject(VALUE _) { return rb_hash_delete_if(env_to_hash()); } @@ -5863,7 +5890,7 @@ env_freeze(VALUE self) * an Array. Returns +nil+ if when the environment is empty. */ static VALUE -env_shift(void) +env_shift(VALUE _) { char **env; VALUE result = Qnil; @@ -5890,7 +5917,7 @@ env_shift(void) * and values as names. */ static VALUE -env_invert(void) +env_invert(VALUE _) { return rb_hash_invert(env_to_hash()); } @@ -6203,7 +6230,7 @@ Init_Hash(void) rb_define_singleton_method(envtbl, "delete_if", env_delete_if, 0); rb_define_singleton_method(envtbl, "keep_if", env_keep_if, 0); rb_define_singleton_method(envtbl, "slice", env_slice, -1); - rb_define_singleton_method(envtbl, "clear", rb_env_clear, 0); + rb_define_singleton_method(envtbl, "clear", env_clear, 0); rb_define_singleton_method(envtbl, "reject", env_reject, 0); rb_define_singleton_method(envtbl, "reject!", env_reject_bang, 0); rb_define_singleton_method(envtbl, "select", env_select, 0); @@ -6225,8 +6252,8 @@ Init_Hash(void) rb_define_singleton_method(envtbl, "size", env_size, 0); rb_define_singleton_method(envtbl, "length", env_size, 0); rb_define_singleton_method(envtbl, "empty?", env_empty_p, 0); - rb_define_singleton_method(envtbl, "keys", env_keys, 0); - rb_define_singleton_method(envtbl, "values", env_values, 0); + rb_define_singleton_method(envtbl, "keys", env_f_keys, 0); + rb_define_singleton_method(envtbl, "values", env_f_values, 0); rb_define_singleton_method(envtbl, "values_at", env_values_at, -1); rb_define_singleton_method(envtbl, "include?", env_has_key, 1); rb_define_singleton_method(envtbl, "member?", env_has_key, 1); @@ -6234,7 +6261,7 @@ Init_Hash(void) rb_define_singleton_method(envtbl, "has_value?", env_has_value, 1); rb_define_singleton_method(envtbl, "key?", env_has_key, 1); rb_define_singleton_method(envtbl, "value?", env_has_value, 1); - rb_define_singleton_method(envtbl, "to_hash", env_to_hash, 0); + rb_define_singleton_method(envtbl, "to_hash", env_f_to_hash, 0); rb_define_singleton_method(envtbl, "to_h", env_to_h, 0); rb_define_singleton_method(envtbl, "assoc", env_assoc, 1); rb_define_singleton_method(envtbl, "rassoc", env_rassoc, 1); diff --git a/include/ruby/intern.h b/include/ruby/intern.h index ff13ff0f0e..f53864dcca 100644 --- a/include/ruby/intern.h +++ b/include/ruby/intern.h @@ -1127,6 +1127,47 @@ __attribute__((__unused__,__weakref__("rb_define_private_method"),__nonnull__(2, #define rb_define_private_method_choose_prototypem2(n) rb_define_method_if_constexpr((n)==-2,rb_define_private_methodm2,rb_define_private_method_choose_prototypem1(n)) #define rb_define_private_method_choose_prototypem3(n, f) rb_define_method_if_constexpr(rb_f_notimplement_p(f),rb_define_private_methodm3,rb_define_private_method_choose_prototypem2(n)) #define rb_define_private_method(klass, mid, func, arity) rb_define_private_method_choose_prototypem3((arity),(func))((klass),(mid),(func),(arity)); + +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_methodm3(VALUE,const char*,VALUE(*)(ANYARGS),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_methodm2(VALUE,const char*,VALUE(*)(VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_methodm1(VALUE,const char*,VALUE(*)(int,union __attribute__((__transparent_union__)){VALUE*x;const VALUE*y;},VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method0 (VALUE,const char*,VALUE(*)(VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method1 (VALUE,const char*,VALUE(*)(VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method2 (VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method3 (VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method4 (VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method5 (VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method6 (VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method7 (VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method8 (VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method9 (VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method10(VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method11(VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method12(VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method13(VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method14(VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); +__attribute__((__unused__,__weakref__("rb_define_singleton_method"),__nonnull__(2,3)))static void rb_define_singleton_method15(VALUE,const char*,VALUE(*)(VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE),int); + +#define rb_define_singleton_method_choose_prototype15(n) rb_define_method_if_constexpr((n)==15,rb_define_singleton_method15,rb_define_singleton_methodm3) +#define rb_define_singleton_method_choose_prototype14(n) rb_define_method_if_constexpr((n)==14,rb_define_singleton_method14,rb_define_singleton_method_choose_prototype15(n)) +#define rb_define_singleton_method_choose_prototype13(n) rb_define_method_if_constexpr((n)==13,rb_define_singleton_method13,rb_define_singleton_method_choose_prototype14(n)) +#define rb_define_singleton_method_choose_prototype12(n) rb_define_method_if_constexpr((n)==12,rb_define_singleton_method12,rb_define_singleton_method_choose_prototype13(n)) +#define rb_define_singleton_method_choose_prototype11(n) rb_define_method_if_constexpr((n)==11,rb_define_singleton_method11,rb_define_singleton_method_choose_prototype12(n)) +#define rb_define_singleton_method_choose_prototype10(n) rb_define_method_if_constexpr((n)==10,rb_define_singleton_method10,rb_define_singleton_method_choose_prototype11(n)) +#define rb_define_singleton_method_choose_prototype9(n) rb_define_method_if_constexpr((n)== 9,rb_define_singleton_method9, rb_define_singleton_method_choose_prototype10(n)) +#define rb_define_singleton_method_choose_prototype8(n) rb_define_method_if_constexpr((n)== 8,rb_define_singleton_method8, rb_define_singleton_method_choose_prototype9(n)) +#define rb_define_singleton_method_choose_prototype7(n) rb_define_method_if_constexpr((n)== 7,rb_define_singleton_method7, rb_define_singleton_method_choose_prototype8(n)) +#define rb_define_singleton_method_choose_prototype6(n) rb_define_method_if_constexpr((n)== 6,rb_define_singleton_method6, rb_define_singleton_method_choose_prototype7(n)) +#define rb_define_singleton_method_choose_prototype5(n) rb_define_method_if_constexpr((n)== 5,rb_define_singleton_method5, rb_define_singleton_method_choose_prototype6(n)) +#define rb_define_singleton_method_choose_prototype4(n) rb_define_method_if_constexpr((n)== 4,rb_define_singleton_method4, rb_define_singleton_method_choose_prototype5(n)) +#define rb_define_singleton_method_choose_prototype3(n) rb_define_method_if_constexpr((n)== 3,rb_define_singleton_method3, rb_define_singleton_method_choose_prototype4(n)) +#define rb_define_singleton_method_choose_prototype2(n) rb_define_method_if_constexpr((n)== 2,rb_define_singleton_method2, rb_define_singleton_method_choose_prototype3(n)) +#define rb_define_singleton_method_choose_prototype1(n) rb_define_method_if_constexpr((n)== 1,rb_define_singleton_method1, rb_define_singleton_method_choose_prototype2(n)) +#define rb_define_singleton_method_choose_prototype0(n) rb_define_method_if_constexpr((n)== 0,rb_define_singleton_method0, rb_define_singleton_method_choose_prototype1(n)) +#define rb_define_singleton_method_choose_prototypem1(n) rb_define_method_if_constexpr((n)==-1,rb_define_singleton_methodm1,rb_define_singleton_method_choose_prototype0(n)) +#define rb_define_singleton_method_choose_prototypem2(n) rb_define_method_if_constexpr((n)==-2,rb_define_singleton_methodm2,rb_define_singleton_method_choose_prototypem1(n)) +#define rb_define_singleton_method_choose_prototypem3(n, f) rb_define_method_if_constexpr(rb_f_notimplement_p(f),rb_define_singleton_methodm3,rb_define_singleton_method_choose_prototypem2(n)) +#define rb_define_singleton_method(klass, mid, func, arity) rb_define_singleton_method_choose_prototypem3((arity),(func))((klass),(mid),(func),(arity)); #endif #endif diff --git a/io.c b/io.c index 827903476e..6ae2ee5ff9 100644 --- a/io.c +++ b/io.c @@ -7042,7 +7042,7 @@ rb_io_s_open(int argc, VALUE *argv, VALUE klass) */ static VALUE -rb_io_s_sysopen(int argc, VALUE *argv) +rb_io_s_sysopen(int argc, VALUE *argv, VALUE _) { VALUE fname, vmode, vperm; VALUE intmode; diff --git a/random.c b/random.c index 9d903f15d2..07ad2361f5 100644 --- a/random.c +++ b/random.c @@ -93,14 +93,14 @@ typedef struct { static rb_random_t default_rand; static VALUE rand_init(struct MT *mt, VALUE vseed); -static VALUE random_seed(void); +static VALUE random_seed(VALUE); static rb_random_t * rand_start(rb_random_t *r) { struct MT *mt = &r->mt; if (!genrand_initialized(mt)) { - r->seed = rand_init(mt, random_seed()); + r->seed = rand_init(mt, random_seed(Qundef)); } return r; } @@ -261,7 +261,7 @@ random_init(int argc, VALUE *argv, VALUE obj) if (rb_check_arity(argc, 0, 1) == 0) { rb_check_frozen(obj); - vseed = random_seed(); + vseed = random_seed(obj); } else { vseed = argv[0]; @@ -498,7 +498,7 @@ make_seed_value(uint32_t *ptr, size_t len) * Random.new_seed #=> 115032730400174366788466674494640623225 */ static VALUE -random_seed(void) +random_seed(VALUE _) { VALUE v; uint32_t buf[DEFAULT_SEED_CNT+1]; @@ -691,7 +691,7 @@ rb_f_srand(int argc, VALUE *argv, VALUE obj) rb_random_t *r = &default_rand; if (rb_check_arity(argc, 0, 1) == 0) { - seed = random_seed(); + seed = random_seed(obj); } else { seed = rb_to_int(argv[0]); diff --git a/re.c b/re.c index d5f9a8792e..e61d9bc88c 100644 --- a/re.c +++ b/re.c @@ -3998,7 +3998,7 @@ match_setter(VALUE val, ID _x, VALUE *_y) */ static VALUE -rb_reg_s_last_match(int argc, VALUE *argv) +rb_reg_s_last_match(int argc, VALUE *argv, VALUE _) { if (rb_check_arity(argc, 0, 1) == 1) { VALUE match = rb_backref_get(); diff --git a/string.c b/string.c index 6ec0514ba4..d6ea7d6f91 100644 --- a/string.c +++ b/string.c @@ -11196,6 +11196,28 @@ rb_to_symbol(VALUE name) return rb_str_intern(name); } +/* + * call-seq: + * Symbol.all_symbols => array + * + * Returns an array of all the symbols currently in Ruby's symbol + * table. + * + * Symbol.all_symbols.size #=> 903 + * Symbol.all_symbols[1,20] #=> [:floor, :ARGV, :Binding, :symlink, + * :chown, :EOFError, :$;, :String, + * :LOCK_SH, :"setuid?", :$<, + * :default_proc, :compact, :extend, + * :Tms, :getwd, :$=, :ThreadGroup, + * :wait2, :$>] + */ + +static VALUE +sym_all_symbols(VALUE _) +{ + return rb_sym_all_symbols(); +} + /* * A String object holds and manipulates an arbitrary sequence of * bytes, typically representing characters. String objects may be created @@ -11382,7 +11404,7 @@ Init_String(void) rb_include_module(rb_cSymbol, rb_mComparable); rb_undef_alloc_func(rb_cSymbol); rb_undef_method(CLASS_OF(rb_cSymbol), "new"); - rb_define_singleton_method(rb_cSymbol, "all_symbols", rb_sym_all_symbols, 0); /* in symbol.c */ + rb_define_singleton_method(rb_cSymbol, "all_symbols", sym_all_symbols, 0); rb_define_method(rb_cSymbol, "==", sym_equal, 1); rb_define_method(rb_cSymbol, "===", sym_equal, 1); diff --git a/symbol.c b/symbol.c index 78681ec598..cf21cff0c1 100644 --- a/symbol.c +++ b/symbol.c @@ -843,22 +843,6 @@ symbols_i(st_data_t key, st_data_t value, st_data_t arg) } -/* - * call-seq: - * Symbol.all_symbols => array - * - * Returns an array of all the symbols currently in Ruby's symbol - * table. - * - * Symbol.all_symbols.size #=> 903 - * Symbol.all_symbols[1,20] #=> [:floor, :ARGV, :Binding, :symlink, - * :chown, :EOFError, :$;, :String, - * :LOCK_SH, :"setuid?", :$<, - * :default_proc, :compact, :extend, - * :Tms, :getwd, :$=, :ThreadGroup, - * :wait2, :$>] - */ - VALUE rb_sym_all_symbols(void) { diff --git a/thread.c b/thread.c index 752b8b0cd3..8d1ca95092 100644 --- a/thread.c +++ b/thread.c @@ -2494,7 +2494,7 @@ rb_thread_s_kill(VALUE obj, VALUE th) */ static VALUE -rb_thread_exit(void) +rb_thread_exit(VALUE _) { rb_thread_t *th = GET_THREAD(); return rb_thread_kill(th->self); @@ -2573,6 +2573,17 @@ rb_thread_run(VALUE thread) } +VALUE +rb_thread_stop(void) +{ + if (rb_thread_alone()) { + rb_raise(rb_eThreadError, + "stopping only thread\n\tnote: use sleep to stop forever"); + } + rb_thread_sleep_deadly(); + return Qnil; +} + /* * call-seq: * Thread.stop -> nil @@ -2588,19 +2599,34 @@ rb_thread_run(VALUE thread) * #=> "abc" */ -VALUE -rb_thread_stop(void) +static VALUE +thread_stop(VALUE _) { - if (rb_thread_alone()) { - rb_raise(rb_eThreadError, - "stopping only thread\n\tnote: use sleep to stop forever"); - } - rb_thread_sleep_deadly(); - return Qnil; + return rb_thread_stop(); } /********************************************************************/ +VALUE +rb_thread_list(void) +{ + VALUE ary = rb_ary_new(); + rb_vm_t *vm = GET_THREAD()->vm; + rb_thread_t *th = 0; + + list_for_each(&vm->living_threads, th, vmlt_node) { + switch (th->status) { + case THREAD_RUNNABLE: + case THREAD_STOPPED: + case THREAD_STOPPED_FOREVER: + rb_ary_push(ary, th->self); + default: + break; + } + } + return ary; +} + /* * call-seq: * Thread.list -> array @@ -2621,24 +2647,10 @@ rb_thread_stop(void) * # */ -VALUE -rb_thread_list(void) +static VALUE +thread_list(VALUE _) { - VALUE ary = rb_ary_new(); - rb_vm_t *vm = GET_THREAD()->vm; - rb_thread_t *th = 0; - - list_for_each(&vm->living_threads, th, vmlt_node) { - switch (th->status) { - case THREAD_RUNNABLE: - case THREAD_STOPPED: - case THREAD_STOPPED_FOREVER: - rb_ary_push(ary, th->self); - default: - break; - } - } - return ary; + return rb_thread_list(); } VALUE @@ -2703,7 +2715,7 @@ rb_thread_s_main(VALUE klass) */ static VALUE -rb_thread_s_abort_exc(void) +rb_thread_s_abort_exc(VALUE _) { return GET_THREAD()->vm->thread_abort_on_exception ? Qtrue : Qfalse; } @@ -2833,7 +2845,7 @@ rb_thread_abort_exc_set(VALUE thread, VALUE val) */ static VALUE -rb_thread_s_report_exc(void) +rb_thread_s_report_exc(VALUE _) { return GET_THREAD()->vm->thread_report_on_exception ? Qtrue : Qfalse; } @@ -5132,11 +5144,11 @@ Init_Thread(void) rb_define_singleton_method(rb_cThread, "fork", thread_start, -2); rb_define_singleton_method(rb_cThread, "main", rb_thread_s_main, 0); rb_define_singleton_method(rb_cThread, "current", thread_s_current, 0); - rb_define_singleton_method(rb_cThread, "stop", rb_thread_stop, 0); + rb_define_singleton_method(rb_cThread, "stop", thread_stop, 0); rb_define_singleton_method(rb_cThread, "kill", rb_thread_s_kill, 1); rb_define_singleton_method(rb_cThread, "exit", rb_thread_exit, 0); rb_define_singleton_method(rb_cThread, "pass", thread_s_pass, 0); - rb_define_singleton_method(rb_cThread, "list", rb_thread_list, 0); + rb_define_singleton_method(rb_cThread, "list", thread_list, 0); rb_define_singleton_method(rb_cThread, "abort_on_exception", rb_thread_s_abort_exc, 0); rb_define_singleton_method(rb_cThread, "abort_on_exception=", rb_thread_s_abort_exc_set, 1); rb_define_singleton_method(rb_cThread, "report_on_exception", rb_thread_s_report_exc, 0); diff --git a/vm.c b/vm.c index 2097dde434..157a43967e 100644 --- a/vm.c +++ b/vm.c @@ -2827,7 +2827,7 @@ core_hash_merge_kwd(VALUE hash, VALUE kw) /* Returns true if JIT is enabled */ static VALUE -mjit_enabled_p(void) +mjit_enabled_p(VALUE _) { return mjit_enabled ? Qtrue : Qfalse; } @@ -2849,6 +2849,12 @@ mjit_pause_m(int argc, VALUE *argv, RB_UNUSED_VAR(VALUE self)) return mjit_pause(RTEST(wait)); } +static VALUE +mjit_resume_m(VALUE _) +{ + return mjit_resume(); +} + extern VALUE *rb_gc_stack_start; extern size_t rb_gc_stack_maxsize; @@ -2974,7 +2980,7 @@ Init_VM(void) mjit = rb_define_module_under(rb_cRubyVM, "MJIT"); rb_define_singleton_method(mjit, "enabled?", mjit_enabled_p, 0); rb_define_singleton_method(mjit, "pause", mjit_pause_m, -1); - rb_define_singleton_method(mjit, "resume", mjit_resume, 0); + rb_define_singleton_method(mjit, "resume", mjit_resume_m, 0); /* * Document-class: Thread