factor/native/word.h

39 lines
852 B
C
Raw Normal View History

2004-07-16 02:26:21 -04:00
typedef struct {
2004-07-27 23:29:37 -04:00
/* TAGGED header */
CELL header;
/* TAGGED hashcode */
2004-08-29 04:03:16 -04:00
CELL hashcode;
/* TAGGED word name */
CELL name;
/* TAGGED word vocabulary */
CELL vocabulary;
/* TAGGED on-disk primitive number */
2004-07-16 02:26:21 -04:00
CELL primitive;
/* TAGGED parameter to xt; used for colon definitions */
CELL def;
/* TAGGED property hash for library code */
CELL props;
/* untagged execution token: jump here to execute word */
CELL xt;
} F_WORD;
2004-07-16 02:26:21 -04:00
2005-01-01 19:30:57 -05:00
typedef void (*XT)(F_WORD* word);
2004-12-31 02:38:58 -05:00
INLINE F_WORD* untag_word_fast(CELL tagged)
{
return (F_WORD*)UNTAG(tagged);
}
INLINE F_WORD* untag_word(CELL tagged)
2004-07-16 02:26:21 -04:00
{
type_check(WORD_TYPE,tagged);
2004-12-31 02:38:58 -05:00
return untag_word_fast(tagged);
2004-07-16 02:26:21 -04:00
}
void update_xt(F_WORD* word);
2004-07-16 02:26:21 -04:00
void primitive_word(void);
2004-12-24 02:52:02 -05:00
void primitive_update_xt(void);
void primitive_word_compiledp(void);
void fixup_word(F_WORD* word);
void collect_word(F_WORD* word);