From f8fa56d8c3d1729bc331b55473667f4d3414d996 Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Fri, 22 Mar 2013 14:22:45 +0900 Subject: Use mrb_intern2() instead of mrb_intern(). This is for avoiding overhead by strlen(). --- include/mruby/hash.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/mruby/hash.h b/include/mruby/hash.h index ac28f13fd..baace7567 100644 --- a/include/mruby/hash.h +++ b/include/mruby/hash.h @@ -33,7 +33,7 @@ mrb_value mrb_check_hash_type(mrb_state *mrb, mrb_value hash); /* RHASH_TBL allocates st_table if not available. */ #define RHASH(obj) ((struct RHash*)((obj).value.p)) #define RHASH_TBL(h) (RHASH(h)->ht) -#define RHASH_IFNONE(h) mrb_iv_get(mrb, (h), mrb_intern(mrb, "ifnone")) +#define RHASH_IFNONE(h) mrb_iv_get(mrb, (h), mrb_intern2(mrb, "ifnone", 6)) #define RHASH_PROCDEFAULT(h) RHASH_IFNONE(h) struct kh_ht * mrb_hash_tbl(mrb_state *mrb, mrb_value hash); -- cgit v1.2.3 From fc63ef150b029fcd5c73a0b9fde60d44a4a1d662 Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Fri, 22 Mar 2013 14:28:11 +0900 Subject: Add new API mrb_intern_cstr(). This is for naming orthogonality. mrb_intern is also left for backward compatibility. --- include/mruby.h | 9 ++++++++- src/symbol.c | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) (limited to 'include') diff --git a/include/mruby.h b/include/mruby.h index 84aeff0d7..c5c607893 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -189,13 +189,20 @@ int mrb_get_args(mrb_state *mrb, const char *format, ...); mrb_value mrb_funcall(mrb_state*, mrb_value, const char*, int,...); mrb_value mrb_funcall_argv(mrb_state*, mrb_value, mrb_sym, int, mrb_value*); mrb_value mrb_funcall_with_block(mrb_state*, mrb_value, mrb_sym, int, mrb_value*, mrb_value); -mrb_sym mrb_intern(mrb_state*,const char*); +mrb_sym mrb_intern_cstr(mrb_state*,const char*); mrb_sym mrb_intern2(mrb_state*,const char*,size_t); mrb_sym mrb_intern_str(mrb_state*,mrb_value); const char *mrb_sym2name(mrb_state*,mrb_sym); const char *mrb_sym2name_len(mrb_state*,mrb_sym,size_t*); mrb_value mrb_str_format(mrb_state *, int, const mrb_value *, mrb_value); +/* For backward compatibility. */ +static inline +mrb_sym mrb_intern(mrb_state *mrb,const char *cstr) +{ + return mrb_intern_cstr(mrb, cstr); +} + void *mrb_malloc(mrb_state*, size_t); void *mrb_calloc(mrb_state*, size_t, size_t); void *mrb_realloc(mrb_state*, void*, size_t); diff --git a/src/symbol.c b/src/symbol.c index 6afc6b7a6..243cb4b5d 100644 --- a/src/symbol.c +++ b/src/symbol.c @@ -62,7 +62,7 @@ mrb_intern2(mrb_state *mrb, const char *name, size_t len) } mrb_sym -mrb_intern(mrb_state *mrb, const char *name) +mrb_intern_cstr(mrb_state *mrb, const char *name) { return mrb_intern2(mrb, name, strlen(name)); } -- cgit v1.2.3