fix misplaced flag
The misplacement of `SCHEME_PRIM_SOMETIMES_INLINED` caused the optimizer to produce different results when the JIT is statically disabled, for example.
This commit is contained in:
parent
166d6fd8a3
commit
0e35b5cfad
|
@ -762,17 +762,12 @@ typedef struct Scheme_Offset_Cptr
|
|||
#define SCHEME_PRIM_STRUCT_TYPE_BROKEN_INDEXED_SETTER (32 | 128)
|
||||
#define SCHEME_PRIM_TYPE_PARAMETER 64
|
||||
#define SCHEME_PRIM_TYPE_STRUCT_PROP_GETTER (64 | 128)
|
||||
#define SCHEME_PRIM_SOMETIMES_INLINED (64 | 256)
|
||||
#define SCHEME_PRIM_STRUCT_TYPE_STRUCT_PROP_PRED (64 | 128 | 256)
|
||||
#define SCHEME_PRIM_STRUCT_TYPE_INDEXED_GETTER 32
|
||||
#define SCHEME_PRIM_STRUCT_TYPE_PRED (32 | 64)
|
||||
|
||||
#define SCHEME_PRIM_PROC_FLAGS(x) (((Scheme_Prim_Proc_Header *)x)->flags)
|
||||
|
||||
#define SCHEME_PRIM_IS_SOMETIMES_INLINED(rator) \
|
||||
(((SCHEME_PRIM_PROC_FLAGS(rator) & SCHEME_PRIM_OTHER_TYPE_MASK) == SCHEME_PRIM_SOMETIMES_INLINED) \
|
||||
|| (SCHEME_PRIM_PROC_FLAGS(rator) & (SCHEME_PRIM_IS_UNARY_INLINED | SCHEME_PRIM_IS_BINARY_INLINED)))
|
||||
|
||||
typedef struct Scheme_Object *(Scheme_Prim)(int argc, Scheme_Object *argv[]);
|
||||
|
||||
typedef struct Scheme_Object *(Scheme_Primitive_Closure_Proc)(int argc, struct Scheme_Object *argv[], Scheme_Object *p);
|
||||
|
|
|
@ -76,8 +76,9 @@
|
|||
#define SCHEME_PRIM_WANTS_EXTFLONUM_THIRD (1 << 12)
|
||||
#define SCHEME_PRIM_IS_UNSAFE_NONALLOCATE (1 << 13)
|
||||
#define SCHEME_PRIM_ALWAYS_ESCAPES (1 << 14)
|
||||
#define SCHEME_PRIM_SOMETIMES_INLINED (1 << 15)
|
||||
|
||||
#define SCHEME_PRIM_OPT_TYPE_SHIFT 15
|
||||
#define SCHEME_PRIM_OPT_TYPE_SHIFT 16
|
||||
#define SCHEME_PRIM_OPT_TYPE_MASK (SCHEME_MAX_LOCAL_TYPE_MASK << SCHEME_PRIM_OPT_TYPE_SHIFT)
|
||||
#define SCHEME_PRIM_OPT_TYPE(x) ((x & SCHEME_PRIM_OPT_TYPE_MASK) >> SCHEME_PRIM_OPT_TYPE_SHIFT)
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user