diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-06-20 12:49:46 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-06-20 12:49:46 +0900 |
| commit | 49ae2a69f2c3acbb952406768320401cf1769425 (patch) | |
| tree | fd0b49d898327a1de29e143fb2c68e6991cf710d | |
| parent | 2ffb77586a8ce6f325d2981e2ad88cc9e62ae39b (diff) | |
| download | mruby-49ae2a69f2c3acbb952406768320401cf1769425.tar.gz mruby-49ae2a69f2c3acbb952406768320401cf1769425.zip | |
Add `mrb_get_arg1()` that retrieves single (and only) argument.
`mrb_get_arg1()` raises `ArgumentError` if the method does not receive one
argument.
And replaces all `mrb_get_args(mrb, "o", &arg)` by the new function.
| -rw-r--r-- | include/mruby.h | 13 | ||||
| -rw-r--r-- | mrbgems/mruby-array-ext/src/array.c | 10 | ||||
| -rw-r--r-- | mrbgems/mruby-complex/src/complex.c | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-fiber/src/fiber.c | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-inline-struct/test/inline.c | 7 | ||||
| -rw-r--r-- | mrbgems/mruby-io/src/file.c | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-io/src/file_test.c | 35 | ||||
| -rw-r--r-- | mrbgems/mruby-io/src/io.c | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-kernel-ext/src/kernel.c | 14 | ||||
| -rw-r--r-- | mrbgems/mruby-method/src/method.c | 7 | ||||
| -rw-r--r-- | mrbgems/mruby-print/src/print.c | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-range-ext/src/range.c | 4 | ||||
| -rw-r--r-- | mrbgems/mruby-string-ext/src/string.c | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-struct/src/struct.c | 16 | ||||
| -rw-r--r-- | mrbgems/mruby-time/src/time.c | 15 | ||||
| -rw-r--r-- | src/array.c | 12 | ||||
| -rw-r--r-- | src/class.c | 36 | ||||
| -rw-r--r-- | src/error.c | 3 | ||||
| -rw-r--r-- | src/hash.c | 21 | ||||
| -rw-r--r-- | src/kernel.c | 9 | ||||
| -rw-r--r-- | src/numeric.c | 87 | ||||
| -rw-r--r-- | src/proc.c | 3 | ||||
| -rw-r--r-- | src/range.c | 16 | ||||
| -rw-r--r-- | src/string.c | 10 | ||||
| -rw-r--r-- | src/symbol.c | 3 |
25 files changed, 130 insertions, 209 deletions
diff --git a/include/mruby.h b/include/mruby.h index fef4a0d47..5aba2934a 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -959,8 +959,21 @@ mrb_get_mid(mrb_state *mrb) /* get method symbol */ */ MRB_API mrb_int mrb_get_argc(mrb_state *mrb); +/** + * Retrieve an array of arguments from mrb_state. + * + * Correctly handles *splat arguments. + */ MRB_API mrb_value* mrb_get_argv(mrb_state *mrb); +/** + * Retrieve the first and only argument from mrb_state. + * Raises ArgumentError unless the number of arguments is exactly one. + * + * Correctly handles *splat arguments. + */ +MRB_API mrb_value mrb_get_arg1(mrb_state *mrb); + /* `strlen` for character string literals (use with caution or `strlen` instead) Adjacent string literals are concatenated in C/C++ in translation phase 6. If `lit` is not one, the compiler will report a syntax error: diff --git a/mrbgems/mruby-array-ext/src/array.c b/mrbgems/mruby-array-ext/src/array.c index ab6d99133..0cb61b2ab 100644 --- a/mrbgems/mruby-array-ext/src/array.c +++ b/mrbgems/mruby-array-ext/src/array.c @@ -28,9 +28,8 @@ static mrb_value mrb_ary_assoc(mrb_state *mrb, mrb_value ary) { mrb_int i; - mrb_value v, k; - - mrb_get_args(mrb, "o", &k); + mrb_value v; + mrb_value k = mrb_get_arg1(mrb); for (i = 0; i < RARRAY_LEN(ary); ++i) { v = mrb_check_array_type(mrb, RARRAY_PTR(ary)[i]); @@ -59,9 +58,8 @@ static mrb_value mrb_ary_rassoc(mrb_state *mrb, mrb_value ary) { mrb_int i; - mrb_value v, value; - - mrb_get_args(mrb, "o", &value); + mrb_value v; + mrb_value value = mrb_get_arg1(mrb); for (i = 0; i < RARRAY_LEN(ary); ++i) { v = RARRAY_PTR(ary)[i]; diff --git a/mrbgems/mruby-complex/src/complex.c b/mrbgems/mruby-complex/src/complex.c index 10fa42a2c..0432da633 100644 --- a/mrbgems/mruby-complex/src/complex.c +++ b/mrbgems/mruby-complex/src/complex.c @@ -174,7 +174,7 @@ div_pair(struct float_pair *q, struct float_pair const *a, static mrb_value complex_div(mrb_state *mrb, mrb_value self) { - mrb_value rhs; + mrb_value rhs = mrb_get_arg1(mrb); struct mrb_complex *a, *b; struct float_pair ar, ai, br, bi; struct float_pair br2, bi2; @@ -183,7 +183,6 @@ complex_div(mrb_state *mrb, mrb_value self) struct float_pair ai_br, ar_bi; struct float_pair zr, zi; - mrb_get_args(mrb, "o", &rhs); a = complex_ptr(mrb, self); b = complex_ptr(mrb, rhs); diff --git a/mrbgems/mruby-fiber/src/fiber.c b/mrbgems/mruby-fiber/src/fiber.c index 3c17b59dd..00ee7c223 100644 --- a/mrbgems/mruby-fiber/src/fiber.c +++ b/mrbgems/mruby-fiber/src/fiber.c @@ -291,8 +291,7 @@ mrb_fiber_alive_p(mrb_state *mrb, mrb_value self) static mrb_value fiber_eq(mrb_state *mrb, mrb_value self) { - mrb_value other; - mrb_get_args(mrb, "o", &other); + mrb_value other = mrb_get_arg1(mrb); if (!mrb_fiber_p(other)) { return mrb_false_value(); diff --git a/mrbgems/mruby-inline-struct/test/inline.c b/mrbgems/mruby-inline-struct/test/inline.c index 51804ae31..5d307dcab 100644 --- a/mrbgems/mruby-inline-struct/test/inline.c +++ b/mrbgems/mruby-inline-struct/test/inline.c @@ -8,8 +8,7 @@ istruct_test_initialize(mrb_state *mrb, mrb_value self) { char *string = (char*)mrb_istruct_ptr(self); mrb_int size = mrb_istruct_size(); - mrb_value object; - mrb_get_args(mrb, "o", &object); + mrb_value object = mrb_get_arg1(mrb); if (mrb_fixnum_p(object)) { strncpy(string, "fixnum", size-1); @@ -45,8 +44,8 @@ istruct_test_length(mrb_state *mrb, mrb_value self) static mrb_value istruct_test_test_receive(mrb_state *mrb, mrb_value self) { - mrb_value object; - mrb_get_args(mrb, "o", &object); + mrb_value object = mrb_get_arg1(mrb); + if (mrb_obj_class(mrb, object) != mrb_class_get(mrb, "InlineStructTest")) { mrb_raise(mrb, E_TYPE_ERROR, "Expected InlineStructTest"); diff --git a/mrbgems/mruby-io/src/file.c b/mrbgems/mruby-io/src/file.c index dd65e2da9..6c99300d8 100644 --- a/mrbgems/mruby-io/src/file.c +++ b/mrbgems/mruby-io/src/file.c @@ -492,10 +492,9 @@ mrb_file_truncate(mrb_state *mrb, mrb_value self) { int fd; mrb_int length; - mrb_value lenv; + mrb_value lenv = mrb_get_arg1(mrb); fd = mrb_io_fileno(mrb, self); - mrb_get_args(mrb, "o", &lenv); length = mrb_int(mrb, lenv); if (mrb_ftruncate(fd, length) != 0) { mrb_raise(mrb, E_IO_ERROR, "ftruncate failed"); diff --git a/mrbgems/mruby-io/src/file_test.c b/mrbgems/mruby-io/src/file_test.c index 19fd5739b..b7a28f4d3 100644 --- a/mrbgems/mruby-io/src/file_test.c +++ b/mrbgems/mruby-io/src/file_test.c @@ -93,9 +93,7 @@ mrb_filetest_s_directory_p(mrb_state *mrb, mrb_value klass) #endif struct stat st; - mrb_value obj; - - mrb_get_args(mrb, "o", &obj); + mrb_value obj = mrb_get_arg1(mrb); if (mrb_stat(mrb, obj, &st) < 0) return mrb_false_value(); @@ -124,9 +122,7 @@ mrb_filetest_s_pipe_p(mrb_state *mrb, mrb_value klass) # endif struct stat st; - mrb_value obj; - - mrb_get_args(mrb, "o", &obj); + mrb_value obj = mrb_get_arg1(mrb); if (mrb_stat(mrb, obj, &st) < 0) return mrb_false_value(); @@ -167,9 +163,7 @@ mrb_filetest_s_symlink_p(mrb_state *mrb, mrb_value klass) #ifdef S_ISLNK struct stat st; - mrb_value obj; - - mrb_get_args(mrb, "o", &obj); + mrb_value obj = mrb_get_arg1(mrb); if (mrb_lstat(mrb, obj, &st) == -1) return mrb_false_value(); @@ -210,9 +204,7 @@ mrb_filetest_s_socket_p(mrb_state *mrb, mrb_value klass) #ifdef S_ISSOCK struct stat st; - mrb_value obj; - - mrb_get_args(mrb, "o", &obj); + mrb_value obj = mrb_get_arg1(mrb); if (mrb_stat(mrb, obj, &st) < 0) return mrb_false_value(); @@ -236,9 +228,8 @@ static mrb_value mrb_filetest_s_exist_p(mrb_state *mrb, mrb_value klass) { struct stat st; - mrb_value obj; + mrb_value obj = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &obj); if (mrb_stat(mrb, obj, &st) < 0) return mrb_false_value(); @@ -261,9 +252,7 @@ mrb_filetest_s_file_p(mrb_state *mrb, mrb_value klass) #endif struct stat st; - mrb_value obj; - - mrb_get_args(mrb, "o", &obj); + mrb_value obj = mrb_get_arg1(mrb); if (mrb_stat(mrb, obj, &st) < 0) return mrb_false_value(); @@ -285,9 +274,7 @@ static mrb_value mrb_filetest_s_zero_p(mrb_state *mrb, mrb_value klass) { struct stat st; - mrb_value obj; - - mrb_get_args(mrb, "o", &obj); + mrb_value obj = mrb_get_arg1(mrb); if (mrb_stat(mrb, obj, &st) < 0) return mrb_false_value(); @@ -310,9 +297,7 @@ static mrb_value mrb_filetest_s_size(mrb_state *mrb, mrb_value klass) { struct stat st; - mrb_value obj; - - mrb_get_args(mrb, "o", &obj); + mrb_value obj = mrb_get_arg1(mrb); if (mrb_stat(mrb, obj, &st) < 0) mrb_sys_fail(mrb, "mrb_stat"); @@ -332,9 +317,7 @@ static mrb_value mrb_filetest_s_size_p(mrb_state *mrb, mrb_value klass) { struct stat st; - mrb_value obj; - - mrb_get_args(mrb, "o", &obj); + mrb_value obj = mrb_get_arg1(mrb); if (mrb_stat(mrb, obj, &st) < 0) return mrb_nil_value(); diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index ef1283b51..505ceb248 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -599,13 +599,12 @@ mrb_dup(mrb_state *mrb, int fd, mrb_bool *failed) static mrb_value mrb_io_initialize_copy(mrb_state *mrb, mrb_value copy) { - mrb_value orig; + mrb_value orig = mrb_get_arg1(mrb); mrb_value buf; struct mrb_io *fptr_copy; struct mrb_io *fptr_orig; mrb_bool failed = TRUE; - mrb_get_args(mrb, "o", &orig); fptr_orig = io_get_open_fptr(mrb, orig); fptr_copy = (struct mrb_io *)DATA_PTR(copy); if (fptr_orig == fptr_copy) return copy; diff --git a/mrbgems/mruby-kernel-ext/src/kernel.c b/mrbgems/mruby-kernel-ext/src/kernel.c index 427740c1c..1d183aecd 100644 --- a/mrbgems/mruby-kernel-ext/src/kernel.c +++ b/mrbgems/mruby-kernel-ext/src/kernel.c @@ -128,9 +128,8 @@ mrb_f_integer(mrb_state *mrb, mrb_value self) static mrb_value mrb_f_float(mrb_state *mrb, mrb_value self) { - mrb_value arg; + mrb_value arg = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &arg); return mrb_Float(mrb, arg); } #endif @@ -149,9 +148,9 @@ mrb_f_float(mrb_state *mrb, mrb_value self) static mrb_value mrb_f_string(mrb_state *mrb, mrb_value self) { - mrb_value arg, tmp; + mrb_value arg = mrb_get_arg1(mrb); + mrb_value tmp; - mrb_get_args(mrb, "o", &arg); tmp = mrb_convert_type(mrb, arg, MRB_TT_STRING, "String", "to_s"); return tmp; } @@ -168,9 +167,9 @@ mrb_f_string(mrb_state *mrb, mrb_value self) static mrb_value mrb_f_array(mrb_state *mrb, mrb_value self) { - mrb_value arg, tmp; + mrb_value arg = mrb_get_arg1(mrb); + mrb_value tmp; - mrb_get_args(mrb, "o", &arg); tmp = mrb_check_convert_type(mrb, arg, MRB_TT_ARRAY, "Array", "to_a"); if (mrb_nil_p(tmp)) { return mrb_ary_new_from_values(mrb, 1, &arg); @@ -196,9 +195,8 @@ mrb_f_array(mrb_state *mrb, mrb_value self) static mrb_value mrb_f_hash(mrb_state *mrb, mrb_value self) { - mrb_value arg; + mrb_value arg = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &arg); if (mrb_nil_p(arg) || (mrb_array_p(arg) && RARRAY_LEN(arg) == 0)) { return mrb_hash_new(mrb); } diff --git a/mrbgems/mruby-method/src/method.c b/mrbgems/mruby-method/src/method.c index d249b463b..111b031b9 100644 --- a/mrbgems/mruby-method/src/method.c +++ b/mrbgems/mruby-method/src/method.c @@ -33,9 +33,8 @@ unbound_method_bind(mrb_state *mrb, mrb_value self) mrb_value name = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_name")); mrb_value proc = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_proc")); mrb_value klass = mrb_iv_get(mrb, self, mrb_intern_lit(mrb, "_klass")); - mrb_value recv; + mrb_value recv = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &recv); bind_check(mrb, recv, owner); me = method_object_alloc(mrb, mrb_class_get(mrb, "Method")); mrb_obj_iv_set(mrb, me, mrb_intern_lit(mrb, "_owner"), owner); @@ -51,11 +50,11 @@ unbound_method_bind(mrb_state *mrb, mrb_value self) static mrb_value method_eql(mrb_state *mrb, mrb_value self) { - mrb_value other, receiver, orig_proc, other_proc; + mrb_value other = mrb_get_arg1(mrb); + mrb_value receiver, orig_proc, other_proc; struct RClass *owner, *klass; struct RProc *orig_rproc, *other_rproc; - mrb_get_args(mrb, "o", &other); if (!mrb_obj_is_instance_of(mrb, other, mrb_class(mrb, self))) return mrb_false_value(); diff --git a/mrbgems/mruby-print/src/print.c b/mrbgems/mruby-print/src/print.c index 66d070f60..9301dbe55 100644 --- a/mrbgems/mruby-print/src/print.c +++ b/mrbgems/mruby-print/src/print.c @@ -45,9 +45,8 @@ printstr(mrb_state *mrb, mrb_value obj) mrb_value mrb_printstr(mrb_state *mrb, mrb_value self) { - mrb_value argv; + mrb_value argv = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &argv); printstr(mrb, argv); return argv; diff --git a/mrbgems/mruby-range-ext/src/range.c b/mrbgems/mruby-range-ext/src/range.c index 36b684fad..2a0b4e97d 100644 --- a/mrbgems/mruby-range-ext/src/range.c +++ b/mrbgems/mruby-range-ext/src/range.c @@ -34,12 +34,10 @@ r_lt(mrb_state *mrb, mrb_value a, mrb_value b) static mrb_value range_cover(mrb_state *mrb, mrb_value range) { - mrb_value val; struct RRange *r = mrb_range_ptr(mrb, range); + mrb_value val = mrb_get_arg1(mrb); mrb_value beg, end; - mrb_get_args(mrb, "o", &val); - beg = RANGE_BEG(r); end = RANGE_END(r); diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c index ea9508be0..7cf146ec8 100644 --- a/mrbgems/mruby-string-ext/src/string.c +++ b/mrbgems/mruby-string-ext/src/string.c @@ -164,9 +164,8 @@ mrb_str_swapcase(mrb_state *mrb, mrb_value self) static mrb_value mrb_str_concat_m(mrb_state *mrb, mrb_value self) { - mrb_value str; + mrb_value str = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &str); if (mrb_fixnum_p(str) || mrb_float_p(str)) #ifdef MRB_UTF8_STRING str = int_chr_utf8(mrb, str); diff --git a/mrbgems/mruby-struct/src/struct.c b/mrbgems/mruby-struct/src/struct.c index f42a5f1ea..7fbf9225f 100644 --- a/mrbgems/mruby-struct/src/struct.c +++ b/mrbgems/mruby-struct/src/struct.c @@ -154,9 +154,8 @@ mrb_struct_set_m(mrb_state *mrb, mrb_value obj) { mrb_int i = mrb_fixnum(mrb_proc_cfunc_env_get(mrb, 0)); mrb_value *ptr; - mrb_value val; + mrb_value val = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &val); mrb_struct_modify(mrb, obj); ptr = RSTRUCT_PTR(obj); if (ptr == NULL || i >= RSTRUCT_LEN(obj)) { @@ -356,9 +355,7 @@ mrb_struct_initialize(mrb_state *mrb, mrb_value self) static mrb_value mrb_struct_init_copy(mrb_state *mrb, mrb_value copy) { - mrb_value s; - - mrb_get_args(mrb, "o", &s); + mrb_value s = mrb_get_arg1(mrb); if (mrb_obj_equal(mrb, copy, s)) return copy; if (!mrb_obj_is_instance_of(mrb, s, mrb_obj_class(mrb, copy))) { @@ -428,9 +425,8 @@ struct_aref_int(mrb_state *mrb, mrb_value s, mrb_int i) static mrb_value mrb_struct_aref(mrb_state *mrb, mrb_value s) { - mrb_value idx; + mrb_value idx = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &idx); if (mrb_string_p(idx)) { mrb_value sym = mrb_check_intern_str(mrb, idx); @@ -545,11 +541,10 @@ mrb_struct_aset(mrb_state *mrb, mrb_value s) static mrb_value mrb_struct_equal(mrb_state *mrb, mrb_value s) { - mrb_value s2; + mrb_value s2 = mrb_get_arg1(mrb); mrb_value *ptr, *ptr2; mrb_int i, len; - mrb_get_args(mrb, "o", &s2); if (mrb_obj_equal(mrb, s, s2)) { return mrb_true_value(); } @@ -582,11 +577,10 @@ mrb_struct_equal(mrb_state *mrb, mrb_value s) static mrb_value mrb_struct_eql(mrb_state *mrb, mrb_value s) { - mrb_value s2; + mrb_value s2 = mrb_get_arg1(mrb); mrb_value *ptr, *ptr2; mrb_int i, len; - mrb_get_args(mrb, "o", &s2); if (mrb_obj_equal(mrb, s, s2)) { return mrb_true_value(); } diff --git a/mrbgems/mruby-time/src/time.c b/mrbgems/mruby-time/src/time.c index e76e11649..5fa700848 100644 --- a/mrbgems/mruby-time/src/time.c +++ b/mrbgems/mruby-time/src/time.c @@ -515,11 +515,10 @@ time_get_ptr(mrb_state *mrb, mrb_value time) static mrb_value mrb_time_eq(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); struct mrb_time *tm1, *tm2; mrb_bool eq_p; - mrb_get_args(mrb, "o", &other); tm1 = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time); tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time); eq_p = tm1 && tm2 && tm1->sec == tm2->sec && tm1->usec == tm2->usec; @@ -530,10 +529,9 @@ mrb_time_eq(mrb_state *mrb, mrb_value self) static mrb_value mrb_time_cmp(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); struct mrb_time *tm1, *tm2; - mrb_get_args(mrb, "o", &other); tm1 = DATA_GET_PTR(mrb, self, &mrb_time_type, struct mrb_time); tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time); if (!tm1 || !tm2) return mrb_nil_value(); @@ -556,11 +554,10 @@ mrb_time_cmp(mrb_state *mrb, mrb_value self) static mrb_value mrb_time_plus(mrb_state *mrb, mrb_value self) { - mrb_value o; + mrb_value o = mrb_get_arg1(mrb); struct mrb_time *tm; time_t sec, usec; - mrb_get_args(mrb, "o", &o); tm = time_get_ptr(mrb, self); sec = mrb_to_time_t(mrb, o, &usec); return mrb_time_make_time(mrb, mrb_obj_class(mrb, self), tm->sec+sec, tm->usec+usec, tm->timezone); @@ -569,10 +566,9 @@ mrb_time_plus(mrb_state *mrb, mrb_value self) static mrb_value mrb_time_minus(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); struct mrb_time *tm, *tm2; - mrb_get_args(mrb, "o", &other); tm = time_get_ptr(mrb, self); tm2 = DATA_CHECK_GET_PTR(mrb, other, &mrb_time_type, struct mrb_time); if (tm2) { @@ -770,10 +766,9 @@ mrb_time_initialize(mrb_state *mrb, mrb_value self) static mrb_value mrb_time_initialize_copy(mrb_state *mrb, mrb_value copy) { - mrb_value src; + mrb_value src = mrb_get_arg1(mrb); struct mrb_time *t1, *t2; - mrb_get_args(mrb, "o", &src); if (mrb_obj_equal(mrb, copy, src)) return copy; if (!mrb_obj_is_instance_of(mrb, src, mrb_obj_class(mrb, copy))) { mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class"); diff --git a/src/array.c b/src/array.c index ad0d5b8db..414ccd60a 100644 --- a/src/array.c +++ b/src/array.c @@ -1038,10 +1038,9 @@ mrb_ary_last(mrb_state *mrb, mrb_value self) static mrb_value mrb_ary_index_m(mrb_state *mrb, mrb_value self) { - mrb_value obj; + mrb_value obj = mrb_get_arg1(mrb); mrb_int i; - mrb_get_args(mrb, "o", &obj); for (i = 0; i < RARRAY_LEN(self); i++) { if (mrb_equal(mrb, RARRAY_PTR(self)[i], obj)) { return mrb_fixnum_value(i); @@ -1053,10 +1052,9 @@ mrb_ary_index_m(mrb_state *mrb, mrb_value self) static mrb_value mrb_ary_rindex_m(mrb_state *mrb, mrb_value self) { - mrb_value obj; + mrb_value obj = mrb_get_arg1(mrb); mrb_int i, len; - mrb_get_args(mrb, "o", &obj); for (i = RARRAY_LEN(self) - 1; i >= 0; i--) { if (mrb_equal(mrb, RARRAY_PTR(self)[i], obj)) { return mrb_fixnum_value(i); @@ -1230,9 +1228,8 @@ mrb_ary_join_m(mrb_state *mrb, mrb_value ary) static mrb_value mrb_ary_eq(mrb_state *mrb, mrb_value ary1) { - mrb_value ary2; + mrb_value ary2 = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &ary2); if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_true_value(); if (!mrb_array_p(ary2)) { return mrb_false_value(); @@ -1245,9 +1242,8 @@ mrb_ary_eq(mrb_state *mrb, mrb_value ary1) static mrb_value mrb_ary_cmp(mrb_state *mrb, mrb_value ary1) { - mrb_value ary2; + mrb_value ary2 = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &ary2); if (mrb_obj_equal(mrb, ary1, ary2)) return mrb_fixnum_value(0); if (!mrb_array_p(ary2)) { return mrb_nil_value(); diff --git a/src/class.c b/src/class.c index d30edd41e..313bf586a 100644 --- a/src/class.c +++ b/src/class.c @@ -549,6 +549,23 @@ mrb_get_argv(mrb_state *mrb) return array_argv; } +MRB_API mrb_value +mrb_get_arg1(mrb_state *mrb) +{ + mrb_int argc = mrb->c->ci->argc; + mrb_value *array_argv = mrb->c->stack + 1; + if (argc < 0) { + struct RArray *a = mrb_ary_ptr(*array_argv); + + argc = ARY_LEN(a); + array_argv = ARY_PTR(a); + } + if (argc != 1) { + mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments"); + } + return array_argv[0]; +} + void mrb_hash_check_kdict(mrb_state *mrb, mrb_value self); /* @@ -1212,10 +1229,9 @@ mrb_mod_ancestors(mrb_state *mrb, mrb_value self) static mrb_value mrb_mod_extend_object(mrb_state *mrb, mrb_value mod) { - mrb_value obj; + mrb_value obj = mrb_get_arg1(mrb); mrb_check_type(mrb, mod, MRB_TT_MODULE); - mrb_get_args(mrb, "o", &obj); mrb_include_module(mrb, mrb_class_ptr(mrb_singleton_class(mrb, obj)), mrb_class_ptr(mod)); return mod; } @@ -1493,9 +1509,8 @@ static mrb_value attr_writer(mrb_state *mrb, mrb_value obj) { mrb_value name = mrb_proc_cfunc_env_get(mrb, 0); - mrb_value val; + mrb_value val = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &val); mrb_iv_set(mrb, obj, to_sym(mrb, name), val); return val; } @@ -1663,18 +1678,16 @@ mrb_bob_not(mrb_state *mrb, mrb_value cv) mrb_value mrb_obj_equal_m(mrb_state *mrb, mrb_value self) { - mrb_value arg; + mrb_value arg = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &arg); return mrb_bool_value(mrb_obj_equal(mrb, self, arg)); } static mrb_value mrb_obj_not_equal_m(mrb_state *mrb, mrb_value self) { - mrb_value arg; + mrb_value arg = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &arg); return mrb_bool_value(!mrb_equal(mrb, self, arg)); } @@ -1975,13 +1988,11 @@ mrb_const_get_sym(mrb_state *mrb, mrb_value mod, mrb_sym id) static mrb_value mrb_mod_const_get(mrb_state *mrb, mrb_value mod) { - mrb_value path; + mrb_value path = mrb_get_arg1(mrb); mrb_sym id; char *ptr; mrb_int off, end, len; - mrb_get_args(mrb, "o", &path); - if (mrb_symbol_p(path)) { /* const get with symbol */ id = mrb_symbol(path); @@ -2134,10 +2145,9 @@ top_define_method(mrb_state *mrb, mrb_value self) static mrb_value mrb_mod_eqq(mrb_state *mrb, mrb_value mod) { - mrb_value obj; + mrb_value obj = mrb_get_arg1(mrb); mrb_bool eqq; - mrb_get_args(mrb, "o", &obj); eqq = mrb_obj_is_kind_of(mrb, obj, mrb_class_ptr(mod)); return mrb_bool_value(eqq); diff --git a/src/error.c b/src/error.c index d1bd52d41..5d17209e5 100644 --- a/src/error.c +++ b/src/error.c @@ -160,9 +160,8 @@ set_backtrace(mrb_state *mrb, mrb_value exc, mrb_value backtrace) static mrb_value exc_set_backtrace(mrb_state *mrb, mrb_value exc) { - mrb_value backtrace; + mrb_value backtrace = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &backtrace); set_backtrace(mrb, exc, backtrace); return backtrace; } diff --git a/src/hash.c b/src/hash.c index 575d35d12..4d5310903 100644 --- a/src/hash.c +++ b/src/hash.c @@ -641,12 +641,11 @@ static mrb_value hash_default(mrb_state *mrb, mrb_value hash, mrb_value key); static mrb_value mrb_hash_init_copy(mrb_state *mrb, mrb_value self) { - mrb_value orig; + mrb_value orig = mrb_get_arg1(mrb); struct RHash* copy; htable *orig_h; mrb_value ifnone, vret; - mrb_get_args(mrb, "o", &orig); if (mrb_obj_equal(mrb, self, orig)) return self; if ((mrb_type(self) != mrb_type(orig)) || (mrb_obj_class(mrb, self) != mrb_obj_class(mrb, orig))) { mrb_raise(mrb, E_TYPE_ERROR, "initialize_copy should take same class object"); @@ -828,9 +827,8 @@ mrb_hash_init(mrb_state *mrb, mrb_value hash) static mrb_value mrb_hash_aget(mrb_state *mrb, mrb_value self) { - mrb_value key; + mrb_value key = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &key); return mrb_hash_get(mrb, self, key); } @@ -913,9 +911,8 @@ mrb_hash_default(mrb_state *mrb, mrb_value hash) static mrb_value mrb_hash_set_default(mrb_state *mrb, mrb_value hash) { - mrb_value ifnone; + mrb_value ifnone = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &ifnone); mrb_hash_modify(mrb, hash); mrb_iv_set(mrb, hash, mrb_intern_lit(mrb, "ifnone"), ifnone); RHASH(hash)->flags &= ~MRB_HASH_PROC_DEFAULT; @@ -969,9 +966,8 @@ mrb_hash_default_proc(mrb_state *mrb, mrb_value hash) static mrb_value mrb_hash_set_default_proc(mrb_state *mrb, mrb_value hash) { - mrb_value ifnone; + mrb_value ifnone = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &ifnone); mrb_hash_modify(mrb, hash); mrb_iv_set(mrb, hash, mrb_intern_lit(mrb, "ifnone"), ifnone); if (!mrb_nil_p(ifnone)) { @@ -1003,9 +999,8 @@ mrb_hash_delete_key(mrb_state *mrb, mrb_value hash, mrb_value key) static mrb_value mrb_hash_delete(mrb_state *mrb, mrb_value self) { - mrb_value key; + mrb_value key = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &key); mrb_hash_modify(mrb, self); return mrb_hash_delete_key(mrb, self, key); } @@ -1288,10 +1283,9 @@ mrb_hash_key_p(mrb_state *mrb, mrb_value hash, mrb_value key) static mrb_value mrb_hash_has_key(mrb_state *mrb, mrb_value hash) { - mrb_value key; + mrb_value key = mrb_get_arg1(mrb); mrb_bool key_p; - mrb_get_args(mrb, "o", &key); key_p = mrb_hash_key_p(mrb, hash, key); return mrb_bool_value(key_p); } @@ -1331,10 +1325,9 @@ hash_has_value_i(mrb_state *mrb, mrb_value key, mrb_value val, void *p) static mrb_value mrb_hash_has_value(mrb_state *mrb, mrb_value hash) { - mrb_value val; + mrb_value val = mrb_get_arg1(mrb); struct has_v_arg arg; - mrb_get_args(mrb, "o", &val); arg.found = FALSE; arg.val = val; ht_foreach(mrb, RHASH_TBL(hash), hash_has_value_i, &arg); diff --git a/src/kernel.c b/src/kernel.c index ae9617686..8a78de67d 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -71,9 +71,8 @@ mrb_obj_inspect(mrb_state *mrb, mrb_value obj) static mrb_value mrb_equal_m(mrb_state *mrb, mrb_value self) { - mrb_value arg; + mrb_value arg = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &arg); return mrb_bool_value(mrb_equal(mrb, self, arg)); } @@ -471,9 +470,8 @@ mrb_obj_hash(mrb_state *mrb, mrb_value self) static mrb_value mrb_obj_init_copy(mrb_state *mrb, mrb_value self) { - mrb_value orig; + mrb_value orig = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &orig); if (mrb_obj_equal(mrb, self, orig)) return self; if ((mrb_type(self) != mrb_type(orig)) || (mrb_obj_class(mrb, self) != mrb_obj_class(mrb, orig))) { mrb_raise(mrb, E_TYPE_ERROR, "initialize_copy should take same class object"); @@ -744,12 +742,11 @@ obj_respond_to(mrb_state *mrb, mrb_value self) static mrb_value mrb_obj_ceqq(mrb_state *mrb, mrb_value self) { - mrb_value v; + mrb_value v = mrb_get_arg1(mrb); mrb_int i, len; mrb_sym eqq = mrb_intern_lit(mrb, "==="); mrb_value ary = mrb_ary_splat(mrb, self); - mrb_get_args(mrb, "o", &v); len = RARRAY_LEN(ary); for (i=0; i<len; i++) { mrb_value c = mrb_funcall_argv(mrb, mrb_ary_entry(ary, i), eqq, 1, &v); diff --git a/src/numeric.c b/src/numeric.c index 07a2d20a8..3977a00c1 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -67,12 +67,11 @@ mrb_int_value(mrb_state *mrb, mrb_float f) static mrb_value integral_pow(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); #ifndef MRB_WITHOUT_FLOAT mrb_float d; #endif - mrb_get_args(mrb, "o", &y); if (mrb_fixnum_p(x) && mrb_fixnum_p(y)) { /* try ipow() */ mrb_int base = mrb_fixnum(x); @@ -116,9 +115,8 @@ static mrb_value integral_idiv(mrb_state *mrb, mrb_value x) { #ifdef MRB_WITHOUT_FLOAT - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); if (!mrb_fixnum_p(y)) { mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value"); } @@ -154,9 +152,8 @@ static mrb_value integral_div(mrb_state *mrb, mrb_value x) { #ifdef MRB_WITHOUT_FLOAT - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); if (!mrb_fixnum_p(y)) { mrb_raise(mrb, E_TYPE_ERROR, "non fixnum value"); } @@ -271,9 +268,8 @@ flo_to_s(mrb_state *mrb, mrb_value flt) static mrb_value flo_minus(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); return mrb_float_value(mrb, mrb_float(x) - mrb_to_flo(mrb, y)); } @@ -289,9 +285,8 @@ flo_minus(mrb_state *mrb, mrb_value x) static mrb_value flo_mul(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); return mrb_float_value(mrb, mrb_float(x) * mrb_to_flo(mrb, y)); } @@ -351,11 +346,9 @@ flodivmod(mrb_state *mrb, double x, double y, mrb_float *divp, mrb_float *modp) static mrb_value flo_mod(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); mrb_float mod; - mrb_get_args(mrb, "o", &y); - flodivmod(mrb, mrb_float(x), mrb_to_flo(mrb, y), 0, &mod); return mrb_float_value(mrb, mod); } @@ -376,9 +369,8 @@ flo_mod(mrb_state *mrb, mrb_value x) static mrb_value fix_eql(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); if (!mrb_fixnum_p(y)) return mrb_false_value(); return mrb_bool_value(mrb_fixnum(x) == mrb_fixnum(y)); } @@ -387,9 +379,8 @@ fix_eql(mrb_state *mrb, mrb_value x) static mrb_value flo_eql(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); if (!mrb_float_p(y)) return mrb_false_value(); return mrb_bool_value(mrb_float(x) == mrb_float(y)); } @@ -410,8 +401,7 @@ flo_eql(mrb_state *mrb, mrb_value x) static mrb_value flo_eq(mrb_state *mrb, mrb_value x) { - mrb_value y; - mrb_get_args(mrb, "o", &y); + mrb_value y = mrb_get_arg1(mrb); switch (mrb_type(y)) { case MRB_TT_FIXNUM: @@ -460,9 +450,8 @@ flo_rev(mrb_state *mrb, mrb_value x) static mrb_value flo_and(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); int64_t v1, v2; - mrb_get_args(mrb, "o", &y); v1 = (int64_t)mrb_float(x); v2 = value_int64(mrb, y); @@ -472,9 +461,8 @@ flo_and(mrb_state *mrb, mrb_value x) static mrb_value flo_or(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); int64_t v1, v2; - mrb_get_args(mrb, "o", &y); v1 = (int64_t)mrb_float(x); v2 = value_int64(mrb, y); @@ -484,9 +472,8 @@ flo_or(mrb_state *mrb, mrb_value x) static mrb_value flo_xor(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); int64_t v1, v2; - mrb_get_args(mrb, "o", &y); v1 = (int64_t)mrb_float(x); v2 = value_int64(mrb, y); @@ -847,9 +834,8 @@ mrb_num_mul(mrb_state *mrb, mrb_value x, mrb_value y) static mrb_value fix_mul(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); return fixnum_mul(mrb, x, y); } @@ -894,10 +880,9 @@ fixdivmod(mrb_state *mrb, mrb_int x, mrb_int y, mrb_int *divp, mrb_int *modp) static mrb_value fix_mod(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); mrb_int a, b; - mrb_get_args(mrb, "o", &y); a = mrb_fixnum(x); if (mrb_fixnum_p(y) && a != MRB_INT_MIN && (b=mrb_fixnum(y)) != MRB_INT_MIN) { mrb_int mod; @@ -936,9 +921,7 @@ fix_mod(mrb_state *mrb, mrb_value x) static mrb_value fix_divmod(mrb_state *mrb, mrb_value x) { - mrb_value y; - - mrb_get_args(mrb, "o", &y); + mrb_value y = mrb_get_arg1(mrb); if (mrb_fixnum_p(y)) { mrb_int div, mod; @@ -975,12 +958,10 @@ fix_divmod(mrb_state *mrb, mrb_value x) static mrb_value flo_divmod(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); mrb_float div, mod; mrb_value a, b; - mrb_get_args(mrb, "o", &y); - flodivmod(mrb, mrb_float(x), mrb_to_flo(mrb, y), &div, &mod); a = mrb_int_value(mrb, div); b = mrb_float_value(mrb, mod); @@ -1003,9 +984,8 @@ flo_divmod(mrb_state *mrb, mrb_value x) static mrb_value fix_equal(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); switch (mrb_type(y)) { case MRB_TT_FIXNUM: return mrb_bool_value(mrb_fixnum(x) == mrb_fixnum(y)); @@ -1062,9 +1042,8 @@ static mrb_value flo_xor(mrb_state *mrb, mrb_value x); static mrb_value fix_and(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); bit_op(x, y, and, &); } @@ -1079,9 +1058,8 @@ fix_and(mrb_state *mrb, mrb_value x) static mrb_value fix_or(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); bit_op(x, y, or, |); } @@ -1096,9 +1074,8 @@ fix_or(mrb_state *mrb, mrb_value x) static mrb_value fix_xor(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); bit_op(x, y, or, ^); } @@ -1320,9 +1297,8 @@ mrb_num_plus(mrb_state *mrb, mrb_value x, mrb_value y) static mrb_value fix_plus(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &other); return fixnum_plus(mrb, self, other); } @@ -1378,9 +1354,8 @@ mrb_num_minus(mrb_state *mrb, mrb_value x, mrb_value y) static mrb_value fix_minus(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &other); return fixnum_minus(mrb, self, other); } @@ -1497,10 +1472,9 @@ cmpnum(mrb_state *mrb, mrb_value v1, mrb_value v2) static mrb_value integral_cmp(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); mrb_int n; - mrb_get_args(mrb, "o", &other); n = cmpnum(mrb, self, other); if (n == -2) return mrb_nil_value(); return mrb_fixnum_value(n); @@ -1515,10 +1489,9 @@ cmperr(mrb_state *mrb, mrb_value v1, mrb_value v2) static mrb_value integral_lt(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); mrb_int n; - mrb_get_args(mrb, "o", &other); n = cmpnum(mrb, self, other); if (n == -2) cmperr(mrb, self, other); if (n < 0) return mrb_true_value(); @@ -1528,10 +1501,9 @@ integral_lt(mrb_state *mrb, mrb_value self) static mrb_value integral_le(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); mrb_int n; - mrb_get_args(mrb, "o", &other); n = cmpnum(mrb, self, other); if (n == -2) cmperr(mrb, self, other); if (n <= 0) return mrb_true_value(); @@ -1541,10 +1513,9 @@ integral_le(mrb_state *mrb, mrb_value self) static mrb_value integral_gt(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); mrb_int n; - mrb_get_args(mrb, "o", &other); n = cmpnum(mrb, self, other); if (n == -2) cmperr(mrb, self, other); if (n > 0) return mrb_true_value(); @@ -1554,10 +1525,9 @@ integral_gt(mrb_state *mrb, mrb_value self) static mrb_value integral_ge(mrb_state *mrb, mrb_value self) { - mrb_value other; + mrb_value other = mrb_get_arg1(mrb); mrb_int n; - mrb_get_args(mrb, "o", &other); n = cmpnum(mrb, self, other); if (n == -2) cmperr(mrb, self, other); if (n >= 0) return mrb_true_value(); @@ -1609,9 +1579,8 @@ num_infinite_p(mrb_state *mrb, mrb_value self) static mrb_value flo_plus(mrb_state *mrb, mrb_value x) { - mrb_value y; + mrb_value y = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &y); return mrb_float_value(mrb, mrb_float(x) + mrb_to_flo(mrb, y)); } #endif diff --git a/src/proc.c b/src/proc.c index a7d9ee16b..df80682a2 100644 --- a/src/proc.c +++ b/src/proc.c @@ -211,9 +211,8 @@ mrb_proc_s_new(mrb_state *mrb, mrb_value proc_class) static mrb_value mrb_proc_init_copy(mrb_state *mrb, mrb_value self) { - mrb_value proc; + mrb_value proc = mrb_get_arg1(mrb); - mrb_get_args(mrb, "o", &proc); if (!mrb_proc_p(proc)) { mrb_raise(mrb, E_ARGUMENT_ERROR, "not a proc"); } diff --git a/src/range.c b/src/range.c index 6df5d13a3..0b4e6dbca 100644 --- a/src/range.c +++ b/src/range.c @@ -182,11 +182,9 @@ range_eq(mrb_state *mrb, mrb_value range) { struct RRange *rr; struct RRange *ro; - mrb_value obj; + mrb_value obj = mrb_get_arg1(mrb); mrb_bool v1, v2; - mrb_get_args(mrb, "o", &obj); - if (mrb_obj_equal(mrb, range, obj)) return mrb_true_value(); if (!mrb_obj_is_instance_of(mrb, obj, mrb_obj_class(mrb, range))) { /* same class? */ return mrb_false_value(); @@ -211,13 +209,11 @@ range_eq(mrb_state *mrb, mrb_value range) static mrb_value range_include(mrb_state *mrb, mrb_value range) { - mrb_value val; + mrb_value val = mrb_get_arg1(mrb); struct RRange *r = mrb_range_ptr(mrb, range); mrb_value beg, end; mrb_bool include_p; - mrb_get_args(mrb, "o", &val); - beg = RANGE_BEG(r); end = RANGE_END(r); include_p = r_le(mrb, beg, val) && /* beg <= val */ @@ -289,11 +285,9 @@ range_inspect(mrb_state *mrb, mrb_value range) static mrb_value range_eql(mrb_state *mrb, mrb_value range) { - mrb_value obj; + mrb_value obj = mrb_get_arg1(mrb); struct RRange *r, *o; - mrb_get_args(mrb, "o", &obj); - if (mrb_obj_equal(mrb, range, obj)) return mrb_true_value(); if (!mrb_obj_is_kind_of(mrb, obj, mrb->range_class)) return mrb_false_value(); if (!mrb_range_p(obj)) return mrb_false_value(); @@ -312,11 +306,9 @@ range_eql(mrb_state *mrb, mrb_value range) static mrb_value range_initialize_copy(mrb_state *mrb, mrb_value copy) { - mrb_value src; + mrb_value src = mrb_get_arg1(mrb); struct RRange *r; - mrb_get_args(mrb, "o", &src); - if (mrb_obj_equal(mrb, copy, src)) return copy; if (!mrb_obj_is_instance_of(mrb, src, mrb_obj_class(mrb, copy))) { mrb_raise(mrb, E_TYPE_ERROR, "wrong argument class"); diff --git a/src/string.c b/src/string.c index 44e3c9069..e65747318 100644 --- a/src/string.c +++ b/src/string.c @@ -1061,10 +1061,9 @@ mrb_str_cmp(mrb_state *mrb, mrb_value str1, mrb_value str2) static mrb_value mrb_str_cmp_m(mrb_state *mrb, mrb_value str1) { - mrb_value str2; + mrb_value str2 = mrb_get_arg1(mrb); mrb_int result; - mrb_get_args(mrb, "o", &str2); if (!mrb_string_p(str2)) { return mrb_nil_value(); } @@ -1106,9 +1105,7 @@ mrb_str_equal(mrb_state *mrb, mrb_value str1, mrb_value str2) static mrb_value mrb_str_equal_m(mrb_state *mrb, mrb_value str1) { - mrb_value str2; - - mrb_get_args(mrb, "o", &str2); + mrb_value str2 = mrb_get_arg1(mrb); return mrb_bool_value(mrb_str_equal(mrb, str1, str2)); } @@ -1791,10 +1788,9 @@ mrb_str_empty_p(mrb_state *mrb, mrb_value self) static mrb_value mrb_str_eql(mrb_state *mrb, mrb_value self) { - mrb_value str2; + mrb_value str2 = mrb_get_arg1(mrb); mrb_bool eql_p; - mrb_get_args(mrb, "o", &str2); eql_p = (mrb_string_p(str2)) && str_eql(mrb, self, str2); return mrb_bool_value(eql_p); diff --git a/src/symbol.c b/src/symbol.c index f55e09b7b..992848797 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -564,10 +564,9 @@ mrb_sym_dump(mrb_state *mrb, mrb_sym sym) static mrb_value sym_cmp(mrb_state *mrb, mrb_value s1) { - mrb_value s2; + mrb_value s2 = mrb_get_arg1(mrb); mrb_sym sym1, sym2; - mrb_get_args(mrb, "o", &s2); if (!mrb_symbol_p(s2)) return mrb_nil_value(); sym1 = mrb_symbol(s1); sym2 = mrb_symbol(s2); |
