inlining type_of; speeds up mandelbrot by a nice factor
parent
c82e2b032d
commit
50e40afde9
|
@ -14,7 +14,6 @@
|
||||||
+ linearizer/generator:
|
+ linearizer/generator:
|
||||||
|
|
||||||
- getenv/setenv: if literal arg, compile as a load/store
|
- getenv/setenv: if literal arg, compile as a load/store
|
||||||
- compiler: drop literal peephole optimization
|
|
||||||
|
|
||||||
+ compiler frontend:
|
+ compiler frontend:
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,5 @@
|
||||||
#include "factor.h"
|
#include "factor.h"
|
||||||
|
|
||||||
CELL type_of(CELL tagged)
|
|
||||||
{
|
|
||||||
CELL tag = TAG(tagged);
|
|
||||||
if(tag == OBJECT_TYPE)
|
|
||||||
{
|
|
||||||
if(tagged == F)
|
|
||||||
return F_TYPE;
|
|
||||||
else
|
|
||||||
return untag_header(get(UNTAG(tagged)));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool typep(CELL type, CELL tagged)
|
bool typep(CELL type, CELL tagged)
|
||||||
{
|
{
|
||||||
return type_of(tagged) == type;
|
return type_of(tagged) == type;
|
||||||
|
|
|
@ -43,7 +43,8 @@ CELL T;
|
||||||
#define NUMBER_TYPE 103 /* F_COMPLEX or REAL */
|
#define NUMBER_TYPE 103 /* F_COMPLEX or REAL */
|
||||||
#define TEXT_TYPE 104 /* F_FIXNUM or F_STRING */
|
#define TEXT_TYPE 104 /* F_FIXNUM or F_STRING */
|
||||||
|
|
||||||
CELL type_of(CELL tagged);
|
/* CELL type_of(CELL tagged); */
|
||||||
|
|
||||||
bool typep(CELL type, CELL tagged);
|
bool typep(CELL type, CELL tagged);
|
||||||
|
|
||||||
INLINE CELL tag_header(CELL cell)
|
INLINE CELL tag_header(CELL cell)
|
||||||
|
@ -105,3 +106,17 @@ CELL untagged_object_size(CELL pointer);
|
||||||
CELL object_size(CELL pointer);
|
CELL object_size(CELL pointer);
|
||||||
void primitive_type(void);
|
void primitive_type(void);
|
||||||
void primitive_size(void);
|
void primitive_size(void);
|
||||||
|
|
||||||
|
INLINE CELL type_of(CELL tagged)
|
||||||
|
{
|
||||||
|
CELL tag = TAG(tagged);
|
||||||
|
if(tag == OBJECT_TYPE)
|
||||||
|
{
|
||||||
|
if(tagged == F)
|
||||||
|
return F_TYPE;
|
||||||
|
else
|
||||||
|
return untag_header(get(UNTAG(tagged)));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue