//===-------------- J3Intrinsics.h - Intrinsics of J3 ---------------------===//
//
//                            The VMKit project
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//

#ifndef J3_INTRINSICS_H
#define J3_INTRINSICS_H

#include "vmkit/JIT.h"

namespace j3 {

class J3Intrinsics : public vmkit::BaseIntrinsics {

public:
  void init(llvm::Module* M);

  llvm::Type* JavaArrayUInt8Type;
  llvm::Type* JavaArraySInt8Type;
  llvm::Type* JavaArrayUInt16Type;
  llvm::Type* JavaArraySInt16Type;
  llvm::Type* JavaArrayUInt32Type;
  llvm::Type* JavaArraySInt32Type;
  llvm::Type* JavaArrayLongType;
  llvm::Type* JavaArrayFloatType;
  llvm::Type* JavaArrayDoubleType;
  llvm::Type* JavaArrayObjectType;
  
  llvm::Type* VTType;
  llvm::Type* ObjectHeaderType;
  llvm::Type* JavaObjectType;
  llvm::Type* JavaArrayType;
  llvm::Type* JavaCommonClassType;
  llvm::Type* JavaClassType;
  llvm::Type* JavaClassArrayType;
  llvm::Type* JavaClassPrimitiveType;
  llvm::Type* ClassBytesType;
  llvm::Type* JavaConstantPoolType;
  llvm::Type* ResolvedConstantPoolType;
  llvm::Type* UTF8Type;
  llvm::Type* JavaMethodType;
  llvm::Type* JavaFieldType;
  llvm::Type* AttributeType;
  llvm::Type* JavaThreadType;
  llvm::Type* MutatorThreadType;
  llvm::Type* J3DenseMapType;
  
  llvm::Function* VTAllocateFunction;
  llvm::Function* VTAllocateUnresolvedFunction;

  llvm::Function* StartJNIFunction;
  llvm::Function* EndJNIFunction;
  llvm::Function* InterfaceLookupFunction;
  llvm::Function* VirtualFieldLookupFunction;
  llvm::Function* StaticFieldLookupFunction;
  llvm::Function* PrintExecutionFunction;
  llvm::Function* PrintMethodStartFunction;
  llvm::Function* PrintMethodEndFunction;
  llvm::Function* InitialiseClassFunction;
  llvm::Function* InitialisationCheckFunction;
  llvm::Function* ForceInitialisationCheckFunction;
  llvm::Function* ForceLoadedCheckFunction;
  llvm::Function* ClassLookupFunction;
  llvm::Function* StringLookupFunction;
  
  llvm::Function* ResolveVirtualStubFunction;
  llvm::Function* ResolveSpecialStubFunction;
  llvm::Function* ResolveStaticStubFunction;
  llvm::Function* ResolveInterfaceFunction;

  llvm::Function* VirtualLookupFunction;
  llvm::Function* IsSubclassOfFunction;
  llvm::Function* IsSubclassOfFunctionInner;
  llvm::Function* CheckIfAssignable;
  llvm::Function* IsSecondaryClassFunction;
  llvm::Function* IsSecondaryClassFunctionInner;
  llvm::Function* GetDepthFunction;
  llvm::Function* GetDisplayFunction;
  llvm::Function* GetVTInDisplayFunction;
  llvm::Function* GetStaticInstanceFunction;
  llvm::Function* AquireObjectFunction;
  llvm::Function* ReleaseObjectFunction;
  llvm::Function* GetConstantPoolAtFunction;
  llvm::Function* MultiCallNewFunction;
  llvm::Function* GetArrayClassFunction;

  llvm::Function* GetClassDelegateeFunction;
  llvm::Function* RuntimeDelegateeFunction;
  llvm::Function* ArrayLengthFunction;
  llvm::Function* GetVTFunction;
  llvm::Function* GetIMTFunction;
  llvm::Function* GetClassFunction;
  llvm::Function* GetVTFromClassFunction;
  llvm::Function* GetVTFromClassArrayFunction;
  llvm::Function* GetVTFromCommonClassFunction;
  llvm::Function* GetObjectSizeFromClassFunction;
  llvm::Function* GetBaseClassVTFromVTFunction;

  llvm::Function* GetLockFunction;
  
  llvm::Function* GetFinalInt8FieldFunction;
  llvm::Function* GetFinalInt16FieldFunction;
  llvm::Function* GetFinalInt32FieldFunction;
  llvm::Function* GetFinalLongFieldFunction;
  llvm::Function* GetFinalFloatFieldFunction;
  llvm::Function* GetFinalDoubleFieldFunction;
  
  llvm::Constant* JavaArraySizeOffsetConstant;
  llvm::Constant* JavaArrayElementsOffsetConstant;
  llvm::Constant* HeaderObjectLockOffsetConstant;
  llvm::Constant* JavaObjectVTOffsetConstant;

  llvm::Constant* OffsetAccessInCommonClassConstant;
  llvm::Constant* IsArrayConstant;
  llvm::Constant* IsPrimitiveConstant;
  llvm::Constant* OffsetObjectSizeInClassConstant;
  llvm::Constant* OffsetVTInClassConstant;
  llvm::Constant* OffsetTaskClassMirrorInClassConstant;
  llvm::Constant* OffsetStaticInstanceInTaskClassMirrorConstant;
  llvm::Constant* OffsetInitializedInTaskClassMirrorConstant;
  llvm::Constant* OffsetStatusInTaskClassMirrorConstant;
  
  llvm::Constant* OffsetDoYieldInThreadConstant;
  llvm::Constant* OffsetIsolateIDInThreadConstant;
  llvm::Constant* OffsetVMInThreadConstant;
  llvm::Constant* OffsetThreadInMutatorThreadConstant;
  llvm::Constant* OffsetJNIInJavaThreadConstant;
  llvm::Constant* OffsetJavaExceptionInJavaThreadConstant;

  llvm::Constant* OffsetClassInVTConstant;
  llvm::Constant* OffsetDepthInVTConstant;
  llvm::Constant* OffsetDisplayInVTConstant;
  llvm::Constant* OffsetBaseClassVTInVTConstant;
  llvm::Constant* OffsetIMTInVTConstant;
  
  llvm::Constant* OffsetBaseClassInArrayClassConstant;
  llvm::Constant* OffsetLogSizeInPrimitiveClassConstant;
  
  llvm::Constant* ClassReadyConstant;

  llvm::Constant* JavaObjectNullConstant;
  llvm::Constant* MaxArraySizeConstant;
  llvm::Constant* JavaArraySizeConstant;

  llvm::Function* ThrowExceptionFunction;
  llvm::Function* NullPointerExceptionFunction;
  llvm::Function* IndexOutOfBoundsExceptionFunction;
  llvm::Function* ClassCastExceptionFunction;
  llvm::Function* OutOfMemoryErrorFunction;
  llvm::Function* StackOverflowErrorFunction;
  llvm::Function* NegativeArraySizeExceptionFunction;
  llvm::Function* ArrayStoreExceptionFunction;
  llvm::Function* ArithmeticExceptionFunction;
  llvm::Function* ThrowExceptionFromJITFunction;
};

}

#endif
