fix broken pic_float_p
This commit is contained in:
parent
dcb3820054
commit
ae376b4903
|
@ -43,7 +43,7 @@ typedef struct {
|
||||||
} pic_value;
|
} pic_value;
|
||||||
|
|
||||||
#define pic_ptr(v) ((void *)((long long)0xffffffffffff & (long long)(v).u.data))
|
#define pic_ptr(v) ((void *)((long long)0xffffffffffff & (long long)(v).u.data))
|
||||||
#define pic_vtype(v) (((v).u.type_ & 0xf0000)>>16)
|
#define pic_vtype(v) (((unsigned)0xfff00000 >= (v).u.type_) ? PIC_VTYPE_FLOAT : (((v).u.type_ & 0xf0000)>>16))
|
||||||
#define pic_init_value(v,vtype) (((v).u.type_ = ((unsigned int)0xfff00000|(unsigned int)((vtype)<<16))), (v).u.i = 0)
|
#define pic_init_value(v,vtype) (((v).u.type_ = ((unsigned int)0xfff00000|(unsigned int)((vtype)<<16))), (v).u.i = 0)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
38
src/value.c
38
src/value.c
|
@ -3,14 +3,9 @@
|
||||||
|
|
||||||
#include "picrin.h"
|
#include "picrin.h"
|
||||||
|
|
||||||
#if PIC_NAN_BOXING
|
|
||||||
|
|
||||||
enum pic_tt
|
enum pic_tt
|
||||||
pic_type(pic_value v)
|
pic_type(pic_value v)
|
||||||
{
|
{
|
||||||
if ((int)0xfff00000 >= v.u.type_)
|
|
||||||
return PIC_TT_FLOAT;
|
|
||||||
|
|
||||||
switch (pic_vtype(v)) {
|
switch (pic_vtype(v)) {
|
||||||
case PIC_VTYPE_NIL:
|
case PIC_VTYPE_NIL:
|
||||||
return PIC_TT_NIL;
|
return PIC_TT_NIL;
|
||||||
|
@ -37,39 +32,6 @@ pic_type(pic_value v)
|
||||||
abort();
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
enum pic_tt
|
|
||||||
pic_type(pic_value v)
|
|
||||||
{
|
|
||||||
switch (pic_vtype(v)) {
|
|
||||||
case PIC_VTYPE_NIL:
|
|
||||||
return PIC_TT_NIL;
|
|
||||||
case PIC_VTYPE_TRUE:
|
|
||||||
return PIC_TT_BOOL;
|
|
||||||
case PIC_VTYPE_FALSE:
|
|
||||||
return PIC_TT_BOOL;
|
|
||||||
case PIC_VTYPE_UNDEF:
|
|
||||||
return PIC_TT_UNDEF;
|
|
||||||
case PIC_VTYPE_FLOAT:
|
|
||||||
return PIC_TT_FLOAT;
|
|
||||||
case PIC_VTYPE_INT:
|
|
||||||
return PIC_TT_INT;
|
|
||||||
case PIC_VTYPE_SYMBOL:
|
|
||||||
return PIC_TT_SYMBOL;
|
|
||||||
case PIC_VTYPE_CHAR:
|
|
||||||
return PIC_TT_CHAR;
|
|
||||||
case PIC_VTYPE_EOF:
|
|
||||||
return PIC_TT_EOF;
|
|
||||||
case PIC_VTYPE_HEAP:
|
|
||||||
return ((struct pic_object *)v.u.data)->tt;
|
|
||||||
}
|
|
||||||
/* logic flaw (suppress warnings gcc will emit) */
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
pic_type_repr(enum pic_tt tt)
|
pic_type_repr(enum pic_tt tt)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue