summaryrefslogtreecommitdiff
path: root/ruby.h
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-11-01 14:42:39 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-11-01 14:42:39 +0000
commit15df557a4d843f0c2882d710f3e2ccbcf2360d1a (patch)
tree0ea3460698c535fe1d3be5217743e2aebf932a72 /ruby.h
parent11e562f34afff4d657da12e85f959200207d6bd5 (diff)
* ruby.h (struct RArray): revert embedding ptr in RVALUE.
* array.c: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@11256 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby.h')
-rw-r--r--ruby.h30
1 files changed, 7 insertions, 23 deletions
diff --git a/ruby.h b/ruby.h
index fd0f5ebca4..3ec19e1a91 100644
--- a/ruby.h
+++ b/ruby.h
@@ -391,33 +391,17 @@ struct RString {
RSTRING(str)->as.ary : \
RSTRING(str)->as.heap.ptr)
-#define RARRAY_EMBED_LEN_MAX 3
struct RArray {
struct RBasic basic;
+ long len;
union {
- struct {
- long len;
- union {
- long capa;
- VALUE shared;
- } aux;
- VALUE *ptr;
- } heap;
- VALUE ary[RARRAY_EMBED_LEN_MAX];
- } as;
+ long capa;
+ VALUE shared;
+ } aux;
+ VALUE *ptr;
};
-#define RARRAY_NOEMBED FL_USER3
-#define RARRAY_EMBED_LEN_MASK (FL_USER4|FL_USER5)
-#define RARRAY_EMBED_LEN_SHIFT (FL_USHIFT+4)
-#define RARRAY_LEN(a) \
- (!(RBASIC(a)->flags & RARRAY_NOEMBED) ? \
- (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & \
- (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)) : \
- RARRAY(a)->as.heap.len)
-#define RARRAY_PTR(a) \
- (!(RBASIC(a)->flags & RARRAY_NOEMBED) ? \
- RARRAY(a)->as.ary : \
- RARRAY(a)->as.heap.ptr)
+#define RARRAY_LEN(a) RARRAY(a)->len
+#define RARRAY_PTR(a) RARRAY(a)->ptr
struct RRegexp {
struct RBasic basic;