public abstract class SpecializedMethod extends Object
In general as there may not be a 1-1 mapping between objects and the specialized methods this class is responsible for performing the mapping.
Specialized methods must have a static 'invoke' method that matches the given signature and return type.
Modifier and Type | Field and Description |
---|---|
protected int |
id
This specialized method's id
|
Modifier | Constructor and Description |
---|---|
protected |
SpecializedMethod(int id) |
Modifier and Type | Method and Description |
---|---|
protected CompiledMethod |
compileSpecializedMethod(RVMMethod template,
TypeReference[] specializedParams)
Compile a specialized version of a template method.
|
abstract TypeReference |
getReturnType() |
abstract TypeReference[] |
getSignature() |
abstract CodeArray |
specializeMethod(RVMType type) |
protected final int id
protected SpecializedMethod(int id)
public abstract CodeArray specializeMethod(RVMType type)
type
- the type whose specialzed method is to be returnedpublic abstract TypeReference[] getSignature()
public abstract TypeReference getReturnType()
protected CompiledMethod compileSpecializedMethod(RVMMethod template, TypeReference[] specializedParams)
template
- The method to use as a templatespecializedParams
- The known types of the parameters, possibly more refined than in the template