//===----------- MMTkObject.h - Internal object type for MMTk  ------------===//
//
//                              The VMKit project
//
// This file is distributed under the University of Illinois Open Source 
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef MMTK_OBJECT_H
#define MMTK_OBJECT_H

#include <stdint.h>
#include "MutatorThread.h"
#include "VmkitGC.h"

namespace mmtk {

struct MMTkObject;

struct MMTkClass {
  MMTkObject* delegatee;
};

struct MMTkVirtualTable : public VirtualTable {
  MMTkClass* cl;
};

struct MMTkObject {
  MMTkVirtualTable* virtualTable;
};

struct MMTkArray : public MMTkObject {
  word_t size;
  uint16_t elements[1];
};

struct MMTkObjectArray : public MMTkObject {
  word_t size;
  MMTkObject* elements[1];
};

struct MMTkString : public MMTkObject {
  MMTkArray* value;
#ifndef USE_OPENJDK
  // Classpath fields
  int32_t count;
  int32_t cachedHashCode;
  int32_t offset;
#else
  // OpenJDK fields
  int32_t offset;
  int32_t count;
  int32_t cachedHashCode;
#endif
};

struct MMTkLock : public MMTkObject {
  uint32_t state;
  MMTkString* name;
};

struct MMTkActivePlan : public MMTkObject {
  vmkit::MutatorThread* current;
};

struct MMTkReferenceProcessor : public MMTkObject {
  MMTkObject* semantics;
  int32_t ordinal;
};

} // namespace mmtk

#endif // MMTK_OBJECT_H
