Jitrino.CompilationInterface Class Reference

#include <VMInterface.h>

List of all members.

Public Types

enum  SystemExceptionId {
  Exception_NullPointer = 0, Exception_ArrayIndexOutOfBounds, Exception_ArrayTypeMismatch, Exception_DivideByZero,
  Num_SystemExceptions
}

Public Member Functions

 CompilationInterface (Compile_Handle c, Method_Handle m, JIT_Handle jit, MemoryManager &mm, OpenMethodExecutionParams &comp_params, CompilationContext *cc, TypeManager &tpm)
HELPER_CALLING_CONVENTION getRuntimeHelperCallingConvention (VM_RT_SUPPORT id)
bool isInterruptible (VM_RT_SUPPORT id)
bool mayBeInterruptible (VM_RT_SUPPORT id)
void * getRuntimeHelperAddress (VM_RT_SUPPORT)
void * getRuntimeHelperAddressForType (VM_RT_SUPPORT, Type *)
MethodDescgetMagicHelper (VM_RT_SUPPORT)
Type * getFieldType (Class_Handle enclClass, uint32 cpIndex)
NamedType * getNamedType (Class_Handle enclClass, uint32 cpIndex, ResolveNewCheck check=ResolveNewCheck_NoCheck)
Type * getTypeFromDescriptor (Class_Handle enclClass, const char *descriptor)
NamedType * resolveNamedType (Class_Handle enclClass, uint32 cpIndex)
MethodDescgetStaticMethod (Class_Handle enclClass, uint32 cpIndex)
MethodDescgetVirtualMethod (Class_Handle enclClass, uint32 cpIndex)
MethodDescgetSpecialMethod (Class_Handle enclClass, uint32 cpIndex)
MethodDescgetInterfaceMethod (Class_Handle enclClass, uint32 cpIndex)
FieldDescgetNonStaticField (Class_Handle enclClass, uint32 cpIndex, bool putfield)
FieldDescgetStaticField (Class_Handle enclClass, uint32 cpIndex, bool putfield)
FieldDescgetFieldByName (Class_Handle enclClass, const char *name)
MethodDescgetMethodByName (Class_Handle enclClass, const char *name)
ObjectType * findClassUsingBootstrapClassloader (const char *klassName)
 Returns a system class by its name or NULL if no such class found.
MethodDescresolveMethod (ObjectType *klass, const char *methodName, const char *methodSig)
 Recursively looks up for a given method with a given signature in the given class.
MethodDescgetOverriddenMethod (NamedType *type, MethodDesc *methodDesc)
void * getStringInternAddr (MethodDesc *enclosingMethodDesc, uint32 stringToken)
Type * getConstantType (MethodDesc *enclosingMethodDesc, uint32 constantToken)
const void * getConstantValue (MethodDesc *enclosingMethodDesc, uint32 constantToken)
const char * getSignatureString (MethodDesc *enclosingMethodDesc, uint32 methodToken)
Byte * allocateCodeBlock (size_t size, size_t alignment, CodeBlockHeat heat, int32 id, bool simulate)
Byte * allocateDataBlock (size_t size, size_t alignment)
Byte * allocateInfoBlock (size_t size)
Byte * allocateJITDataBlock (size_t size, size_t alignment)
void lockMethodData (void)
 Acquires a lock to protect method's data modifications (i.e.
void unlockMethodData (void)
 Releases a lock which protects method's data.
void setNotifyWhenClassIsExtended (ObjectType *type, void *callbackData)
void setNotifyWhenMethodIsOverridden (MethodDesc *methodDesc, void *callbackData)
void setNotifyWhenMethodIsRecompiled (MethodDesc *methodDesc, void *callbackData)
bool needWriteBarriers () const
bool isBCMapInfoRequired () const
void setBCMapInfoRequired (bool is_supported) const
bool isCompileLoadEventRequired () const
void sendCompiledMethodLoadEvent (MethodDesc *methodDesc, MethodDesc *outerDesc, uint32 codeSize, void *codeAddr, uint32 mapLength, AddrLocation *addrLocationMap, void *compileInfo)
OpenMethodExecutionParams & getCompilationParams () const
bool compileMethod (MethodDesc *method)
 Requests VM to request this JIT to synchronously (in the same thread) compile given method.
MethodDescgetMethodToCompile () const
TypeManager & getTypeManager () const
MemoryManager & getMemManager () const
Type * getTypeFromDrlVMTypeHandle (Type_Info_Handle)
FieldDescgetFieldDesc (Field_Handle field)
MethodDescgetMethodDesc (Method_Handle method)
void setCompilationContext (CompilationContext *cc)
CompilationContext * getCompilationContext () const

Static Public Member Functions

static const char * getRuntimeHelperName (VM_RT_SUPPORT helperId)
static VM_RT_SUPPORT str2rid (const char *helperName)
 Returns helper ID by its string representation.
static const char * getMethodName (Class_Handle enclClass, uint32 cpIndex)
static const char * getMethodClassName (Class_Handle enclClass, uint32 cpIndex)
static const char * getFieldSignature (Class_Handle enclClass, uint32 cpIndex)


Member Enumeration Documentation

enum Jitrino::CompilationInterface::SystemExceptionId

Enumerator:
Exception_NullPointer 
Exception_ArrayIndexOutOfBounds 
Exception_ArrayTypeMismatch 
Exception_DivideByZero 
Num_SystemExceptions 


Constructor & Destructor Documentation

Jitrino.CompilationInterface.CompilationInterface ( Compile_Handle  c,
Method_Handle  m,
JIT_Handle  jit,
MemoryManager &  mm,
OpenMethodExecutionParams &  comp_params,
CompilationContext *  cc,
TypeManager &  tpm 
)


Member Function Documentation

static const char* Jitrino.CompilationInterface.getRuntimeHelperName ( VM_RT_SUPPORT  helperId  )  [static]

static VM_RT_SUPPORT Jitrino.CompilationInterface.str2rid ( const char *  helperName  )  [static]

Returns helper ID by its string representation.

Name comparison is case-insensitive. If the helperName is unknown, then VM_RT_UNKNOWN is returned.

HELPER_CALLING_CONVENTION Jitrino.CompilationInterface.getRuntimeHelperCallingConvention ( VM_RT_SUPPORT  id  ) 

bool Jitrino.CompilationInterface.isInterruptible ( VM_RT_SUPPORT  id  ) 

bool Jitrino.CompilationInterface.mayBeInterruptible ( VM_RT_SUPPORT  id  ) 

void* Jitrino.CompilationInterface.getRuntimeHelperAddress ( VM_RT_SUPPORT   ) 

void* Jitrino.CompilationInterface.getRuntimeHelperAddressForType ( VM_RT_SUPPORT  ,
Type *   
)

MethodDesc* Jitrino.CompilationInterface.getMagicHelper ( VM_RT_SUPPORT   ) 

Type* Jitrino.CompilationInterface.getFieldType ( Class_Handle  enclClass,
uint32  cpIndex 
)

NamedType* Jitrino.CompilationInterface.getNamedType ( Class_Handle  enclClass,
uint32  cpIndex,
ResolveNewCheck  check = ResolveNewCheck_NoCheck 
)

Type* Jitrino.CompilationInterface.getTypeFromDescriptor ( Class_Handle  enclClass,
const char *  descriptor 
)

NamedType* Jitrino.CompilationInterface.resolveNamedType ( Class_Handle  enclClass,
uint32  cpIndex 
)

static const char* Jitrino.CompilationInterface.getMethodName ( Class_Handle  enclClass,
uint32  cpIndex 
) [static]

static const char* Jitrino.CompilationInterface.getMethodClassName ( Class_Handle  enclClass,
uint32  cpIndex 
) [static]

static const char* Jitrino.CompilationInterface.getFieldSignature ( Class_Handle  enclClass,
uint32  cpIndex 
) [static]

MethodDesc* Jitrino.CompilationInterface.getStaticMethod ( Class_Handle  enclClass,
uint32  cpIndex 
)

MethodDesc* Jitrino.CompilationInterface.getVirtualMethod ( Class_Handle  enclClass,
uint32  cpIndex 
)

MethodDesc* Jitrino.CompilationInterface.getSpecialMethod ( Class_Handle  enclClass,
uint32  cpIndex 
)

MethodDesc* Jitrino.CompilationInterface.getInterfaceMethod ( Class_Handle  enclClass,
uint32  cpIndex 
)

FieldDesc* Jitrino.CompilationInterface.getNonStaticField ( Class_Handle  enclClass,
uint32  cpIndex,
bool  putfield 
)

FieldDesc* Jitrino.CompilationInterface.getStaticField ( Class_Handle  enclClass,
uint32  cpIndex,
bool  putfield 
)

FieldDesc* Jitrino.CompilationInterface.getFieldByName ( Class_Handle  enclClass,
const char *  name 
)

MethodDesc* Jitrino.CompilationInterface.getMethodByName ( Class_Handle  enclClass,
const char *  name 
)

ObjectType* Jitrino.CompilationInterface.findClassUsingBootstrapClassloader ( const char *  klassName  ) 

Returns a system class by its name or NULL if no such class found.

MethodDesc* Jitrino.CompilationInterface.resolveMethod ( ObjectType *  klass,
const char *  methodName,
const char *  methodSig 
)

Recursively looks up for a given method with a given signature in the given class.

Returns NULL if no such method found.

MethodDesc* Jitrino.CompilationInterface.getOverriddenMethod ( NamedType *  type,
MethodDesc methodDesc 
)

void* Jitrino.CompilationInterface.getStringInternAddr ( MethodDesc enclosingMethodDesc,
uint32  stringToken 
)

Type* Jitrino.CompilationInterface.getConstantType ( MethodDesc enclosingMethodDesc,
uint32  constantToken 
)

const void* Jitrino.CompilationInterface.getConstantValue ( MethodDesc enclosingMethodDesc,
uint32  constantToken 
)

const char* Jitrino.CompilationInterface.getSignatureString ( MethodDesc enclosingMethodDesc,
uint32  methodToken 
)

Byte* Jitrino.CompilationInterface.allocateCodeBlock ( size_t  size,
size_t  alignment,
CodeBlockHeat  heat,
int32  id,
bool  simulate 
)

Byte* Jitrino.CompilationInterface.allocateDataBlock ( size_t  size,
size_t  alignment 
)

Byte* Jitrino.CompilationInterface.allocateInfoBlock ( size_t  size  ) 

Byte* Jitrino.CompilationInterface.allocateJITDataBlock ( size_t  size,
size_t  alignment 
)

void Jitrino.CompilationInterface.lockMethodData ( void   ) 

Acquires a lock to protect method's data modifications (i.e.

code/info block allocations, exception handlers registration, etc) in multi-threaded compilation. The lock *must not* surround a code which may lead to execution of managed code, or a race and hang happen. For example, the managed code execution may happen during a resolution (invocation of resolve_XXX) to locate a class through a custom class loader. Note, that the lock is *not* per-method, and shared across all the methods.

void Jitrino.CompilationInterface.unlockMethodData ( void   ) 

Releases a lock which protects method's data.

void Jitrino.CompilationInterface.setNotifyWhenClassIsExtended ( ObjectType *  type,
void *  callbackData 
)

void Jitrino.CompilationInterface.setNotifyWhenMethodIsOverridden ( MethodDesc methodDesc,
void *  callbackData 
)

void Jitrino.CompilationInterface.setNotifyWhenMethodIsRecompiled ( MethodDesc methodDesc,
void *  callbackData 
)

bool Jitrino.CompilationInterface.needWriteBarriers (  )  const

bool Jitrino.CompilationInterface.isBCMapInfoRequired (  )  const

void Jitrino.CompilationInterface.setBCMapInfoRequired ( bool  is_supported  )  const

bool Jitrino.CompilationInterface.isCompileLoadEventRequired (  )  const

void Jitrino.CompilationInterface.sendCompiledMethodLoadEvent ( MethodDesc methodDesc,
MethodDesc outerDesc,
uint32  codeSize,
void *  codeAddr,
uint32  mapLength,
AddrLocation *  addrLocationMap,
void *  compileInfo 
)

OpenMethodExecutionParams& Jitrino.CompilationInterface.getCompilationParams (  )  const

bool Jitrino.CompilationInterface.compileMethod ( MethodDesc method  ) 

Requests VM to request this JIT to synchronously (in the same thread) compile given method.

Parameters:
method method to compile
Returns:
true on successful compilation, false otherwise

MethodDesc* Jitrino.CompilationInterface.getMethodToCompile (  )  const

TypeManager& Jitrino.CompilationInterface.getTypeManager (  )  const

MemoryManager& Jitrino.CompilationInterface.getMemManager (  )  const

Type* Jitrino.CompilationInterface.getTypeFromDrlVMTypeHandle ( Type_Info_Handle   ) 

FieldDesc* Jitrino.CompilationInterface.getFieldDesc ( Field_Handle  field  ) 

MethodDesc* Jitrino.CompilationInterface.getMethodDesc ( Method_Handle  method  ) 

void Jitrino.CompilationInterface.setCompilationContext ( CompilationContext *  cc  ) 

CompilationContext* Jitrino.CompilationInterface.getCompilationContext (  )  const


The documentation for this class was generated from the following file:

Genereated on Tue Mar 11 19:25:40 2008 by Doxygen.

(c) Copyright 2005, 2008 The Apache Software Foundation or its licensors, as applicable.