blob: b3995c435c09e9cf5d7969740fa60593dffcb7a3 [file] [log] [blame]
//===-------------- 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 "mvm/JIT.h"
namespace j3 {
class J3Intrinsics : public mvm::BaseIntrinsics {
public:
const llvm::Type* JavaArrayUInt8Type;
const llvm::Type* JavaArraySInt8Type;
const llvm::Type* JavaArrayUInt16Type;
const llvm::Type* JavaArraySInt16Type;
const llvm::Type* JavaArrayUInt32Type;
const llvm::Type* JavaArraySInt32Type;
const llvm::Type* JavaArrayLongType;
const llvm::Type* JavaArrayFloatType;
const llvm::Type* JavaArrayDoubleType;
const llvm::Type* JavaArrayObjectType;
const llvm::Type* VTType;
const llvm::Type* JavaObjectType;
const llvm::Type* JavaArrayType;
const llvm::Type* JavaCommonClassType;
const llvm::Type* JavaClassType;
const llvm::Type* JavaClassArrayType;
const llvm::Type* JavaClassPrimitiveType;
const llvm::Type* ConstantPoolType;
const llvm::Type* CodeLineInfoType;
const llvm::Type* UTF8Type;
const llvm::Type* JavaMethodType;
const llvm::Type* JavaFieldType;
const llvm::Type* AttributType;
const llvm::Type* JavaThreadType;
const llvm::Type* MutatorThreadType;
#ifdef ISOLATE_SHARING
const llvm::Type* JnjvmType;
#endif
llvm::Function* EmptyTracerFunction;
llvm::Function* JavaObjectTracerFunction;
llvm::Function* JavaArrayTracerFunction;
llvm::Function* ArrayObjectTracerFunction;
llvm::Function* RegularObjectTracerFunction;
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;
#ifndef WITHOUT_VTABLE
llvm::Function* VirtualLookupFunction;
#endif
llvm::Function* IsAssignableFromFunction;
llvm::Function* IsSecondaryClassFunction;
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;
#ifdef ISOLATE_SHARING
llvm::Function* GetCtpClassFunction;
llvm::Function* GetJnjvmExceptionClassFunction;
llvm::Function* GetJnjvmArrayClassFunction;
llvm::Function* StaticCtpLookupFunction;
llvm::Function* SpecialCtpLookupFunction;
#endif
#ifdef SERVICE
llvm::Function* ServiceCallStartFunction;
llvm::Function* ServiceCallStopFunction;
#endif
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* OverflowThinLockFunction;
llvm::Function* GetFinalInt8FieldFunction;
llvm::Function* GetFinalInt16FieldFunction;
llvm::Function* GetFinalInt32FieldFunction;
llvm::Function* GetFinalLongFieldFunction;
llvm::Function* GetFinalFloatFieldFunction;
llvm::Function* GetFinalDoubleFieldFunction;
llvm::Function* GetFinalObjectFieldFunction;
llvm::Constant* JavaArraySizeOffsetConstant;
llvm::Constant* JavaArrayElementsOffsetConstant;
llvm::Constant* JavaObjectLockOffsetConstant;
llvm::Constant* JavaObjectVTOffsetConstant;
llvm::Constant* OffsetAccessInCommonClassConstant;
llvm::Constant* IsArrayConstant;
llvm::Constant* IsPrimitiveConstant;
llvm::Constant* OffsetObjectSizeInClassConstant;
llvm::Constant* OffsetVTInClassConstant;
llvm::Constant* OffsetTaskClassMirrorInClassConstant;
llvm::Constant* OffsetVirtualMethodsInClassConstant;
llvm::Constant* OffsetStaticInstanceInTaskClassMirrorConstant;
llvm::Constant* OffsetInitializedInTaskClassMirrorConstant;
llvm::Constant* OffsetStatusInTaskClassMirrorConstant;
llvm::Constant* OffsetDoYieldInThreadConstant;
llvm::Constant* OffsetIsolateInThreadConstant;
llvm::Constant* OffsetJNIInThreadConstant;
llvm::Constant* OffsetJavaExceptionInThreadConstant;
llvm::Constant* OffsetCXXExceptionInThreadConstant;
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;
J3Intrinsics(llvm::Module*);
static void initialise();
};
}
#endif