mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-set: optimize Set operations to use mrb_get_arg1()
Replace mrb_get_args() with more efficient mrb_get_arg1() for single-argument functions. The code is written by Atlassian Rovodev.
This commit is contained in:
+14
-42
@@ -93,11 +93,9 @@ set_init(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_init_copy(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value orig;
|
||||
mrb_value orig = mrb_get_arg1(mrb);
|
||||
khash_t(set) *kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &orig);
|
||||
|
||||
if (mrb_type(orig) != MRB_TT_CDATA || (DATA_TYPE(self) && DATA_TYPE(self) != DATA_TYPE(orig))) {
|
||||
mrb_raise(mrb, E_TYPE_ERROR, "initialize_copy should take same class object");
|
||||
}
|
||||
@@ -191,11 +189,9 @@ set_to_a(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_include_p(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value obj;
|
||||
mrb_value obj = mrb_get_arg1(mrb);
|
||||
khash_t(set) *kh;
|
||||
khiter_t k;
|
||||
|
||||
mrb_get_args(mrb, "o", &obj);
|
||||
kh = set_get_khash(mrb, self);
|
||||
if (!kh) return mrb_false_value();
|
||||
|
||||
@@ -213,10 +209,8 @@ set_include_p(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_add(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value obj;
|
||||
mrb_value obj = mrb_get_arg1(mrb);
|
||||
khash_t(set) *kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &obj);
|
||||
kh = set_get_khash(mrb, self);
|
||||
if (!kh) {
|
||||
mrb_raise(mrb, E_RUNTIME_ERROR, "uninitialized Set");
|
||||
@@ -236,11 +230,9 @@ set_add(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_add_p(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value obj;
|
||||
mrb_value obj = mrb_get_arg1(mrb);
|
||||
khash_t(set) *kh;
|
||||
int ret;
|
||||
|
||||
mrb_get_args(mrb, "o", &obj);
|
||||
kh = set_get_khash(mrb, self);
|
||||
if (!kh) {
|
||||
mrb_raise(mrb, E_RUNTIME_ERROR, "uninitialized Set");
|
||||
@@ -266,11 +258,9 @@ set_add_p(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_delete(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value obj;
|
||||
mrb_value obj = mrb_get_arg1(mrb);
|
||||
khash_t(set) *kh;
|
||||
khiter_t k;
|
||||
|
||||
mrb_get_args(mrb, "o", &obj);
|
||||
kh = set_get_khash(mrb, self);
|
||||
if (!kh) return self;
|
||||
|
||||
@@ -291,11 +281,9 @@ set_delete(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_delete_p(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value obj;
|
||||
mrb_value obj = mrb_get_arg1(mrb);
|
||||
khash_t(set) *kh;
|
||||
khiter_t k;
|
||||
|
||||
mrb_get_args(mrb, "o", &obj);
|
||||
kh = set_get_khash(mrb, self);
|
||||
if (!kh) return mrb_nil_value();
|
||||
|
||||
@@ -316,11 +304,9 @@ set_delete_p(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_core_replace(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value other;
|
||||
mrb_value other = mrb_get_arg1(mrb);
|
||||
khash_t(set) *self_kh, *other_kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &other);
|
||||
|
||||
/* Clear the current set */
|
||||
set_clear(mrb, self);
|
||||
|
||||
@@ -354,11 +340,9 @@ set_core_replace(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_core_merge(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value other;
|
||||
mrb_value other = mrb_get_arg1(mrb);
|
||||
khash_t(set) *self_kh, *other_kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &other);
|
||||
|
||||
self_kh = set_get_khash(mrb, self);
|
||||
if (!self_kh) {
|
||||
mrb_raise(mrb, E_RUNTIME_ERROR, "uninitialized Set");
|
||||
@@ -387,11 +371,9 @@ set_core_merge(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_core_subtract(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value other;
|
||||
mrb_value other = mrb_get_arg1(mrb);
|
||||
khash_t(set) *self_kh, *other_kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &other);
|
||||
|
||||
self_kh = set_get_khash(mrb, self);
|
||||
if (!self_kh) return self;
|
||||
|
||||
@@ -421,11 +403,9 @@ set_core_subtract(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_core_union(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value other;
|
||||
mrb_value result_set;
|
||||
khash_t(set) *result_kh, *self_kh, *other_kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &other);
|
||||
mrb_value other = mrb_get_arg1(mrb);
|
||||
|
||||
/* Create a new set by duplicating self */
|
||||
result_set = mrb_obj_dup(mrb, self);
|
||||
@@ -459,12 +439,10 @@ set_core_union(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_core_difference(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value other;
|
||||
mrb_value other = mrb_get_arg1(mrb);
|
||||
mrb_value result_set;
|
||||
khash_t(set) *result_kh, *self_kh, *other_kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &other);
|
||||
|
||||
/* Create a new set by duplicating self */
|
||||
result_set = mrb_obj_dup(mrb, self);
|
||||
result_kh = set_get_khash(mrb, result_set);
|
||||
@@ -499,12 +477,10 @@ set_core_difference(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_core_intersection(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value other;
|
||||
mrb_value other = mrb_get_arg1(mrb);
|
||||
mrb_value result_set;
|
||||
khash_t(set) *result_kh, *self_kh, *other_kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &other);
|
||||
|
||||
/* Create a new empty set of the same class as self */
|
||||
result_set = mrb_obj_new(mrb, mrb_obj_class(mrb, self), 0, NULL);
|
||||
result_kh = set_get_khash(mrb, result_set);
|
||||
@@ -539,12 +515,10 @@ set_core_intersection(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_core_xor(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value other;
|
||||
mrb_value other = mrb_get_arg1(mrb);
|
||||
mrb_value result_set;
|
||||
khash_t(set) *result_kh, *self_kh, *other_kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &other);
|
||||
|
||||
/* Create a new empty set of the same class as self */
|
||||
result_set = mrb_obj_new(mrb, mrb_obj_class(mrb, self), 0, NULL);
|
||||
result_kh = set_get_khash(mrb, result_set);
|
||||
@@ -688,11 +662,9 @@ set_hash_m(mrb_state *mrb, mrb_value self)
|
||||
static mrb_value
|
||||
set_eql(mrb_state *mrb, mrb_value self)
|
||||
{
|
||||
mrb_value other;
|
||||
mrb_value other = mrb_get_arg1(mrb);
|
||||
khash_t(set) *self_kh, *other_kh;
|
||||
|
||||
mrb_get_args(mrb, "o", &other);
|
||||
|
||||
if (!mrb_obj_is_kind_of(mrb, other, mrb_obj_class(mrb, self))) {
|
||||
return mrb_false_value();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user