mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
add read barrier to value.p
API changes: - value.p must be accessed via mrb_value_p macro - value.p must be mutated via MRB_SET_VALUE_P macro
This commit is contained in:
+1
-1
@@ -1438,7 +1438,7 @@ undef_method(mrb_state *mrb, struct RClass *c, mrb_sym a)
|
||||
mrb_name_error(mrb, a, "undefined method '%S' for class '%S'", mrb_sym2str(mrb, a), mrb_obj_value(c));
|
||||
}
|
||||
else {
|
||||
MRB_SET_VALUE(m, MRB_TT_PROC, value.p, 0);
|
||||
MRB_SET_VALUE_P(m, MRB_TT_PROC, 0);
|
||||
mrb_define_method_vm(mrb, c, a, m);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ mrb_obj_id(mrb_value obj)
|
||||
case MRB_TT_FILE:
|
||||
case MRB_TT_DATA:
|
||||
default:
|
||||
return MakeID(obj.value.p);
|
||||
return MakeID(mrb_value_p(obj));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ mrb_obj_eq(mrb_state *mrb, mrb_value v1, mrb_value v2)
|
||||
return (mrb_float(v1) == mrb_float(v2));
|
||||
|
||||
default:
|
||||
return (v1.value.p == v2.value.p);
|
||||
return (mrb_value_p(v1) == mrb_value_p(v2));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -37,7 +37,7 @@ void abort(void);
|
||||
#define SET_NIL_VALUE(r) MRB_SET_VALUE(r, MRB_TT_FALSE, value.i, 0)
|
||||
#define SET_INT_VALUE(r,n) MRB_SET_VALUE(r, MRB_TT_FIXNUM, value.i, (n))
|
||||
#define SET_SYM_VALUE(r,v) MRB_SET_VALUE(r, MRB_TT_SYMBOL, value.sym, (v))
|
||||
#define SET_OBJ_VALUE(r,v) MRB_SET_VALUE(r, (((struct RObject*)(v))->tt), value.p, (v))
|
||||
#define SET_OBJ_VALUE(r,v) MRB_SET_VALUE_P(r, (((struct RObject*)(v))->tt), (v))
|
||||
#ifdef MRB_NAN_BOXING
|
||||
#define SET_FLT_VALUE(mrb,r,v) r.f = (v)
|
||||
#elif defined(MRB_WORD_BOXING)
|
||||
|
||||
Reference in New Issue
Block a user