GitHub

@@ -7,14 +7,14 @@

77

#ifndef MRUBY_BOXING_WORD_H

88

#define MRUBY_BOXING_WORD_H

9910-

#if defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32) && !defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE)

11-

# define MRB_WORDBOX_NO_FLOAT_TRUNCATE

10+

#if defined(MRB_32BIT) && !defined(MRB_USE_FLOAT32) && !defined(MRB_WORDBOX_NO_INLINE_FLOAT)

11+

# define MRB_WORDBOX_NO_INLINE_FLOAT

1212

#endif

13131414

#ifndef MRB_NO_FLOAT

1515

struct RFloat {

1616

MRB_OBJECT_HEADER;

17-

#ifdef MRB_WORDBOX_NO_FLOAT_TRUNCATE

17+

#ifdef MRB_WORDBOX_NO_INLINE_FLOAT

1818

/* avoid 8-byte alignment on 32-bit; use memcpy-based accessors */

1919

char f[sizeof(mrb_float)];

2020

#else

@@ -27,7 +27,7 @@ struct RFloat {

2727

static inline mrb_float

2828

mrb_rfloat_value(const struct RFloat *p)

2929

{

30-

#ifdef MRB_WORDBOX_NO_FLOAT_TRUNCATE

30+

#ifdef MRB_WORDBOX_NO_INLINE_FLOAT

3131

mrb_float f;

3232

memcpy(&f, p->f, sizeof(mrb_float));

3333

return f;

@@ -39,7 +39,7 @@ mrb_rfloat_value(const struct RFloat *p)

3939

static inline void

4040

mrb_rfloat_set(struct RFloat *p, mrb_float f)

4141

{

42-

#ifdef MRB_WORDBOX_NO_FLOAT_TRUNCATE

42+

#ifdef MRB_WORDBOX_NO_INLINE_FLOAT

4343

memcpy(p->f, &f, sizeof(mrb_float));

4444

#else

4545

p->f = f;

@@ -79,7 +79,7 @@ enum mrb_special_consts {

7979

#define WORDBOX_FIXNUM_FLAG (1 << (WORDBOX_FIXNUM_BIT_POS - 1))

8080

#define WORDBOX_FIXNUM_MASK ((1 << WORDBOX_FIXNUM_BIT_POS) - 1)

818182-

#if defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE) || defined(MRB_NO_FLOAT)

82+

#if defined(MRB_WORDBOX_NO_INLINE_FLOAT) || defined(MRB_NO_FLOAT)

8383

/* floats are allocated in heaps */

8484

#define WORDBOX_IMMEDIATE_MASK 0x03

8585

#define WORDBOX_SYMBOL_BIT_POS 2

@@ -127,7 +127,7 @@ enum mrb_special_consts {

127127

* float : ...FFFF FF10 (float32 shifted left by 2)

128128

* (other values same as above)

129129

*

130-

* word boxing without inline float (MRB_WORDBOX_NO_FLOAT_TRUNCATE):

130+

* word boxing without inline float (MRB_WORDBOX_NO_INLINE_FLOAT):

131131

* nil : ...0000 0000 (all bits are 0)

132132

* false : ...0000 0100 (mrb_fixnum(v) != 0)

133133

* true : ...0000 1100

@@ -145,7 +145,7 @@ union mrb_value_ {

145145

struct RBasic *bp;

146146

#ifndef MRB_NO_FLOAT

147147

struct RFloat *fp;

148-

#if !defined(MRB_WORDBOX_NO_FLOAT_TRUNCATE) && defined(MRB_USE_FLOAT32)

148+

#if !defined(MRB_WORDBOX_NO_INLINE_FLOAT) && defined(MRB_USE_FLOAT32)

149149

mrb_float f;

150150

#endif

151151

#endif

@@ -180,7 +180,7 @@ MRB_API mrb_value mrb_boxing_int_value(struct mrb_state*, mrb_int);

180180

#define mrb_ptr(o) mrb_val_union(o).p

181181

#define mrb_cptr(o) mrb_val_union(o).vp->p

182182

#ifndef MRB_NO_FLOAT

183-

#ifndef MRB_WORDBOX_NO_FLOAT_TRUNCATE

183+

#ifndef MRB_WORDBOX_NO_INLINE_FLOAT

184184

MRB_API mrb_float mrb_word_boxing_value_float(mrb_value v);

185185

#define mrb_float(o) mrb_word_boxing_value_float(o)

186186

#else

@@ -205,7 +205,7 @@ mrb_integer_func(mrb_value o) {

205205

#define mrb_false_p(o) ((o).w == MRB_Qfalse)

206206

#define mrb_true_p(o) ((o).w == MRB_Qtrue)

207207

#ifndef MRB_NO_FLOAT

208-

#ifdef MRB_WORDBOX_NO_FLOAT_TRUNCATE

208+

#ifdef MRB_WORDBOX_NO_INLINE_FLOAT

209209

#define mrb_float_p(o) WORDBOX_OBJ_TYPE_P(o, FLOAT)

210210

#elif defined(MRB_USE_FLOAT32) && defined(MRB_64BIT)

211211

#define mrb_float_p(o) WORDBOX_SHIFT_VALUE_P(o, FLOAT)

Read the original on github.com ↗