inlining type_of; speeds up mandelbrot by a nice factor
parent
c82e2b032d
commit
50e40afde9
|
@ -14,7 +14,6 @@
|
|||
+ linearizer/generator:
|
||||
|
||||
- getenv/setenv: if literal arg, compile as a load/store
|
||||
- compiler: drop literal peephole optimization
|
||||
|
||||
+ compiler frontend:
|
||||
|
||||
|
|
|
@ -1,19 +1,5 @@
|
|||
#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)
|
||||
{
|
||||
return type_of(tagged) == type;
|
||||
|
|
|
@ -43,7 +43,8 @@ CELL T;
|
|||
#define NUMBER_TYPE 103 /* F_COMPLEX or REAL */
|
||||
#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);
|
||||
|
||||
INLINE CELL tag_header(CELL cell)
|
||||
|
@ -105,3 +106,17 @@ CELL untagged_object_size(CELL pointer);
|
|||
CELL object_size(CELL pointer);
|
||||
void primitive_type(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