primary mruby fiber implementation

This commit is contained in:
Yukihiro "Matz" Matsumoto
2013-05-20 17:54:07 +09:00
parent 35ee85164d
commit 5c0b9b703c
16 changed files with 508 additions and 228 deletions
+1
View File
@@ -12,5 +12,6 @@
typedef void (each_object_callback)(mrb_state *mrb, struct RBasic* obj, void *data);
void mrb_objspace_each_objects(mrb_state *mrb, each_object_callback* callback, void *data);
void mrb_free_context(mrb_state *mrb, struct mrb_context *c);
#endif /* MRUBY_GC_H */
+9 -2
View File
@@ -34,7 +34,8 @@ enum mrb_vtype {
MRB_TT_FILE, /* 19 */
MRB_TT_ENV, /* 20 */
MRB_TT_DATA, /* 21 */
MRB_TT_MAXDEFINE /* 22 */
MRB_TT_FIBER, /* 22 */
MRB_TT_MAXDEFINE /* 23 */
};
typedef struct mrb_value {
@@ -92,7 +93,8 @@ enum mrb_vtype {
MRB_TT_FILE, /* 20 */
MRB_TT_ENV, /* 21 */
MRB_TT_DATA, /* 22 */
MRB_TT_MAXDEFINE /* 23 */
MRB_TT_FIBER, /* 23 */
MRB_TT_MAXDEFINE /* 24 */
};
#ifdef MRB_ENDIAN_BIG
@@ -202,6 +204,11 @@ struct RObject {
#define mrb_immediate_p(x) (mrb_type(x) <= MRB_TT_VOIDP)
#define mrb_special_const_p(x) mrb_immediate_p(x)
struct RFiber {
MRB_OBJECT_HEADER;
struct mrb_context *cxt;
};
static inline mrb_value
mrb_fixnum_value(mrb_int i)
{