summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-03-08 15:01:42 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-03-08 15:01:42 +0900
commit058bb18f280dddb53ac40c838b371e9469024274 (patch)
treef2b0e3c9cf5d90c4d977a05729175217b86c34b1
parent286665c4370b6c741c5bd2e2fdb45fdea11a1070 (diff)
parentc3f3a0484a7700c97a6ebe9ee7101b1ebe6b7626 (diff)
downloadmruby-058bb18f280dddb53ac40c838b371e9469024274.tar.gz
mruby-058bb18f280dddb53ac40c838b371e9469024274.zip
Merge pull request #1828 from take-cheeze/string_embed
Use sizeof(void*) instead of mrb_int size and extend embed string size.
-rw-r--r--include/mruby/string.h11
1 files changed, 2 insertions, 9 deletions
diff --git a/include/mruby/string.h b/include/mruby/string.h
index 7e7fb13d9..9ccbae56c 100644
--- a/include/mruby/string.h
+++ b/include/mruby/string.h
@@ -15,14 +15,7 @@ extern "C" {
extern const char mrb_digitmap[];
-/* (sizeof(mrb_int)*2+sizeof(char*))/sizeof(char)-1 */
-#if defined(MRB_INT16)
-# define RSTRING_EMBED_LEN_MAX 9
-#elif defined(MRB_INT64)
-# define RSTRING_EMBED_LEN_MAX 15
-#else
-# define RSTRING_EMBED_LEN_MAX 11
-#endif
+#define RSTRING_EMBED_LEN_MAX (sizeof(void*) * 3 - 1)
struct RString {
MRB_OBJECT_HEADER;
@@ -58,7 +51,7 @@ struct RString {
#define MRB_STR_SHARED 1
#define MRB_STR_NOFREE 2
#define MRB_STR_EMBED 4
-#define MRB_STR_EMBED_LEN_MASK 120
+#define MRB_STR_EMBED_LEN_MASK 0xf8
#define MRB_STR_EMBED_LEN_SHIFT 3
void mrb_gc_free_str(mrb_state*, struct RString*);