summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-06-11 15:37:49 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-10-12 16:21:10 +0900
commit52507b1083ba1c562ae506d63a07a51a26815c21 (patch)
tree1c4087091f82fd792b5d81c3ef2c8c384e1854f4 /include
parent7deb41b0e88b3670476ed86bab541340f5551b52 (diff)
downloadmruby-52507b1083ba1c562ae506d63a07a51a26815c21.tar.gz
mruby-52507b1083ba1c562ae506d63a07a51a26815c21.zip
Generate C struct from `irep` instead of binary dump.
Diffstat (limited to 'include')
-rw-r--r--include/mruby.h8
-rw-r--r--include/mruby/compile.h4
-rw-r--r--include/mruby/error.h4
-rw-r--r--include/mruby/proc.h7
4 files changed, 11 insertions, 12 deletions
diff --git a/include/mruby.h b/include/mruby.h
index 59188e6b5..27c428e85 100644
--- a/include/mruby.h
+++ b/include/mruby.h
@@ -147,7 +147,7 @@ typedef void* (*mrb_allocf) (struct mrb_state *mrb, void*, size_t, void *ud);
typedef struct {
mrb_sym mid;
- struct RProc *proc;
+ const struct RProc *proc;
mrb_value *stackent;
uint16_t ridx;
uint16_t epos;
@@ -1202,9 +1202,9 @@ MRB_API void mrb_close(mrb_state *mrb);
MRB_API void* mrb_default_allocf(mrb_state*, void*, size_t, void*);
MRB_API mrb_value mrb_top_self(mrb_state *mrb);
-MRB_API mrb_value mrb_top_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep);
-MRB_API mrb_value mrb_vm_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep);
-MRB_API mrb_value mrb_vm_exec(mrb_state *mrb, struct RProc *proc, const mrb_code *iseq);
+MRB_API mrb_value mrb_top_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, unsigned int stack_keep);
+MRB_API mrb_value mrb_vm_run(mrb_state *mrb, const struct RProc *proc, mrb_value self, unsigned int stack_keep);
+MRB_API mrb_value mrb_vm_exec(mrb_state *mrb, const struct RProc *proc, const mrb_code *iseq);
/* compatibility macros */
#define mrb_toplevel_run_keep(m,p,k) mrb_top_run((m),(p),mrb_top_self(m),(k))
#define mrb_toplevel_run(m,p) mrb_toplevel_run_keep((m),(p),0)
diff --git a/include/mruby/compile.h b/include/mruby/compile.h
index e8ab91eb9..36adf5a32 100644
--- a/include/mruby/compile.h
+++ b/include/mruby/compile.h
@@ -33,7 +33,7 @@ typedef struct mrbc_context {
mrb_bool no_exec:1;
mrb_bool keep_lv:1;
mrb_bool no_optimize:1;
- struct RProc *upper;
+ const struct RProc *upper;
size_t parser_nerr;
} mrbc_context;
@@ -153,7 +153,7 @@ struct mrb_parser_state {
mrb_bool no_optimize:1;
mrb_bool capture_errors:1;
- struct RProc *upper;
+ const struct RProc *upper;
struct mrb_parser_message error_buffer[10];
struct mrb_parser_message warn_buffer[10];
diff --git a/include/mruby/error.h b/include/mruby/error.h
index d24b5b0c3..72f6c5f3d 100644
--- a/include/mruby/error.h
+++ b/include/mruby/error.h
@@ -35,7 +35,7 @@ MRB_API mrb_value mrb_f_raise(mrb_state*, mrb_value);
#if defined(MRB_64BIT) || defined(MRB_USE_FLOAT) || defined(MRB_NAN_BOXING) || defined(MRB_WORD_BOXING)
struct RBreak {
MRB_OBJECT_HEADER;
- struct RProc *proc;
+ const struct RProc *proc;
mrb_value val;
};
#define mrb_break_value_get(brk) ((brk)->val)
@@ -43,7 +43,7 @@ struct RBreak {
#else
struct RBreak {
MRB_OBJECT_HEADER;
- struct RProc *proc;
+ const struct RProc *proc;
union mrb_value_union value;
};
#define RBREAK_VALUE_TT_MASK ((1 << 8) - 1)
diff --git a/include/mruby/proc.h b/include/mruby/proc.h
index 2d06210ef..fe0cf2eb0 100644
--- a/include/mruby/proc.h
+++ b/include/mruby/proc.h
@@ -44,7 +44,7 @@ struct RProc {
const mrb_irep *irep;
mrb_func_t func;
} body;
- struct RProc *upper;
+ const struct RProc *upper;
union {
struct RClass *target_class;
struct REnv *env;
@@ -93,9 +93,6 @@ MRB_API struct RProc *mrb_closure_new_cfunc(mrb_state *mrb, mrb_func_t func, int
void mrb_proc_copy(struct RProc *a, struct RProc *b);
mrb_int mrb_proc_arity(const struct RProc *p);
-/* implementation of #send method */
-mrb_value mrb_f_send(mrb_state *mrb, mrb_value self);
-
/* following functions are defined in mruby-proc-ext so please include it when using */
MRB_API struct RProc *mrb_proc_new_cfunc_with_env(mrb_state *mrb, mrb_func_t func, mrb_int argc, const mrb_value *argv);
MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx);
@@ -137,6 +134,8 @@ MRB_API mrb_value mrb_proc_cfunc_env_get(mrb_state *mrb, mrb_int idx);
#include <mruby/khash.h>
KHASH_DECLARE(mt, mrb_sym, mrb_method_t, TRUE)
+MRB_API mrb_value mrb_load_proc(mrb_state *mrb, const struct RProc *proc);
+
MRB_END_DECL
#endif /* MRUBY_PROC_H */