summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author卜部昌平 <shyouhei@ruby-lang.org>2019-11-18 12:13:08 +0900
committer卜部昌平 <shyouhei@ruby-lang.org>2019-11-19 12:36:19 +0900
commit0e8219f591f3f17cb7ee361e8a60dbef08145883 (patch)
tree89704f4d90521cf52ef1befc5e87429f8a9d5da3
parent78e266da1dede1c81e634982e76a129c5720d80e (diff)
make functions static
These functions are used from within a compilation unit so we can make them static, for better binary size. This changeset reduces the size of generated ruby binary from 26,590,128 bytes to 26,584,472 bytes on my macihne.
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/2682
-rw-r--r--array.c2
-rw-r--r--bignum.c4
-rw-r--r--compile.c2
-rw-r--r--error.c10
-rw-r--r--gc.c6
-rw-r--r--hash.c8
-rw-r--r--internal.h18
-rw-r--r--iseq.c4
-rw-r--r--iseq.h2
-rw-r--r--math.c4
-rw-r--r--method.h1
-rw-r--r--numeric.c7
-rw-r--r--vm_args.c3
-rw-r--r--vm_core.h4
-rw-r--r--vm_eval.c4
-rw-r--r--vm_method.c1
16 files changed, 38 insertions, 42 deletions
diff --git a/array.c b/array.c
index e3bbef6efc..28bd8c866b 100644
--- a/array.c
+++ b/array.c
@@ -1532,6 +1532,8 @@ rb_ary_subseq(VALUE ary, long beg, long len)
return ary_make_partial(ary, klass, beg, len);
}
+static VALUE rb_ary_aref2(VALUE ary, VALUE b, VALUE e);
+
/*
* call-seq:
* ary[index] -> obj or nil
diff --git a/bignum.c b/bignum.c
index 05392325b3..4569183e45 100644
--- a/bignum.c
+++ b/bignum.c
@@ -3990,6 +3990,8 @@ str2big_gmp(
}
#endif
+static VALUE rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base);
+
/*
* Parse +str+ as Ruby Integer, i.e., underscores, 0d and 0b prefixes.
*
@@ -4233,7 +4235,7 @@ rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits,
return bignorm(z);
}
-VALUE
+static VALUE
rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base)
{
return rb_int_parse_cstr(str, len, endp, NULL, base,
diff --git a/compile.c b/compile.c
index 3cf5bb6680..b73b9854f4 100644
--- a/compile.c
+++ b/compile.c
@@ -755,7 +755,7 @@ rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node)
return iseq_setup(iseq, ret);
}
-int
+static int
rb_iseq_translate_threaded_code(rb_iseq_t *iseq)
{
#if OPT_DIRECT_THREADED_CODE || OPT_CALL_THREADED_CODE
diff --git a/error.c b/error.c
index 0859036615..13d191007b 100644
--- a/error.c
+++ b/error.c
@@ -159,7 +159,7 @@ rb_warning_s_warn(VALUE mod, VALUE str)
* printing the warning to $stderr.
*/
-VALUE
+static VALUE
rb_warning_warn(VALUE mod, VALUE str)
{
return rb_funcallv(mod, id_warn, 1, &str);
@@ -1169,6 +1169,8 @@ exc_backtrace(VALUE exc)
return obj;
}
+static VALUE rb_check_backtrace(VALUE);
+
VALUE
rb_get_backtrace(VALUE exc)
{
@@ -1212,7 +1214,7 @@ exc_backtrace_locations(VALUE exc)
return obj;
}
-VALUE
+static VALUE
rb_check_backtrace(VALUE bt)
{
long i;
@@ -1506,6 +1508,8 @@ name_err_initialize(int argc, VALUE *argv, VALUE self)
return self;
}
+static VALUE rb_name_err_mesg_new(VALUE mesg, VALUE recv, VALUE method);
+
static VALUE
name_err_init(VALUE exc, VALUE mesg, VALUE recv, VALUE method)
{
@@ -1636,7 +1640,7 @@ static const rb_data_type_t name_err_mesg_data_type = {
};
/* :nodoc: */
-VALUE
+static VALUE
rb_name_err_mesg_new(VALUE mesg, VALUE recv, VALUE method)
{
VALUE result = TypedData_Wrap_Struct(rb_cNameErrorMesg, &name_err_mesg_data_type, 0);
diff --git a/gc.c b/gc.c
index 7803bace5b..899ca6bf32 100644
--- a/gc.c
+++ b/gc.c
@@ -1747,6 +1747,8 @@ heap_unlink_page(rb_objspace_t *objspace, rb_heap_t *heap, struct heap_page *pag
heap->total_slots -= page->total_slots;
}
+static void rb_aligned_free(void *ptr);
+
static void
heap_page_free(rb_objspace_t *objspace, struct heap_page *page)
{
@@ -2302,7 +2304,7 @@ rb_imemo_tmpbuf_new(VALUE v1, VALUE v2, VALUE v3, VALUE v0)
return newobj_of(v0, flags, v1, v2, v3, FALSE);
}
-VALUE
+static VALUE
rb_imemo_tmpbuf_auto_free_maybe_mark_buffer(void *buf, size_t cnt)
{
return rb_imemo_tmpbuf_new((VALUE)buf, 0, (VALUE)cnt, 0);
@@ -9624,7 +9626,7 @@ rb_aligned_malloc(size_t alignment, size_t size)
return res;
}
-void
+static void
rb_aligned_free(void *ptr)
{
#if defined __MINGW32__
diff --git a/hash.c b/hash.c
index ab9af762a9..84ab343091 100644
--- a/hash.c
+++ b/hash.c
@@ -146,7 +146,7 @@ rb_hash(VALUE obj)
return hval;
}
-long rb_objid_hash(st_index_t index);
+static long rb_objid_hash(st_index_t index);
static st_index_t
dbl_to_index(double d)
@@ -264,7 +264,7 @@ key64_hash(uint64_t key, uint32_t seed)
/* Should cast down the result for each purpose */
#define st_index_hash(index) key64_hash(rb_hash_start(index), prime2)
-long
+static long
rb_objid_hash(st_index_t index)
{
return (long)st_index_hash(index);
@@ -4153,6 +4153,8 @@ rb_hash_compact_bang(VALUE hash)
return Qnil;
}
+static st_table *rb_init_identtable_with_size(st_index_t size);
+
/*
* call-seq:
* hsh.compare_by_identity -> hsh
@@ -4227,7 +4229,7 @@ rb_init_identtable(void)
return st_init_table(&identhash);
}
-st_table *
+static st_table *
rb_init_identtable_with_size(st_index_t size)
{
return st_init_table_with_size(&identhash, size);
diff --git a/internal.h b/internal.h
index 3cfb5a40ec..79c4fd6991 100644
--- a/internal.h
+++ b/internal.h
@@ -1206,7 +1206,6 @@ typedef struct rb_imemo_tmpbuf_struct {
} rb_imemo_tmpbuf_t;
#define rb_imemo_tmpbuf_auto_free_pointer() rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0)
-VALUE rb_imemo_tmpbuf_auto_free_maybe_mark_buffer(void *buf, size_t cnt);
rb_imemo_tmpbuf_t *rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt);
#define RB_IMEMO_TMPBUF_PTR(v) \
@@ -1364,7 +1363,6 @@ void rb_ary_delete_same(VALUE, VALUE);
VALUE rb_ary_tmp_new_fill(long capa);
VALUE rb_ary_at(VALUE, VALUE);
VALUE rb_ary_aref1(VALUE ary, VALUE i);
-VALUE rb_ary_aref2(VALUE ary, VALUE b, VALUE e);
size_t rb_ary_memsize(VALUE);
VALUE rb_to_array_type(VALUE obj);
VALUE rb_check_to_array(VALUE ary);
@@ -1425,7 +1423,6 @@ VALUE rb_big_even_p(VALUE);
size_t rb_big_size(VALUE);
VALUE rb_integer_float_cmp(VALUE x, VALUE y);
VALUE rb_integer_float_eq(VALUE x, VALUE y);
-VALUE rb_cstr_parse_inum(const char *str, ssize_t len, char **endp, int base);
VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception);
VALUE rb_big_comp(VALUE x);
VALUE rb_big_aref(VALUE x, VALUE y);
@@ -1516,7 +1513,6 @@ extern VALUE rb_eEAGAIN;
extern VALUE rb_eEWOULDBLOCK;
extern VALUE rb_eEINPROGRESS;
void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args);
-VALUE rb_check_backtrace(VALUE);
NORETURN(void rb_async_bug_errno(const char *,int));
const char *rb_builtin_type_name(int t);
const char *rb_builtin_class_name(VALUE x);
@@ -1541,7 +1537,6 @@ VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int
VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name);
#define rb_key_err_raise(mesg, recv, name) \
rb_exc_raise(rb_key_err_new(mesg, recv, name))
-VALUE rb_warning_warn(VALUE mod, VALUE str);
PRINTF_ARGS(VALUE rb_warning_string(const char *fmt, ...), 1, 2);
NORETURN(void rb_vraise(VALUE, const char *, va_list));
@@ -1635,7 +1630,6 @@ __attribute__((__alloc_align__(1)))
#endif
#endif
void *rb_aligned_malloc(size_t, size_t) RUBY_ATTR_MALLOC RUBY_ATTR_ALLOC_SIZE((2));
-void rb_aligned_free(void *);
size_t rb_size_mul_or_raise(size_t, size_t, VALUE); /* used in compile.c */
size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE); /* used in iseq.h */
@@ -1657,10 +1651,8 @@ VALUE rb_hash_new_with_size(st_index_t size);
VALUE rb_hash_has_key(VALUE hash, VALUE key);
VALUE rb_hash_default_value(VALUE hash, VALUE key);
VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc);
-long rb_objid_hash(st_index_t index);
long rb_dbl_long_hash(double d);
st_table *rb_init_identtable(void);
-st_table *rb_init_identtable_with_size(st_index_t size);
VALUE rb_hash_compare_by_id_p(VALUE hash);
VALUE rb_to_hash_type(VALUE obj);
VALUE rb_hash_key_str(VALUE);
@@ -1714,7 +1706,6 @@ VALUE rb_math_hypot(VALUE, VALUE);
VALUE rb_math_log(int argc, const VALUE *argv);
VALUE rb_math_sin(VALUE);
VALUE rb_math_sinh(VALUE);
-VALUE rb_math_sqrt(VALUE);
/* mjit.c */
@@ -1768,7 +1759,6 @@ int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endles
double ruby_float_mod(double x, double y);
int rb_num_negative_p(VALUE);
VALUE rb_int_succ(VALUE num);
-VALUE rb_int_pred(VALUE num);
VALUE rb_int_uminus(VALUE num);
VALUE rb_float_uminus(VALUE num);
VALUE rb_int_plus(VALUE x, VALUE y);
@@ -1779,9 +1769,7 @@ VALUE rb_float_mul(VALUE x, VALUE y);
VALUE rb_float_div(VALUE x, VALUE y);
VALUE rb_int_idiv(VALUE x, VALUE y);
VALUE rb_int_modulo(VALUE x, VALUE y);
-VALUE rb_int_round(VALUE num, int ndigits, enum ruby_num_rounding_mode mode);
VALUE rb_int2str(VALUE num, int base);
-VALUE rb_dbl_hash(double d);
VALUE rb_fix_plus(VALUE x, VALUE y);
VALUE rb_fix_aref(VALUE fix, VALUE idx);
VALUE rb_int_gt(VALUE x, VALUE y);
@@ -2280,7 +2268,6 @@ VALUE rb_check_funcall_with_hook_kw(VALUE recv, ID mid, int argc, const VALUE *a
rb_check_funcall_hook *hook, VALUE arg, int kw_splat);
const char *rb_type_str(enum ruby_value_type type);
VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE);
-VALUE rb_check_funcall_default_kw(VALUE, ID, int, const VALUE *, VALUE, int);
VALUE rb_yield_1(VALUE val);
VALUE rb_yield_force_blockarg(VALUE values);
VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
@@ -2403,11 +2390,6 @@ const char *rb_objspace_data_type_name(VALUE obj);
/* Temporary. This API will be removed (renamed). */
VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
-/* array.c (export) */
-void rb_ary_detransient(VALUE a);
-VALUE *rb_ary_ptr_use_start(VALUE ary);
-void rb_ary_ptr_use_end(VALUE ary);
-
/* bignum.c (export) */
VALUE rb_big_mul_normal(VALUE x, VALUE y);
VALUE rb_big_mul_balance(VALUE x, VALUE y);
diff --git a/iseq.c b/iseq.c
index b7443a7531..427739859b 100644
--- a/iseq.c
+++ b/iseq.c
@@ -690,7 +690,7 @@ set_compile_option_from_hash(rb_compile_option_t *option, VALUE opt)
#undef SET_COMPILE_OPTION_NUM
}
-void
+static void
rb_iseq_make_compile_option(rb_compile_option_t *option, VALUE opt)
{
Check_Type(opt, T_HASH);
@@ -963,7 +963,7 @@ rb_iseq_load(VALUE data, VALUE parent, VALUE opt)
return iseq_load(data, RTEST(parent) ? (rb_iseq_t *)parent : NULL, opt);
}
-rb_iseq_t *
+static rb_iseq_t *
rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE realpath, VALUE line, VALUE opt)
{
rb_iseq_t *iseq = NULL;
diff --git a/iseq.h b/iseq.h
index 9e19d090f1..3701c320be 100644
--- a/iseq.h
+++ b/iseq.h
@@ -172,7 +172,6 @@ RUBY_SYMBOL_EXPORT_BEGIN
/* compile.c */
VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node);
VALUE rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func * ifunc);
-int rb_iseq_translate_threaded_code(rb_iseq_t *iseq);
VALUE *rb_iseq_original_iseq(const rb_iseq_t *iseq);
void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc,
VALUE locals, VALUE args,
@@ -303,7 +302,6 @@ enum defined_type {
};
VALUE rb_iseq_defined_string(enum defined_type type);
-void rb_iseq_make_compile_option(struct rb_compile_option_struct *option, VALUE opt);
/* vm.c */
VALUE rb_iseq_local_variables(const rb_iseq_t *iseq);
diff --git a/math.c b/math.c
index 57dc2fcaf0..b28cabd881 100644
--- a/math.c
+++ b/math.c
@@ -573,6 +573,8 @@ math_log10(VALUE unused_obj, VALUE x)
return DBL2NUM(log10(d) + numbits * log10(2)); /* log10(d * 2 ** numbits) */
}
+static VALUE rb_math_sqrt(VALUE x);
+
/*
* call-seq:
* Math.sqrt(x) -> Float
@@ -630,7 +632,7 @@ f_signbit(VALUE x)
return f_negative_p(x);
}
-VALUE
+static VALUE
rb_math_sqrt(VALUE x)
{
double d;
diff --git a/method.h b/method.h
index 806790ffb8..14ffecc398 100644
--- a/method.h
+++ b/method.h
@@ -202,7 +202,6 @@ const rb_method_entry_t *rb_method_entry_with_refinements(VALUE klass, ID id, VA
const rb_method_entry_t *rb_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class);
const rb_method_entry_t *rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me);
RUBY_SYMBOL_EXPORT_BEGIN
-const rb_callable_method_entry_t *rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me);
const rb_method_entry_t *rb_resolve_me_location(const rb_method_entry_t *, VALUE[5]);
RUBY_SYMBOL_EXPORT_END
diff --git a/numeric.c b/numeric.c
index 87d9aeef54..fa8961652b 100644
--- a/numeric.c
+++ b/numeric.c
@@ -1404,6 +1404,7 @@ rb_float_equal(VALUE x, VALUE y)
}
#define flo_eq rb_float_equal
+static VALUE rb_dbl_hash(double d);
/*
* call-seq:
@@ -1420,7 +1421,7 @@ flo_hash(VALUE num)
return rb_dbl_hash(RFLOAT_VALUE(num));
}
-VALUE
+static VALUE
rb_dbl_hash(double d)
{
return LONG2FIX(rb_dbl_long_hash(d));
@@ -2099,7 +2100,7 @@ int_half_p_half_down(VALUE num, VALUE n, VALUE f)
/*
* Assumes num is an Integer, ndigits <= 0
*/
-VALUE
+static VALUE
rb_int_round(VALUE num, int ndigits, enum ruby_num_rounding_mode mode)
{
VALUE n, f, h, r;
@@ -3342,7 +3343,7 @@ rb_int_succ(VALUE num)
* (-1).pred #=> -2
*/
-VALUE
+static VALUE
rb_int_pred(VALUE num)
{
if (FIXNUM_P(num)) {
diff --git a/vm_args.c b/vm_args.c
index 96fce15d62..d0b44c7439 100644
--- a/vm_args.c
+++ b/vm_args.c
@@ -14,6 +14,9 @@ NORETURN(static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq
VALUE rb_keyword_error_new(const char *error, VALUE keys); /* class.c */
static VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv,
enum method_missing_reason call_status, int kw_splat);
+#if !defined(_MSC_VER) || !defined(MJIT_HEADER)
+MJIT_FUNC_EXPORTED const rb_callable_method_entry_t *rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me);
+#endif
struct args_info {
/* basic args info */
diff --git a/vm_core.h b/vm_core.h
index 0946928228..b0787aaa7a 100644
--- a/vm_core.h
+++ b/vm_core.h
@@ -1027,9 +1027,6 @@ rb_iseq_t *rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_call
VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
-/* src -> iseq */
-rb_iseq_t *rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE realpath, VALUE line, VALUE opt);
-
VALUE rb_iseq_disasm(const rb_iseq_t *iseq);
int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
@@ -1708,7 +1705,6 @@ typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
rb_control_frame_t *rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
int rb_vm_get_sourceline(const rb_control_frame_t *);
-VALUE rb_name_err_mesg_new(VALUE mesg, VALUE recv, VALUE method);
void rb_vm_stack_to_heap(rb_execution_context_t *ec);
void ruby_thread_init_stack(rb_thread_t *th);
int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
diff --git a/vm_eval.c b/vm_eval.c
index c3f12d7836..1f3042dcfc 100644
--- a/vm_eval.c
+++ b/vm_eval.c
@@ -496,6 +496,8 @@ check_funcall_missing(rb_execution_context_t *ec, VALUE klass, VALUE recv, ID mi
return ret;
}
+static VALUE rb_check_funcall_default_kw(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE def, int kw_splat);
+
VALUE
rb_check_funcall_kw(VALUE recv, ID mid, int argc, const VALUE *argv, int kw_splat)
{
@@ -508,7 +510,7 @@ rb_check_funcall(VALUE recv, ID mid, int argc, const VALUE *argv)
return rb_check_funcall_default_kw(recv, mid, argc, argv, Qundef, RB_NO_KEYWORDS);
}
-VALUE
+static VALUE
rb_check_funcall_default_kw(VALUE recv, ID mid, int argc, const VALUE *argv, VALUE def, int kw_splat)
{
VALUE klass = CLASS_OF(recv);
diff --git a/vm_method.c b/vm_method.c
index 311a66993a..5637251192 100644
--- a/vm_method.c
+++ b/vm_method.c
@@ -961,6 +961,7 @@ rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me)
return resolve_refined_method(refinements, me, NULL);
}
+MJIT_FUNC_EXPORTED
const rb_callable_method_entry_t *
rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me)
{