inlining type_of; speeds up mandelbrot by a nice factor

cvs
Slava Pestov 2004-12-19 01:32:32 +00:00
parent c82e2b032d
commit 50e40afde9
3 changed files with 16 additions and 16 deletions

View File

@ -14,7 +14,6 @@
+ linearizer/generator:
- getenv/setenv: if literal arg, compile as a load/store
- compiler: drop literal peephole optimization
+ compiler frontend:

View File

@ -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;

View File

@ -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;
}