blob: 0d9aa8d416f5d85883152f9bc5c07947c1f75d39 [file] [log] [blame]
//===----- ObjectHeader.h - Macros for describing an object header --------===//
//
// The VMKit project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef MVM_OBJECT_HEADER_H
#define MVM_OBJECT_HEADER_H
#include <stdint.h>
namespace mvm {
#if (__WORDSIZE == 64)
static const uint64_t FatMask = 0x8000000000000000;
#else
static const uint64_t FatMask = 0x80000000;
#endif
static const uint64_t ThinCountMask = 0xFF000;
static const uint64_t ThinCountShift = 12;
static const uint64_t ThinCountAdd = 0x1000;
static const uint64_t NonLockBitsMask = 0xFFF;
static const uint64_t HashMask = 0xFF0;
static const uint64_t GCBitMask = 0xF;
static const uint32_t NonLockBits = 12;
static const uint32_t HashBits = 0;
static const uint32_t GCBits = 4;
static const bool MovesObject = false;
}
#endif // MVM_OBJECT_HEADER_H