summaryrefslogtreecommitdiffhomepage
path: root/src/kernel.c
diff options
context:
space:
mode:
authorTomasz Dąbrowski <[email protected]>2016-11-16 17:43:55 +0100
committerYukihiro "Matz" Matsumoto <[email protected]>2016-11-17 17:19:49 +0900
commit4cca8bac6bbdab02eba11e6527f793f2e9a5e75d (patch)
tree6b08ca177e1ebeaa0be3d87a993b27fbe58f795e /src/kernel.c
parent784e07f902790dd13d33460d7365a2f0aee85727 (diff)
downloadmruby-4cca8bac6bbdab02eba11e6527f793f2e9a5e75d.tar.gz
mruby-4cca8bac6bbdab02eba11e6527f793f2e9a5e75d.zip
inline structures data type for mruby (MRB_TT_INLINE) (fix #3237)
Inline structures have no instance variables, no finalizer, and offer as much space as possible in RBASIC object. This means 24 bytes on 64-bit platforms and 12 bytes on 32-bit platforms. mruby-inline-struct gem is only provided for testing.
Diffstat (limited to 'src/kernel.c')
-rw-r--r--src/kernel.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/kernel.c b/src/kernel.c
index df237cd46..4a4b6b414 100644
--- a/src/kernel.c
+++ b/src/kernel.c
@@ -11,6 +11,7 @@
#include <mruby/string.h>
#include <mruby/variable.h>
#include <mruby/error.h>
+#include <mruby/inline.h>
typedef enum {
NOEX_PUBLIC = 0x00,
@@ -301,6 +302,9 @@ init_copy(mrb_state *mrb, mrb_value dest, mrb_value obj)
case MRB_TT_EXCEPTION:
mrb_iv_copy(mrb, dest, obj);
break;
+ case MRB_TT_INLINE:
+ mrb_inline_copy(dest, obj);
+ break;
default:
break;