summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/mruby/boxing_nan.h2
-rw-r--r--include/mruby/boxing_no.h4
-rw-r--r--include/mruby/boxing_word.h5
-rw-r--r--include/mruby/dump.h19
-rw-r--r--include/mruby/irep.h26
-rw-r--r--include/mruby/string.h10
6 files changed, 24 insertions, 42 deletions
diff --git a/include/mruby/boxing_nan.h b/include/mruby/boxing_nan.h
index fae3b7630..4b44bba8a 100644
--- a/include/mruby/boxing_nan.h
+++ b/include/mruby/boxing_nan.h
@@ -51,8 +51,6 @@ typedef struct mrb_value {
};
} mrb_value;
-#define mrb_float_pool(mrb,f) mrb_float_value(mrb,f)
-
#define mrb_tt(o) ((enum mrb_vtype)(((o).value.ttt & 0xfc000)>>14)-1)
#define mrb_type(o) (enum mrb_vtype)((uint32_t)0xfff00000 < (o).value.ttt ? mrb_tt(o) : MRB_TT_FLOAT)
#define mrb_ptr(o) ((void*)((((uintptr_t)0x3fffffffffff)&((uintptr_t)((o).value.p)))<<2))
diff --git a/include/mruby/boxing_no.h b/include/mruby/boxing_no.h
index 7573428e6..23b48c6f8 100644
--- a/include/mruby/boxing_no.h
+++ b/include/mruby/boxing_no.h
@@ -24,10 +24,6 @@ typedef struct mrb_value {
enum mrb_vtype tt;
} mrb_value;
-#ifndef MRB_WITHOUT_FLOAT
-#define mrb_float_pool(mrb,f) mrb_float_value(mrb,f)
-#endif
-
#define mrb_ptr(o) (o).value.p
#define mrb_cptr(o) mrb_ptr(o)
#ifndef MRB_WITHOUT_FLOAT
diff --git a/include/mruby/boxing_word.h b/include/mruby/boxing_word.h
index 1b7815b7f..56202a420 100644
--- a/include/mruby/boxing_word.h
+++ b/include/mruby/boxing_word.h
@@ -90,11 +90,6 @@ typedef union mrb_value {
MRB_API mrb_value mrb_word_boxing_cptr_value(struct mrb_state*, void*);
#ifndef MRB_WITHOUT_FLOAT
MRB_API mrb_value mrb_word_boxing_float_value(struct mrb_state*, mrb_float);
-MRB_API mrb_value mrb_word_boxing_float_pool(struct mrb_state*, mrb_float);
-#endif
-
-#ifndef MRB_WITHOUT_FLOAT
-#define mrb_float_pool(mrb,f) mrb_word_boxing_float_pool(mrb,f)
#endif
#define mrb_ptr(o) (o).value.p
diff --git a/include/mruby/dump.h b/include/mruby/dump.h
index 384521c45..bad27fdf5 100644
--- a/include/mruby/dump.h
+++ b/include/mruby/dump.h
@@ -127,16 +127,6 @@ uint32_to_bin(uint32_t l, uint8_t *bin)
return sizeof(uint32_t);
}
-static inline size_t
-uint32l_to_bin(uint32_t l, uint8_t *bin)
-{
- bin[3] = (l >> 24) & 0xff;
- bin[2] = (l >> 16) & 0xff;
- bin[1] = (l >> 8) & 0xff;
- bin[0] = l & 0xff;
- return sizeof(uint32_t);
-}
-
static inline uint32_t
bin_to_uint32(const uint8_t *bin)
{
@@ -146,15 +136,6 @@ bin_to_uint32(const uint8_t *bin)
(uint32_t)bin[3];
}
-static inline uint32_t
-bin_to_uint32l(const uint8_t *bin)
-{
- return (uint32_t)bin[3] << 24 |
- (uint32_t)bin[2] << 16 |
- (uint32_t)bin[1] << 8 |
- (uint32_t)bin[0];
-}
-
static inline uint16_t
bin_to_uint16(const uint8_t *bin)
{
diff --git a/include/mruby/irep.h b/include/mruby/irep.h
index 9d30f2797..359fb6796 100644
--- a/include/mruby/irep.h
+++ b/include/mruby/irep.h
@@ -16,11 +16,29 @@
MRB_BEGIN_DECL
enum irep_pool_type {
- IREP_TT_STRING,
- IREP_TT_FIXNUM,
- IREP_TT_FLOAT,
+ IREP_TT_STR = 0, /* string (need free) */
+ IREP_TT_SSTR = 2, /* string (static) */
+ IREP_TT_INT32 = 1, /* 32bit integer */
+ IREP_TT_INT64 = 3, /* 64bit integer */
+ IREP_TT_FLOAT = 5, /* float (double/float) */
};
+#define IREP_TT_NFLAG 1 /* number (non string) flag */
+#define IREP_TT_SFLAG 2 /* static string flag */
+#define IREP_TT_SFLAG 2 /* static string flag */
+
+typedef struct mrb_pool_value {
+ uint32_t tt; /* packed type and length (for string) */
+ union {
+ const char *str;
+ int32_t i32;
+#ifdef MRB_INT64
+ int64_t i64;
+#endif
+ mrb_float f;
+ } u;
+} mrb_pool_value;
+
struct mrb_lvinfo { /* local variable info (name, idx) */
mrb_sym name;
uint16_t r;
@@ -33,7 +51,7 @@ typedef struct mrb_irep {
uint8_t flags;
const mrb_code *iseq;
- const mrb_value *pool;
+ const mrb_pool_value *pool;
const mrb_sym *syms;
const struct mrb_irep **reps;
diff --git a/include/mruby/string.h b/include/mruby/string.h
index 93c94ef5d..0f1b762c1 100644
--- a/include/mruby/string.h
+++ b/include/mruby/string.h
@@ -92,9 +92,6 @@ struct RStringEmbed {
# define RSTR_COPY_ASCII_FLAG(dst, src) (void)0
#endif
-#define RSTR_POOL_P(s) ((s)->flags & MRB_STR_POOL)
-#define RSTR_SET_POOL_FLAG(s) ((s)->flags |= MRB_STR_POOL)
-
/**
* Returns a pointer from a Ruby string
*/
@@ -112,13 +109,11 @@ MRB_API mrb_int mrb_str_strlen(mrb_state*, struct RString*);
#define MRB_STR_FSHARED 2
#define MRB_STR_NOFREE 4
#define MRB_STR_EMBED 8 /* type flags up to here */
-#define MRB_STR_POOL 16 /* status flags from here */
-#define MRB_STR_ASCII 32
+#define MRB_STR_ASCII 16
#define MRB_STR_EMBED_LEN_SHIFT 6
#define MRB_STR_EMBED_LEN_BIT 5
#define MRB_STR_EMBED_LEN_MASK (((1 << MRB_STR_EMBED_LEN_BIT) - 1) << MRB_STR_EMBED_LEN_SHIFT)
-#define MRB_STR_TYPE_MASK (MRB_STR_POOL - 1)
-
+#define MRB_STR_TYPE_MASK 15
void mrb_gc_free_str(mrb_state*, struct RString*);
@@ -447,7 +442,6 @@ MRB_API int mrb_str_cmp(mrb_state *mrb, mrb_value str1, mrb_value str2);
*/
MRB_API char *mrb_str_to_cstr(mrb_state *mrb, mrb_value str);
-mrb_value mrb_str_pool(mrb_state *mrb, const char *s, mrb_int len, mrb_bool nofree);
uint32_t mrb_str_hash(mrb_state *mrb, mrb_value str);
mrb_value mrb_str_dump(mrb_state *mrb, mrb_value str);