/*
 * This is a machine-generated file. Please do not edit it by hand.
 * (As of sbcl-0.8.14, it came from WRITE-CONFIG-H in genesis.lisp.)
 *
 * This file contains low-level information about the
 * internals of a particular version and configuration
 * of SBCL. It is used by the C compiler to create a runtime
 * support environment, an executable program in the host
 * operating system's native format, which can then be used to
 * load and run 'core' files, which are basically programs
 * in SBCL's own format.
 */
#ifndef SBCL_GENESIS_INSTANCE
#define SBCL_GENESIS_INSTANCE
#ifdef __ASSEMBLER__

/* These offsets are SLOT-OFFSET * N-WORD-BYTES - LOWTAG
 * so they work directly on tagged addresses. */

#define INSTANCE_SLOTS_OFFSET 3
#define INSTANCE_SIZE 1

#else /* __ASSEMBLER__ */

#include "lispobj.h"
struct instance {
    lispobj header;
    lispobj slots[1];
};
static inline struct instance* INSTANCE(lispobj obj) {
  return (struct instance*)(obj - 1);
}

#endif /* __ASSEMBLER__ */
#ifdef __ASSEMBLER__

/* These offsets are SLOT-OFFSET * N-WORD-BYTES - LOWTAG
 * so they work directly on tagged addresses. */

#define FUNCALLABLE_INSTANCE_TRAMPOLINE_OFFSET -1
#define FUNCALLABLE_INSTANCE_LAYOUT_OFFSET 3
#define FUNCALLABLE_INSTANCE_FUNCTION_OFFSET 7
#define FUNCALLABLE_INSTANCE_INFO_OFFSET 11
#define FUNCALLABLE_INSTANCE_SIZE 4

#else /* __ASSEMBLER__ */

#include "lispobj.h"
struct funcallable_instance {
    lispobj header;
    lispobj trampoline;
    lispobj layout;
    lispobj function;
    lispobj info[1];
};

#endif /* __ASSEMBLER__ */

#define LAYOUT_LAYOUT_ID 3
#define HASHSET_LAYOUT_ID 9
#define HASHSET_STORAGE_LAYOUT_ID 10
#define LFLIST_NODE_LAYOUT_ID 4
#define FINALIZER_NODE_LAYOUT_ID 13
#define BROTHERTREE_UNARY_NODE_LAYOUT_ID 5
#define PACKAGE_LAYOUT_ID 8
#define HASH_TABLE_LAYOUT_ID 7

#ifndef __ASSEMBLER__

#include "lispobj.h"
struct layout {
    lispobj header; // = word_0_
    lispobj _layout;
    lispobj uw_flags;
    lispobj clos_hash;
    lispobj classoid;
    lispobj invalid;
    lispobj inherits;
    lispobj depthoid;
    lispobj length;
    lispobj _info;
    lispobj equalp_impl;
    lispobj slot_table;
    lispobj uw_id_word0;
    lispobj uw_id_word1;
    lispobj uw_id_word2;
    lispobj uw_id_word3;
    lispobj uw_id_word4;
    lispobj uw_id_word5;
};

#endif /* __ASSEMBLER__ */

static inline struct layout* LAYOUT(lispobj obj) {
  return (struct layout*)(obj - 1);
}
#include "instance.inc"
#endif
