mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
object.h: separate frozen flag to the independent bit-field
So that other flag operation do not break frozen flag.
This commit is contained in:
+1
-1
@@ -452,7 +452,7 @@ mrb_dump_irep_cstruct(mrb_state *mrb, const mrb_irep *irep, uint8_t flags, FILE
|
||||
"extern\n"
|
||||
"#endif",
|
||||
initname);
|
||||
fprintf(fp, "NULL,NULL,MRB_TT_PROC,MRB_GC_RED,0,{&%s_irep_0},NULL,{NULL},\n}};\n", initname);
|
||||
fprintf(fp, "NULL,NULL,MRB_TT_PROC,MRB_GC_RED,MRB_OBJ_IS_FROZEN,0,{&%s_irep_0},NULL,{NULL},\n}};\n", initname);
|
||||
fputs("static void\n", fp);
|
||||
fprintf(fp, "%s_init_syms(mrb_state *mrb)\n", initname);
|
||||
fputs("{\n", fp);
|
||||
|
||||
+4
-4
@@ -387,7 +387,7 @@ prepare_singleton_class(mrb_state *mrb, struct RBasic *o)
|
||||
o->c = sc;
|
||||
mrb_field_write_barrier(mrb, (struct RBasic*)o, (struct RBasic*)sc);
|
||||
mrb_obj_iv_set(mrb, (struct RObject*)sc, MRB_SYM(__attached__), mrb_obj_value(o));
|
||||
sc->flags |= o->flags & MRB_FL_OBJ_IS_FROZEN;
|
||||
sc->frozen = o->frozen;
|
||||
}
|
||||
|
||||
static mrb_value
|
||||
@@ -2686,7 +2686,7 @@ copy_class(mrb_state *mrb, mrb_value dst, mrb_value src)
|
||||
}
|
||||
dc->super = sc->super;
|
||||
dc->flags = sc->flags;
|
||||
dc->flags &= ~MRB_FL_OBJ_IS_FROZEN;
|
||||
dc->frozen = 0;
|
||||
}
|
||||
|
||||
/* 15.3.1.3.16 */
|
||||
@@ -2789,7 +2789,7 @@ mrb_obj_clone(mrb_state *mrb, mrb_value self)
|
||||
|
||||
mrb_value clone = mrb_obj_value(p);
|
||||
init_copy(mrb, clone, self);
|
||||
p->flags |= mrb_obj_ptr(self)->flags & MRB_FL_OBJ_IS_FROZEN;
|
||||
p->frozen = mrb_obj_ptr(self)->frozen;
|
||||
|
||||
return clone;
|
||||
}
|
||||
@@ -2913,7 +2913,7 @@ static const mrb_irep new_irep = {
|
||||
|
||||
mrb_alignas(8)
|
||||
static const struct RProc new_proc = {
|
||||
NULL, NULL, MRB_TT_PROC, MRB_GC_RED, MRB_FL_OBJ_IS_FROZEN | MRB_PROC_SCOPE | MRB_PROC_STRICT,
|
||||
NULL, NULL, MRB_TT_PROC, MRB_GC_RED, MRB_OBJ_IS_FROZEN, MRB_PROC_SCOPE | MRB_PROC_STRICT,
|
||||
{ &new_irep }, NULL, { NULL }
|
||||
};
|
||||
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ static const mrb_irep call_irep = {
|
||||
|
||||
mrb_alignas(8)
|
||||
static const struct RProc call_proc = {
|
||||
NULL, NULL, MRB_TT_PROC, MRB_GC_RED, MRB_FL_OBJ_IS_FROZEN | MRB_PROC_SCOPE | MRB_PROC_STRICT,
|
||||
NULL, NULL, MRB_TT_PROC, MRB_GC_RED, MRB_OBJ_IS_FROZEN, MRB_PROC_SCOPE | MRB_PROC_STRICT,
|
||||
{ &call_irep }, NULL, { NULL }
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user